Golang
Erzählen Sie mir vom Design des Moderations-/Orchestrator-Systems — wie wurde es entworfen, welche Entscheidungen wurden getroffen?
Welche Caching-Strategie wählen – Cache-aside oder Write-through – unter Berücksichtigung des Nutzerverhaltens beim Überprüfen des Bestellstatus?
Welche Regeln für die Arbeit mit Kanälen sollten bei der Entwicklung bekannt sein (geschlossen, offen, wann was gemacht werden darf)?
Schreiben Sie eine Aufgabe in der Programmiersprache Go — praktischer Abschnitt (Probleme aus dem Entwicklerleben, ohne Algorithmen): Dienst verbessern oder korrigieren. Dauer — 1,5 Stunden.
Was tun, wenn die Nutzer sich über die Änderung des Monetarisierungsmodells beschweren, aber das Unternehmen einen klaren Plan hat?
Live-Coding: Semaphore — wie es funktioniert und die Implementierung auf Basis eines gepufferten Kanals.
Welche Methodik verwenden Sie: Scrum, Kanban oder eine Mischung?
Was ist die Einschränkung eines Semaphors und eines gepufferten Kanals als Lösungen zur Begrenzung paralleler Anfragen?
Haben Sie schon einmal von [Unternehmen] oder unseren Produkten gehört?
Was sind Schätzungen?
Worauf möchtest du bei der Arbeit nicht mehr stoßen?
Wie ist dein Level – middle, middle+, senior?
Go-Code-Analyse: Was macht der Code, welche Probleme gibt es?
Zu welcher Gruppe (mutabel/immutabel) gehört die Schnittstelle in Go?
Was sind Autorisierungstoken und welche gibt es?
Was ist der Unterschied zwischen relationalen Datenbanken und NoSQL?
Entwurf eines skalierbaren Messaging-Systems, das 150 Millionen Nutzer, 75 Millionen DAU, 225 Millionen MAU, 1,2 Mio. Lese- / 300k Schreib-Peak-QPS, 5 Millionen gleichzeitige Nutzer, 60 PB neue Daten pro Jahr, 30% jährliches Wachstum, SLA 99,95%, p99 <200 ms für Lesen, <300 ms für Schreiben unterstützt. KONTEXT Es ist erforderlich, ein verteiltes Messaging-System zu entwerfen, ähnlich wie WhatsApp, das 1:1- und Gruppen-Chats unterstützt, die Zustellung von Nachrichten gewährleistet, Online-Status der Nutzer anzeigt und die Übertragung von Multimedia-Dateien (Fotos, Videos, Audio) ermöglicht. Das System muss hohe Verfügbarkeit und niedrige Latenz bieten, hohen Parallelismus unterstützen und global skalieren. FUNKTIONALE ANFORDERUNGEN - Unterstützung für persönliche (1:1) und Gruppen-Chats mit der Möglichkeit, Teilnehmer hinzuzufügen/zu entfernen - Versand und Empfang von Textnachrichten und Multimedia-Dateien Es ist keine klare Implementierung eines End-to-End-Verschlüsselungsmechanismus auf Service- oder Client-Ebene sichtbar, abgesehen von einer allgemeinen Anmerkung. - Es fehlt eine explizite Beschreibung von Sharding und Replikation der Datenbanken nach chat_id oder user_id für Skalierbarkeit und Fehlertoleranz. - Es gibt keinen klaren Komponenten- oder Mechanismus für die Offline-Synchronisierung von Nachrichten und Delivery-Receipts. - Es ist unklar, wie die Lastverteilung zwischen Datenbanken und Diensten, insbesondere bei Spitzenbelastungen, erfolgt. **Kritische Punkte, die beachtet werden sollten:**
Liste den Haupt-Stack in Go auf
Mussten Sie jemals die Stunden erfassen, die Zeit in einem System verfolgen?
""" Die Plätze im Kino sind in einer Reihe angeordnet. Ein neu ankommender Zuschauer wählt einen Platz, um so weit wie möglich von den anderen Zuschauern in der Reihe zu sitzen. Das heißt, die Entfernung von dem Platz, wo der Zuschauer sitzen wird, bis zum nächsten Zuschauer, soll maximal sein. Es ist garantiert, dass in der Reihe immer freie Plätze vorhanden sind und mindestens ein Zuschauer bereits sitzt. Schreiben Sie eine Funktion, die anhand einer Reihe von Plätzen (ein Array aus Nullen und Einsen) die Entfernung (Anzahl der Zwischenräume zwischen den Sitzen) vom gewählten Platz zum nächsten Zuschauer zurückgibt. [1, 0, 0, 0, 1] -> 2 [1, 0, 1, 0, 0, 1, 0, 0, 1] -> 2 [1, 0, 1, 0] -> 1 [0, 0, 0, 1] [1, 0, 0, 0] place = ((right - left) / 2) """ func maxPlaces(arr []int) int { }