Golang
Με ποια κριτήρια αναζητούσατε αγγελίες, ποια πληροφορία αναζητούσατε;
Με ποιες εγγυήσεις παράδοσης συναντηθήκατε στο Kafka;
Μίλησε για την αναπαραγωγή στο PostgreSQL: είδη, συγχρονική vs ασύγχρονη.
Ποιες βάσεις δεδομένων και brokers μηνυμάτων χρησιμοποιείτε στην τεχνολογία σας;
Για ποιο λόγο αποφασίσατε να εισέλθετε στην αγορά;
Πώς οργανώνετε τις εσωτερικές ειδοποιήσεις (κουδούνι στην ιστοσελίδα); Ποια μεταφορά να χρησιμοποιήσετε;
Έχετε γράψει κάτι με CTE (Γενική Έκφραση Πίνακα, WITH);
Αριθμός μοναδικών χρηστών, αριθμός κλικ, κόστος ανά κλικ — μιλήστε μου γι'αυτές τις μετρήσεις
Τι κάνει η εντολή UNION;
Με ποια κριτήρια θα επιλέξεις την προσφορά αν υπάρχουν πολλές;
Πες μου, ποια προβλήματα βλέπεις αυτήν τη στιγμή στην υλοποίηση της cache;
Γενική ερώτηση: ετοιμότητα για τη συνέντευξη και πηγές ερωτήσεων
Με ποιες βάσεις δεδομένων έχετε εργαστεί; Ποιους τύπους βάσεων δεδομένων γνωρίζετε; Γιατί οι σχεσιακές βάσεις δεδομένων ονομάζονται σχεσιακές;
Σχεδιασμός ενός κλιμακούμενου συστήματος ανταλλαγής μηνυμάτων που υποστηρίζει 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 από τις εξωτερικές υπηρεσίες;
Γιατί οι goroutines αλλάζουν πιο γρήγορα;
Μίλησε για το graceful shutdown: τι είναι, τι συμβαίνει κατά τη διάρκεια, πώς καλείται; Ποια διαδικασία εκτελεί η υπηρεσία στο Kubernetes μετά τη λήψη SIGTERM;
Δουλεύεις ακόμα στην εταιρεία;
Πώς λειτουργεί το HTTP/3 πάνω από UDP, αν το UDP δεν εγγυάται την παράδοση;