Golang
Τι είναι το πρωτόκολλο QUIC; Γιατί το εφευρέθηκαν;
Ποιες προ patterns παράλληλου προγραμματισμού γνωρίζεις; Δώσε ένα παράδειγμα σημαφόρου από τη βιβλιοθήκη/πρακτική Go και εξήγησε πώς μπορεί να χρησιμοποιηθεί ένα κανάλι ως σημαφόρος (κατάληψη και απελευθέρωση).
Πείτε μας για τη σύνθεση της ομάδας και τις διαδικασίες ανάπτυξης (σπριντ, κατανομή εργασιών, ανασκόπηση κώδικα).
Πώς μπορεί να βελτιστοποιηθεί η αναζήτηση σε μια βάση δεδομένων; Τι είναι οι δείκτες και ποια είναι η πολυπλοκότητά τους;
Πώς χειριστήκατε τις επιστροφές και τις πληρωμές;
Πόσα νήματα θα ξεκινήσει ο προγραμματιστής Go; Και συγκεκριμένα σε AMD EPYC με 64 πυρήνες και 128 νήματα;
Ποια είναι τα πλεονεκτήματα και τα μειονεκτήματα των δύο σεναρίων: προσθήκη εργασιών πριν από την εκκίνηση της ομάδας και μετά την εκκίνηση;
Έχεις μια ιδέα για τη διαφορά μεταξύ ροής και διαδικασίας;
Τύποι ακύρωσης cache. Ποια γνωρίζετε, έχετε χρησιμοποιήσει κάποιο;
Τι είναι ένας δείκτης και ποιοι τύποι δεικτών υπάρχουν στο PostgreSQL;
SELECT u.id, u.name, o.id as order_id, o.amount FROM users u ? JOIN orders o ON u.id = o.user_id;
Ποια κλειδιά μπορεί να έχουν ένα map στο Go;
Πώς να εισάγετε 10 δισεκατομμύρια γραμμές στο ClickHouse γρήγορα;
Για ποιο λόγο υπάρχει το HAVING;
Ποια είναι η διαφορά μεταξύ json.Unmarshal και json.Decoder, και πότε θα χρησιμοποιούσατε το καθένα;
Γενική ερώτηση: ετοιμότητα για τη συνέντευξη και πηγές ερωτήσεων
Σχεδιασμός ενός κλιμακούμενου συστήματος ανταλλαγής μηνυμάτων που υποστηρίζει 150 εκατομμύρια χρήστες, 75 εκατομμύρια DAU, 225 εκατομμύρια MAU, 1,2 εκατομμύρια peak QPS ανάγνωσης / 300k εγγραφής, 5 εκατομμύρια ταυτόχρονους χρήστες, 60 PB νέων δεδομένων ετησίως, 30% ετήσια ανάπτυξη, SLA 99,95%, p99 <200 ms για ανάγνωση, <300 ms για εγγραφή. ΠΕΡΙΒΑΛΛΟΝ Απαιτείται ο σχεδιασμός ενός διανεμημένου συστήματος ανταλλαγής μηνυμάτων, παρόμοιου με το WhatsApp, που υποστηρίζει 1:1 και ομαδικές συνομιλίες, διασφαλίζει την παράδοση μηνυμάτων, εμφανίζει online καταστάσεις χρηστών και επιτρέπει τη μεταφορά πολυμέσων (φωτογραφίες, βίντεο, ήχο). Το σύστημα πρέπει να παρέχει υψηλή διαθεσιμότητα και χαμηλή καθυστέρηση, να υποστηρίζει υψηλό παράλληλο χειρισμό και να κλιμακώνεται σε παγκόσμιο επίπεδο. ΑΠΑΙΤΗΣΕΙΣ ΛΕΙΤΟΥΡΓΙΚΟΤΗΤΑΣ - Υποστήριξη προσωπικών (1:1) και ομαδικών συνομιλιών με δυνατότητα προσθήκης/αφαίρεσης συμμετεχόντων - Αποστολή και λήψη κειμένων και πολυμέσων Δεν φαίνεται να υπάρχει σαφής υλοποίηση μηχανισμού end-to-end κρυπτογράφησης σε επίπεδο υπηρεσιών ή πελατών, εκτός από μια γενική σημείωση. - Απουσιάζει σαφής περιγραφή του sharding και της αναπαραγωγής βάσεων δεδομένων βάσει chat_id ή user_id για κλιμάκωση και αντοχή σε σφάλματα. - Δεν υπάρχει σαφής συστατικό ή μηχανισμός για την offline συγχρονισμό μηνυμάτων και αποδείξεων παράδοσης. - Δεν είναι σαφές πώς πραγματοποιείται η κατανομή φόρτου μεταξύ βάσεων δεδομένων και υπηρεσιών, ειδικά σε περιόδους αιχμής. **Κρίσιμα σημεία που πρέπει να ληφθούν υπόψη:**
Τι θα συμβεί αν χρειαστεί να εγκαταλείψετε το Kafka και να το αντικαταστήσετε με έναν άλλο διαμεσολαβητή μηνυμάτων; Πώς απομονώνετε το Kafka από τις εξωτερικές υπηρεσίες;
Γιατί δεν επιστρέφονται σφάλματα στη μέθοδο Process; Πρέπει να διορθωθεί και να σταλεί ο πλήρως λειτουργικός κώδικας.
Πες μου για την εμπειρία σου με βάσεις δεδομένων — εκτός από το ClickHouse, ποιες άλλες βάσεις και πόσο βαθιά;