Sobes.tech

Πείτε μας για τα πρόσφατα έργα σας και την τεχνολογική στοίβα που χρησιμοποιήσατε.

136

Πού κατοικείς, πού βρίσκεσαι;

135

Ας μιλήσουμε για την αρχιτεκτονική μικροϋπηρεσιών. Τι ήταν πιο συχνό πρόσφατα: υποστήριξη ή ανάπτυξη;

134

Πώς να ελέγξετε ότι το παράθυρο περιέχει όλους τους απαραίτητους χαρακτήρες;

133

4 - γρήγορη αποδοχή εισερχόμενων εργασιών, 5 - επιστροφή αποτελέσματος εργασίας κατόπιν αιτήματος 6 - εάν δεν υπάρχει αποτέλεσμα, επιστρέψτε την αντίστοιχη κατάσταση /* Επεξεργαστής - μια υπηρεσία που εκτελεί μια μακράς διάρκειας, πόρους-εντατική λειτουργία. Είναι ήδη υλοποιημένη Τα σφάλματα που επιστρέφει σχετίζονται αποκλειστικά με εσφαλμένα δεδομένα εισόδου, είναι σταθερά και η επανυποβολή τους είναι άσκοπη */ type Processor interface { Process([]byte) ([]byte, error) } /* Υποθέτουμε ότι έχουμε έναν γεννήτορα μοναδικών ταυτοτήτων (π.χ., UUID). Ο γεννήτορας εγγυάται ότι δεν θα υπάρξουν συγκρούσεις */ type ID string // func NewID() ID /* Ο προγραμματιστής δέχεται εργασίες από πελάτες, τις τοποθετεί σε ουρά και ξεκινά την επεξεργασία. Εξασφαλίζει ότι δεν τρέχουν ταυτόχρονα περισσότερες από 'threads' μεθόδους επεξεργασίας Παρέχει τη δυνατότητα ελέγχου της κατάστασης της εργασίας και λήψης αποτελέσματος δεν μπλοκάρει τις δημόσιες μεθόδους του για επεξεργασία */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // λογική αρχικοποίησης return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // υλοποίηση return "" }

132

/* Πρέπει να μεταφέρουμε δεδομένα από μια πηγή σε έναν καταναλωτή. Η πηγή παρέχει δεδομένα σε μικρές παρτίδες (~δέκα εγγραφές), ενώ ο καταναλωτής λειτουργεί πιο αποδοτικά με μεγάλες παρτίδες (~χίλιες εγγραφές). Ένα πραγματικό παράδειγμα είναι η μεταφορά δεδομένων από ουρές τύπου Kafka σε μια βάση δεδομένων Clickhouse. Πηγή: - Πρακτικά άπειρη. - Η πηγή ποτέ δεν επιστρέφει περισσότερα από MaxItems εγγραφές σε μια κλήση Next. - Σε μια "συνεδρία" (μία κλήση της συνάρτησης Pipe), η πηγή επιστρέφει νέα δεδομένα σε κάθε κλήση Next. - Ωστόσο, μετά από επανεκκίνηση, η πηγή ξεκινά από την προηγούμενη "επιβεβαιωμένη" θέση, ορισμένη από το cookie. Επομένως, *κάθε* τιμή cookie που επιστρέφει το Next, μετά την αποθήκευση των δεδομένων στον δέκτη, πρέπει να επιβεβαιωθεί με μια κλήση Commit, με την ίδια σειρά με αυτή που επιστράφηκε από το Next. Δέκτης: - Δεν μπορεί να επεξεργαστεί περισσότερα από MaxItems ταυτόχρονα. Απαιτείται η υλοποίηση της συνάρτησης func Pipe(p Producer, c Consumer) error που διαβάζει δεδομένα από την πηγή, τα ομαδοποιεί σε ένα buffer μεγέθους όχι μεγαλύτερο από MaxItems και τα αποθηκεύει στον δέκτη, μετά επιβεβαιώνει την πρόοδο στην πηγή. */ const MaxItems = 9999 type Producer interface { // Next επιστρέφει: // - ένα batch από items προς επεξεργασία // - cookie για επιβεβαίωση όταν ολοκληρωθεί η επεξεργασία // - σφάλμα Next() (items []any, cookie int, err error) // Commit χρησιμοποιείται για να σηματοδοτήσει το batch δεδομένων ως επεξεργασμένο Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { // TODO }

131

Πες μου, τι συμβαίνει τελικά — πώς συσσωρεύουμε το buffer;

131

Περιγράψτε τον αλγόριθμο για την επίλυση του προβλήματος maxSegment

131

Ποιες είναι οι προσδοκίες σας σχετικά με τον μισθό;

129

Έχετε εμπειρία στη συγγραφή προγραμμάτων με πολυνηματικότητα ή ασύγχρονες λειτουργίες;

128

Ποια αντι-μοτίβα στην αρχιτεκτονική μικροϋπηρεσιών γνωρίζετε;

127

Ας δούμε ένα παράδειγμα: first=[1,1,2], second=[1,2]. Τι πρέπει να επιστρέψει ο αλγόριθμός σας και λειτουργεί σωστά με διπλότυπα;

125

Αν σας προταθεί μια θέση εργασίας και την αποδεχτείτε, πόσο γρήγορα θα είστε έτοιμοι να ξεκινήσετε να εργάζεστε;

125

[όνομα] ρώτησε: διατηρώντας τη θέση ενός στοιχείου μικρότερου από X, ποια θα είναι η θέση;

124

Ο φορτωτής πρέπει να καταλαβαίνει ότι το backend απαντά με σφάλματα, και όταν υπερβαίνει ένα όριο για ένα συγκεκριμένο χρονικό διάστημα, να το αποκλείει από την ισορροπία (Circuit Breaker)

123

Με ποιες βάσεις δεδομένων ή άλλες αποθηκευτικές μονάδες δεδομένων έχετε εργαστεί; Πόσα αιτήματα ανά δευτερόλεπτο (RPS) για εγγραφή και ανάγνωση;

120

Έχετε ασχοληθεί με ηγετικές εργασίες καθ' όλη τη διάρκεια της εργασίας σας;

120

Έχετε εμπειρία στην ανάπτυξη και υποστήριξη κατανεμημένων συστημάτων;

120

Είναι σωστό ότι αυτήν τη στιγμή διαμένετε στη [πόλη] και θα ήταν βολικό για εσάς να εργάζεστε σε υβριδική μορφή με επισκέψεις στο γραφείο;

118

Ποιο είναι το μέγιστο φορτίο σε αιτήματα ανά δευτερόλεπτο που διαχειρίστηκε η πιο φορτωμένη υπηρεσία; Είναι σωστό ότι είναι έως 5–8 χιλιάδες αιτήματα ανά δευτερόλεπτο;

118
/11
Ερωτήσεις για Golang προετοιμασία — Σελίδα 9 - sobes.tech