Golang
Μίλησέ μου για το πιο αξέχαστο σφάλμα στην παραγωγή: τι ήταν, πώς το διόρθωσες και ποια συμπεράσματα έβγαλες;
Πες μου για την τελευταία σου εργασιακή εμπειρία
Πώς λειτουργεί ο garbage collector στο Go; Περιγράψτε τις φάσεις και τον αλγόριθμο.
Έχεις γράψει αρκετά τεχνικά καθήκοντα. Παρακαλώ, πες μου ποια προϊόντα βοήθησαν στην επίλυσή τους.
Ποιες μετρήσεις; Με ποια εργαλεία θα καταγράψουμε αυτές τις μετρήσεις;
Γενική εντύπωση από τη συνέντευξη, επίπεδο υποψηφίου, συστάσεις
Τι είναι οι probes (δοκιμές) στο Kubernetes, πώς τις ρυθμίζετε και ποιοι τύποι υπάρχουν;
Τώρα θέλουμε να πάμε στο HeadHunter και να αναζητήσουμε υποψηφίους με φίλτρα — πώς να το αρχιτεκτονίσουμε;
Τι θα εμφανίσει ο κώδικας με slices και την μεταβίβασή τους σε μια συνάρτηση; Πώς λειτουργεί η μεταβίβαση ενός slice σε μια συνάρτηση;
Για ποιες εργασίες χρησιμοποιήσατε goroutines και κανάλια;
Έχετε εμπειρία συμμετοχής σε τεχνικά διαλογή ή συνεντεύξεις;
Εργασία: υπάρχει ένα callback που ενεργοποιείται 100.000 φορές το δευτερόλεπτο, παρέχοντας δυαδικά δεδομένα. Πρέπει να τα παραδώσετε στον κεντρικό διακομιστή. Ποια είναι τα πιθανά προβλήματα και οι καλές πρακτικές;
Υλοποιήστε μια λειτουργία που δέχεται []any και delta int. Είναι απαραίτητο να αυξήσετε κατά delta μόνο τις πρώτες εμφανίσεις μοναδικών αριθμών (int). Άλλοι τύποι και επαναλαμβανόμενοι αριθμοί αφήνονται αμετάβλητοι. Η λειτουργία πρέπει να επιστρέφει τη ενημερωμένη λίστα και 2 αριθμούς: updated – πόσοι μοναδικοί αριθμοί άλλαξαν, duplicates – πόσα αριθμητικά στοιχεία αποδείχθηκαν διπλότυπα func IncrementUniqueIntsInMixed(xs []any, delta int) ([]any, int, int) { // ο κώδικάς σας } // Παράδειγμα: xs := []any{1, "a", 5, "b", 1, 0, 5} u, d, s := IncrementUniqueIntsInMixed(xs, 3) // xs == []any{4, "a", 8, "b", 1, 3, 5} // u == 3 // μοναδικοί αριθμοί: 1, 5, 0 // d == 2 // διπλότυποι αριθμοί: δεύτερο 1, δεύτερο 5
Τι είναι μια goroutine; Ποια είναι η ελαφρότητά της;
// Υπάρχει μια διεπαφή Backend με τη μέθοδο Execute // Πρέπει να γράψουμε έναν φορτωτή // Ο φορτωτής ικανοποιεί τη διεπαφή Backend // Το καθήκον του φορτωτή είναι να αποδεχτεί ένα αίτημα και να το αναθέσει σε έναν από τους διαθέσιμους backend // Ο φορτωτής περιέχει μια συλλογή από backends // Κατά την εκτέλεση ενός αιτήματος, ο φορτωτής επιλέγει έναν από τους backends σύμφωνα με έναν αλγόριθμο // // Αλγόριθμος Least Connection, έλεγχος υγείας και αυτόματη αποκατάσταση, thread safety μέσω atomic, μετάδοση του πλαισίου για ακύρωση, κατώφλι σφαλμάτων για αποσύνδεση backend // Το Request αντιπροσωπεύει το εισερχόμενο αίτημα για το Backend. type Request struct { // Payload – τυχαία δεδομένα του αιτήματος. Payload []byte } // Response αντιπροσωπεύει την απάντηση από το Backend. type Response struct { // Payload – τυχαία δεδομένα της απάντησης. Payload []byte } // Backend – διεπαφή που ορίζει τη μέθοδο για την εκτέλεση ενός αιτήματος type Backend interface { Execute(ctx context.Context, req Request) (Response, error) } type Balancer struct { backends []Backend } func NewBalancer(backends []Backend) *Balancer { return &Balancer{backends: backends} } func (b *Balancer) Execute(ctx context.Context, req Request) (Response, error) { // todo: υλοποιήστε τη λογική του φορτωτή return Response{}, nil } type TestBackend struct { }
Πώς υπολόγισες ότι το p95 μειώθηκε κατά 16%;
Ο χρόνος αναμονής είναι ο ίδιος για όλους; Πώς θα υπολογίζεται αυτός ο χρόνος αναμονής;
// Δεδομένη η συμβολοσειρά s. Πρέπει να βρείτε το μήκος της μεγαλύτερης υπο-συμβολοσειράς χωρίς επαναλαμβανόμενους χαρακτήρες. // Παραδείγματα: // s = "abcabcbb", απάντηση: 3 ("abc") // s = "cccccccc", απάντηση: 1 ("c") // s = "pwwkew", απάντηση: 3 ("wke") // s = "", απάντηση: 0 // Η συμβολοσειρά s αποτελείται από αγγλικά γράμματα, ψηφία, σύμβολα και κενά func lengthOfLongestSubstring(s string) int { return 0 }
Τι συμβαίνει όταν εισάγεις [ιστοσελίδα] στο πρόγραμμα περιήγησης; Περιέγραψε με όσο το δυνατόν περισσότερες λεπτομέρειες ποια πρωτόκολλα χρησιμοποιούνται
Χρησιμοποιήσατε προσεγγίσεις για κατανεμημένες συναλλαγές;