Golang
Υπάρχει μια βιβλιοθήκη σε Go — LRU, όπου μπορείτε να περάσετε Any και να ορίσετε TTL. Γιατί επιλέχθηκε το Redis και όχι αυτή;
Υπάρχουν ερωτήσεις σχετικά με τα στάδια της συνέντευξης;
Πώς μπορεί να γίνει σε επίπεδο συναλλαγής στη βάση δεδομένων, να σταλεί μόνο μια ομάδα όταν πολλές ανταποκρίνονται ταυτόχρονα σε ένα σήμα σε ένα σύστημα γρήγορης αντίδρασης;
Στην παρακολούθηση, πόσες ομάδες, υπηρεσίες, πόσες ενσωματώσεις με τις δικές τους ομάδες περίπου;
Στην αρχιτεκτονική x86, η εντολή διακοπής καταλαμβάνει δύο bytes, αλλά η διακοπή με αριθμό 3 έχει μια εναλλακτική μονο-byte έκδοση. Γιατί ήταν απαραίτητο αυτό;
Ερωτήσεις σχετικά με φορτία, αρχιτεκτονική νέων υπηρεσιών (πίνακες υπολογισμών και τιμές) — πώς το αντιλαμβάνεσαι αυτό;
Γιατί σκέφτεσαι τώρα να φύγεις από την τρέχουσα δουλειά σου;
Έχεις τώρα προσφορές ή ακόμα περνάς συνεντεύξεις;
Σε ποιο στάδιο βρίσκεται η αναζήτηση εργασίας σας: ενεργά ή παθητικά εξετάζετε κενές θέσεις;
Με ποιες βάσεις δεδομένων εργάστηκες;
Γιατί χρησιμοποιείται δείκτης B-tree αντί για δυαδικό δέντρο;
Μπορείς να δώσεις ένα παράδειγμα συνάρτησης κατακερματισμού;
Τι είναι ένας σύνθετος δείκτης;
Ο υπεύθυνος προϊόντος ζητάει να δημιουργηθεί σε ένα μήνα μια λειτουργία: αν δεν υπάρχουν διαμερίσματα στη Αγία Πετρούπολη για τις παρουσιάσεις του Μαΐου, να εμφανίζονται παρόμοιες επιλογές σε γειτονικές πόλεις (Vyborg, Kronstadt). Χωρίς ανάλυση, χωρίς τεχνικές προδιαγραφές. Περιγράψτε τα βήματα από τη συζήτηση μέχρι το πρώτο commit.
Στο βιογραφικό αναφέρεται ότι υλοποίησες tracing — μπορείς να πεις περισσότερα;
Τι συμβαίνει αν αφήσετε ένα select χωρίς περιπτώσεις στο Go;
Ποιους τρόπους γνωρίζεις για να εναλλάσσεις τις goroutines; Πώς αλλάζεις χειροκίνητα μια goroutine;
Ποιες σχεδιαστικές προτυπώσεις γνωρίζετε; Ποιες ομάδες προτύπων υπάρχουν;
Πώς να μην πηγαίνετε καθόλου σε μια υπηρεσία που σίγουρα θα καταρρεύσει ή θα είναι απρόσιτη;
func fanin[T οποιοσδήποτε](chs ...<-chan T) chan T { out := make(chan T) wg := sync.WaitGroup{} for _, ch := range chs { wg.Add(1) go func(c <-chan T) { defer wg.Done() for v := range c { out <- v } }(ch) } go func() { wg.Wait() close(out) }() return out } func main() { ch1 := make(chan int, 5) ch2 := make(chan int, 5) for i := 1; i <= 5; i++ { ch1 <- i ch2 <- i * 2 } close(ch1) close(ch2) fmt.Println(fanin(ch1, ch2)) }