Golang
Wie werden in Go panische Zustände und die Fehlerbehandlung bei Notfallsituationen implementiert?
Was genau wurde nach der Entdeckung mit den Duplikaten gemacht? Wo wurden sie gereinigt?
Welche Methoden und Werkzeuge haben Sie verwendet, um die Ursachen von Belastungsproblemen in den Systemen zu analysieren und zu bestimmen?
Welche Befehle verwendest du normalerweise im Linux-Betriebssystem?
Welche Ansätze können verwendet werden, um die Thread-Sicherheit beim Arbeiten mit Slices in einer Multithread-Umgebung zu gewährleisten?
Welche Operationen sind bei der Arbeit mit einem nil-Slice in der Programmiersprache erlaubt?
Erzählen Sie von einer schwierigen Aufgabe, die Sie durch das Schreiben eines Skripts für das Linux-System lösen konnten
Wie kann man die Menge der im Cache gespeicherten Daten regulieren?
Bereitschaft, die Rolle des einzigen Backend-Spezialisten im Team zu übernehmen
Was ist der Hauptgrund für die Verwendung des Typs sync.Map in Go?
Welche guten Praktiken und Antipatterns gibt es im Unit-Testing? Wie erkennt man, dass Tests gut sind?
Welche Vor- und Nachteile hat die Verwendung von Caching in Systemen?
func Exclude(a, b []int) []int { set := make(map[int]struct{}) for _, v := range b { set[v] = struct{}{} } result := make([]int, 0) for _, v := range a { if _, ok := set[v]; !ok { result = append(result, v) } } return result } Kompilierungsfehler # command-line-arguments ./main.go:39:32: Syntaxfehler: unerwarteter Zeilenumbruch, es wurde { nach der if-Anweisung erwartet
Haben Sie schon einmal Schwierigkeiten bei der Implementierung von Interaktionen zwischen verschiedenen Diensten gehabt?
Wie erfolgt die Übergabe eines Slices an eine Funktion in einer Programmiersprache?
Was ist das Saga-Muster?
Warum haben sie keine Testcontainers genommen?
/* 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 }
Ist eine Tabelle mit (id PRIMARY KEY, data JSON) ein guter PostgreSQL-Index für die Suche nach Schlüssel?
Was ist der Unterschied zwischen Virtualisierung und Containerisierung?