In welchen Phasen des Vorstellungsgesprächs in verschiedenen Organisationen wird diese Frage oft gestellt?
Golang
Welches war das größte Datenbankprojekt, das Sie implementieren oder warten mussten?
Können Sie das Funktionsprinzip von gRPC und seine wichtigsten Merkmale erklären?
Wie werden Anfragen an die PostgreSQL-Datenbank ausgeführt?
In welcher Schicht werden die Clients für externe Dienste und Systeme platziert?
Wie viele Schreibanfragen pro Sekunde an die Daten gestellt wurden?
Kannst du dich bei den Hosts orientieren? Wie viele Hosts, wie viele Container werden gestartet?
Auf wie vielen Instanzen/Containern lief der Dienst?
Wie erfolgt die Verbindung und Anzeige von Daten in Grafana?
Welche Erfahrung haben Sie in der Entwicklung von Anwendungen, die Multithreading und parallele Berechnungen verwenden?
Nach welchem Prinzip soll der Zähler have verringert oder erhöht werden?
Was war das Projekt mit der längsten Dauer, an dem Sie gearbeitet haben?
Arbeiten Sie jetzt oder nicht, und in welchem Format: Büro, hybrid, remote?
Wie organisiert man die Architektur für eine Anfrage, die Geschäftslogik ausführt, einen externen Dienst (Google) aufruft und das Ergebnis in der Datenbank speichert? Beschreiben Sie es schichtweise von oben nach unten.
func maxPlaces(arr []int) int { maxDistance := 0 prev, first := -1, -1 for i := 0; i < len(arr); i++ { if arr[i] == 1 { if first == -1 { first = i maxDistance = max(maxDistance, i) } else { maxDistance = max(maxDistance, (i - prev) / 2) } prev = i } } maxDistance = max(maxDistance, len(arr) - 1 - prev) return maxDistance }
""" 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 diesem Platz zum nächsten Zuschauer sollte maximal sein. Es ist garantiert, dass immer freie Plätze vorhanden sind und mindestens ein Zuschauer bereits sitzt. Schreiben Sie eine Funktion, die anhand einer gegebenen Sitzreihe (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 """
Wie erkennt man visuell oder algorithmisch, dass ein Element in der Datenstruktur Map einzigartig ist?
/* * Gegeben ist ein Array von Ganzzahlen und eine Zahl X, * es ist erforderlich, das längste nicht-leere Teilarray zu finden, dessen Minimum X ist. * Geben Sie die Länge dieses Teilarrays oder -1 zurück, wenn es keine gibt. */
Wie wird die Laufzeit der Operation zum Hinzufügen eines Elements nach Schlüssel in der Datenstruktur Map bestimmt?
/* Wir müssen Daten von einer Quelle zu einem Verbraucher übertragen. Die Quelle liefert die Daten in kleinen Chargen (~zehn Einträge), während der Verbraucher effizienter mit größeren Chargen arbeitet. Ein echtes Beispiel ist die Übertragung von Daten aus Kafka-Queues in die Clickhouse-Datenbank. Quelle: - Praktisch unendlich. - Die Quelle gibt nie mehr als MaxItems Datensätze in einem einzelnen Next-Aufruf zurück. - Innerhalb einer "Sitzung" (einem Aufruf der Funktion Pipe) liefert die Quelle bei jedem Next neue Daten. - Nach einem Neustart beginnt die Quelle wieder bei der vorherigen "bestätigten" Position, die durch cookie bestimmt wird. Daher muss jeder Wert von cookie, den Next zurückgibt, nach der Speicherung der Daten im Empfänger mit einem Commit bestätigt werden, und zwar in genau der Reihenfolge, in der sie von Next zurückgegeben wurden. Empfänger: - Kann nicht mehr als MaxItems auf einmal verarbeiten. Basisebene: Es ist erforderlich, die Funktion func Pipe(p Producer, c Consumer) error zu implementieren, die Daten aus der Quelle liest, sie in einen Puffer mit maximaler Größe MaxItems gruppiert und im Empfänger speichert, und anschließend den Fortschritt in der Quelle bestätigt. */ const MaxItems = 9999 type Producer interface { // Next gibt zurück: // - einen Batch von Items zur Verarbeitung // - eine cookie, die nach Abschluss der Verarbeitung bestätigt werden soll // - einen Fehler Next() (items []any, cookie int, err error) // Commit wird verwendet, um den Datenbatch als verarbeitet zu markieren Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { var buf []any var cookies []int for { items, cookie, err := p.Next() if err != nil { return err } buf = append(buf, items...) cookies = append(cookies, cookie) if len(buf) >= MaxItems { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } buf = buf[:0] cookies = nil } } if len(buf) > 0 { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } } return nil }