Sobes.tech

Πώς λειτουργεί η σύνδεση WebSocket στην αρχιτεκτονική — πότε εγκαθίσταται και ποιος επικοινωνεί με ποιον;

229

// Δίνονται δύο ταξινομημένες ακολουθίες ακεραίων σε μη φθίνουσα σειρά. // Είναι απαραίτητο να επιστραφούν όλα τα στοιχεία της πρώτης ακολουθίας που δεν υπάρχουν στη δεύτερη. // 0 <= N <= 10^6 // -10^9 <= a[i] <= 10^9 // [1] // [2, 3, 4, 5, 6] // [1] // [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ...] // [1] // [2, 3, 4, 5, 6, 7, 8] func filter(first []int, second []int) []int { res := make([]int, 0, len(first)) i, j := 0, 0 for i < len(first) && j < len(second) { if first[i] < second[j] { result = append(result, first[i]) i++ } else if first[i] > second[j] { j++ } else { i++ j++ } } for i < len(first) { result = append(result, first[i]) i++ } return result }

228

Πώς μετακινείτε το παράθυρο στον αλγόριθμο sliding window;

228

Αναφέρετε την πιο δύσκολη και ενδιαφέρουσα εργασία που έχετε αντιμετωπίσει, ιδιαίτερα σχετικά με την αρχιτεκτονική εμπειρία.

227

Μπορείτε να αναφέρετε το τρέχον επίπεδο εισοδήματός σας;

Junior — Middle
225

Μένεις αυτήν την στιγμή στη Μόσχα; Ποια πόλη σκέφτεσαι; Σκέφτεσαι υβριδική μορφή εργασίας; Σε ποιο στάδιο της αναζήτησης βρίσκεσαι;

225

Ποιο είναι το πρόβλημα με την τρέχουσα υλοποίηση της ενημέρωσης του χάρτη στον worker (tasksRes[t.id][task{...}])?

224

Πώς ενσωματώνονται και εμφανίζονται αυτά τα μετρικά δεδομένα στο Grafana;

Junior — Middle
223

Έχετε άλλες ενεργές διαδικασίες συνέντευξης;

222

Έχεις ενεργό GitHub ή LinkedIn;

222

Ποια ήταν η σύνθεση της ομάδας με την οποία εργάστηκες τελευταία φορά;

Junior — Middle
221

Σχεδιάστε ένα κλιμακούμενο σύστημα ανταλλαγής μηνυμάτων που υποστηρίζει 150 εκατομμύρια χρήστες, 75 εκατομμύρια DAU, 225 εκατομμύρια MAU, 1.2M ανάγνωση / 300k εγγραφή QPS, 5 εκατομμύρια ταυτόχρονους χρήστες, 60 PB νέα δεδομένα ετησίως, ετήσια αύξηση 30%, P99 <200 ms για ανάγνωση, <300 ms για εγγραφή, SLA 99.95%. ΠΕΡΙΒΑΛΛΟΝ Απαιτείται ο σχεδιασμός ενός διανεμημένου συστήματος ανταλλαγής μηνυμάτων, παρόμοιου με το WhatsApp, που υποστηρίζει προσωπικά και ομαδικά chat, διασφαλίζει την παράδοση μηνυμάτων, εμφανίζει online καταστάσεις χρηστών και μεταφέρει πολυμέσα αρχεία (φωτογραφίες, βίντεο, ήχο). Το σύστημα πρέπει να διασφαλίζει υψηλή διαθεσιμότητα και χαμηλή καθυστέρηση, να αντέχει σε υψηλό παράλληλο φόρτο και να κλιμακώνεται σε παγκόσμιο επίπεδο. ΑΠΑΙΤΗΣΕΙΣ ΛΕΙΤΟΥΡΓΙΚΕΣ - Υποστήριξη προσωπικών (1:1) και ομαδικών chat με δυνατότητα προσθήκης/αφαίρεσης συμμετεχόντων - Αποστολή και λήψη κειμένων και πολυμέσων Μη λειτουργικές απαιτήσεις: - Δεν υπάρχει σαφής υλοποίηση μηχανισμού end-to-end κρυπτογράφησης σε επίπεδο υπηρεσιών ή πελατών, εκτός από μια γενική σημείωση. - Δεν υπάρχει σαφής περιγραφή του sharding και της αναπαραγωγής βάσεων δεδομένων βάσει chat_id ή user_id για κλιμάκωση και αντοχή σε σφάλματα. - Δεν υπάρχει σαφές στοιχείο ή μηχανισμός για offline συγχρονισμό μηνυμάτων και αποδείξεων παράδοσης. - Δεν είναι σαφές πώς γίνεται η ισοκατανομή φόρτου μεταξύ βάσεων δεδομένων και υπηρεσιών, ειδικά σε περιόδους αιχμής. **Σημεία που χρήζουν προσοχής:** (Το διάγραμμα δείχνει μια αρχιτεκτονική με Load Balancer, API Gateway, Message Queue, Service, Cache, Database, Object Storage και CDN.)

220

Δίνεται μια συνάρτηση που δέχεται δύο ταξινομημένες σε μη φθίνουσα σειρά ακολουθίες ακέραιων αριθμών. Πρέπει να επιστρέψετε όλα τα στοιχεία της πρώτης ακολουθίας που δεν υπάρχουν στη δεύτερη. Πώς θα προσεγγίζατε τη λύση και ποια είναι η πολυπλοκότητα;

220

Πες μου για το τελευταίο σου έργο — τι είναι και με τι ακριβώς ασχολείσαι;

217

Πες μας συνοπτικά τι ασχολήθηκες στις προηγούμενες δουλειές σου και ποιες λειτουργίες υλοποίησες.

216

Έχετε εμπειρία με κατανεμημένα συστήματα;

215

Σχεδιασμός ενός κλιμακούμενου συστήματος ανταλλαγής μηνυμάτων που υποστηρίζει 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 συγχρονισμό μηνυμάτων και αποδείξεων παράδοσης. - Δεν είναι σαφές πώς πραγματοποιείται η κατανομή φόρτου μεταξύ βάσεων δεδομένων και υπηρεσιών, ειδικά σε περιόδους αιχμής. **Κρίσιμα σημεία που πρέπει να ληφθούν υπόψη:**

215

[όνομα] υπογράμμισε μια ασυμφωνία στην αξιολόγηση της μνήμης: δήλωσε το ένα, έγραψε το άλλο. Πώς να αξιολογήσουμε σωστά τη μνήμη;

215

/** :-))) :-(( "ab :-)" = "ab " "ab :-)))" = "ab " "ab :-)))(" = "ab (" "ab ):-)" = "ab )" ":-)" = "" **/ func deleteP(str string) string { }

214

Δίνεται μια συμβολοσειρά χαρακτήρων. Βρείτε τον αριθμό των ζευγών δεικτών i και j (i <= j), μεταξύ των οποίων, συμπεριλαμβανομένων, δεν υπάρχουν επαναλαμβανόμενοι χαρακτήρες. Για τη συμβολοσειρά "aba" η απάντηση είναι 5: [0, 0] ("a") [0, 1] ("ab") [1, 1] ("b") [1, 2] ("ba") [2, 2] ("a") Για τη συμβολοσειρά "abcb" η απάντηση είναι ?: aba 3 + 2 = 5 abcb 4 (a, b, c, d) + 1 (ab) + 1 (bc) + 1 (cb) + 1 (abc) = 8

213
/11