Golang
Βρίσκεστε στη Μόσχα;
Γιατί προστέθηκε η υπηρεσία ελέγχου κατά της απάτης στην περιοχή ευθύνης του υποψηφίου;
Πόσα μικροϋπηρεσίες υπάρχουν στη τρέχουσα εργασία σου και με ποιες εργάζεσαι άμεσα;
Τι πιστεύεις ότι είναι το πρόβλημα με τη λύση σε μνήμη; Τι θα συμβεί αν επανεκκινήσεις την υπηρεσία;
Πότε πρέπει να αφαιρούνται οι δείκτες; Τι είναι η denormalization;
Γιατί υπάρχουν οι κάδοι σε έναν πίνακα κατακερματισμού/χάρτη; Ποιος είναι ο λειτουργικός τους ρόλος;
Σημαίνει ότι όλα θα τελειώσουν τελικά μετά από αυτό το timeout; Δηλαδή, μπορεί κάτι ακόμα να μην λειτουργεί — ποιο είναι το πρόβλημα εδώ;
Περιγράψτε τη διαδικασία φόρτωσης του διακομιστή Linux από την εκκίνηση μέχρι την εκκίνηση του τερματικού
Μέγισ φόρτο: 25k αναγνώσεις / 5k εγγραφές ανά δευτερόλεπτο Όγκος νέων δεδομένων: 10 TB ετησίως Μέγιστος παράλληλος: 120k ταυτόχρονες αιτήσεις Ετήσια αύξηση χρηστών: 30% Στόχος p99 καθυστέρησης: <150 ms για αναγνώσεις, <400 ms για εγγραφές Στόχος διαθεσιμότητας: 99.95% Το έργο σας είναι να αναπτύξετε μια αρχιτεκτονική λύση που θα εξαλείψει τα τρέχοντα προβλήματα, θα διασφαλίσει συνέπεια και αντοχή σε σφάλματα, και θα εφαρμόσει μηχανισμούς ιχνηλάτησης για πλήρη παρακολούθηση του κύκλου ζωής της παραγγελίας. Περιγράψτε τον μηχανισμό διαχείρισης σφαλμάτων, το σχέδιο μετανάστευσης από την τρέχουσα αρχιτεκτονική, και εξηγήστε πώς η προτεινόμενη λύση θα βελτιώσει την αξιοπιστία και τη διαφάνεια του συστήματος.
Τι είναι τα κανάλια στο Go και ποιοι είναι οι τύποι τους;
Υπάρχει τρόπος να διαχειριστείτε και να ρυθμίσετε τον stop-the-world συλλέκτη απορριμμάτων στο Go;
// πίνακας αγαθών: // ID | cnt_view // ----------- // 1 | 100 // δύο χρήστες άρχισαν να βλέπουν το προϊόν με id = 1 ταυτόχρονα // και στη βάση δεδομένων μας ξεκίνησαν 2 παράλληλες συναλλαγές // ποιο θα είναι το αποτέλεσμα; postgresql func IncrementView(ctx context.Context, db *sql.DB, id int64) error { tx, err := db.BeginTx(ctx, nil) if err != nil { return err } defer tx.Rollback() var cnt int err = tx.QueryRowContext(ctx, "SELECT cnt_view FROM goods WHERE id = $1", id, ).Scan(&cnt) if err != nil { return err } cnt++ _, err = tx.ExecContext(ctx, "UPDATE goods SET cnt_view = $1 WHERE id = $2", cnt, id, ) if err != nil { return err } return tx.Commit() }
Έχετε ασχοληθεί ποτέ με αρχιτεκτονικά ζητήματα; Πώς λαμβάνονταν οι αρχιτεκτονικές αποφάσεις;
Γιατί πρέπει να διακόψουμε το πλαίσιο στην δομή; Γιατί να τερματίσουμε τους εργαζόμενους; Θέλουμε να διακόψουμε τη μέθοδο Stop.
Πού πηγαίνουν οι goroutines κατά τη δημιουργία: στη τοπική ή στη глобική ουρά του προγραμματιστή Go;
Πώς πραγματοποιήσατε την κλιμάκωση των καταναλωτών Kafka; Με ποια κριτήρια;
Πώς επηρεάζουν οι χρόνοι αναμονής τη μείωση του φορτίου στην ανάλυση;
Ποιο ήταν το έργο στην εταιρεία; Τι μικροϋπηρεσία υπήρχε εκεί;
Δείκτες στο PostgreSQL: τι είναι, ποια είδη γνωρίζεις, γιατί το B-tree είναι καλύτερο από το Hash;
Μπορεί κανείς να γράψει σε ένα map από διαφορερα goroutines ταυτόχρονα; Τι θα συμβεί;