Golang
Welche Indizes kennst du in PostgreSQL?
Welche Produktmetriken sammeln Sie?
Wie ist die Zeile unter der Haube in Go organisiert?
Was passiert, wenn defer außerhalb der Goroutine steht, anstatt innerhalb?
Laut Lebenslauf arbeiten Sie derzeit bei [Organisation], stimmt das?
Was sind die Vor- und Nachteile der beiden Szenarien: Aufgaben vor dem Start des Pools hinzufügen und nach dem Start des Pools?
/* Es gibt eine Anwendung mit einer Microservice-Architektur. Ein Microservice kann durch eine Backend-Schnittstelle abstrahiert werden. Um auf eine Instanz des Microservice zuzugreifen, kann der Typ BackendImpl verwendet werden, der bereits implementiert ist. Jeder Microservice hat mehrere Dutzend laufende Instanzen, die jeweils unter ihrer eigenen Adresse addr erreichbar sind. Allerdings sind einzelne Instanzen des Microservice nicht zuverlässig: sie können abstürzen, nicht erreichbar sein oder überlastet sein. Daher müssen Sie den Typ Balancer implementieren, der ebenfalls die Backend-Schnittstelle implementiert und das Client-seitige Load-Balancing zwischen den Instanzen des Microservice durchführt, wobei jedes Mal die **am wenigsten belastete** Instanz ausgewählt wird. */ type Request interface{} type Response interface{} type Backend interface { Invoke(ctx context.Context, req Request) (Response, error) } var _ Backend = &BackendImpl{} // addr enthält ip:port einer bestimmten Instanz func NewBackend(addr string) *BackendImpl type Balancer struct { // TODO } var _ Backend = &Balancer{} // addrs enthalten die Adressen aller balancierten Instanzen func NewBalancer(addrs []string) *Balancer { // TODO }
Sie sind [Alter] Jahre alt, haben Sie den Wehrpass?
Was ist ein Multi-Stage-Build und wozu ist es nützlich?
Kennst du das Lese-/Schreib-Lastprofil in RPS?
Was wird im Inhalt der Map (Zeile 19 im Code) liegen?
Allgemeine Frage: Bereitschaft für das Vorstellungsgespräch und Quellen der Fragen
Wie organisiert man die Kommunikation zwischen zwei Goroutines?
Wie würdest du dich als Golang-Entwickler einschätzen? Bist du jetzt Middle, Middle+, Senior?
Wie genau wird Quaternion für die Komposition von Drehungen verwendet?
Wie optimiert man eine Transaktion mit Zeilensperrung bei hoher Belastung (Flaschenhalsproblem bei der Registrierung mit Einladungscode)?
Erzähl mir von Legion, was du dort gemacht hast, was für ein Team war das?
Welche Werkzeuge zur Visualisierung von Architekturdiagrammen hast du verwendet und für welche Fälle?
Wie werden HTTP-Statuscodes nach Gruppen eingeteilt und was bedeuten sie?
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:**