Wird ein Konstruktor für diese Lösung benötigt?
Golang
Dir wurde ein Service gezeigt und gesagt, du sollst es genauso machen — deine Aktionen
Wie hast du die Architektur gemeinsam mit dem Teamleiter entworfen? Gab es Telefonate oder Diskussionen?
Was hat dich an dieser Stelle gereizt und warum verlässt du deinen vorherigen Arbeitsplatz?
Kann eine Goroutine direkt in eine andere Goroutine über einen gepufferten Kanal schreiben?
Wie haben Sie die Suchskripte optimiert?
Haben Sie Fragen an mich?
Kannst du beschreiben, was du zum Lesen des Kanals in der Worker-Goroutine verwendest?
Was sagt die Go-Konvention über die Verwendung von WaitGroup und Rückgabetypen (Akzeptieren von Schnittstellen, Rückgabe konkreter Typen)?
Normalisierung und Denormalisierung von Tabellen — erzähle mir von den Normalformen
Transaktionsisolationsebenen in PostgreSQL
Haben Sie CTE verwendet? Erzählen Sie, was es ist.
Wie könnten wir externe Fehlerbehandlung für Fehler in Aufgaben implementieren, wenn wir das tun wollten?
Warum ist eine Normalisierung notwendig?
Was sind die Vor- und Nachteile der beiden Szenarien: Aufgaben vor dem Start des Pools hinzufügen und nach dem Start des Pools?
Welche Rolle hattest du bei der Entscheidungsfindung bezüglich der Architektur bei der Entwicklung des Suchdienstes?
// Der Kunde übergibt ein Objekt (Task) mit Daten zur Ausführung der Aufgabe, // in unserem Beispiel verwenden wir eine leere Struktur. // // Der Scheduler kann maximal N Aufgaben gleichzeitig verarbeiten, // und maximal X Aufgaben können in der Warteschlange sein. // Wenn kein Platz in der Warteschlange ist, wird sofort ein Fehler an den Kunden zurückgegeben. // // Eine Aufgabe wird verarbeitet, wenn freie Handler vorhanden sind. // Wir simulieren die Dauer der Verarbeitung mit time.Sleep(5*time.Second). // Sobald eine Aufgabe abgeschlossen ist, nehmen wir die nächste aus der Warteschlange. // Wenn die Warteschlange leer ist, warten wir auf neue Aufgaben von den Kunden. // // Mit einem Sternchen: Struktur Task erweitern und den Status der Aufgaben über eine separate Anfrage abrufen. package scheduler type Scheduler interface { AddTask(t Task) error Close() } type scheduler struct { queue chan Task wg sync.WaitGroup } func New(workers, queue int) Scheduler { // Implementierung ausstehend } type Task interface { Do() }
Hast du entschieden, WaitGroup zu schreiben, weil ein Kanal erschienen ist oder weil du Goroutines für etwas schreiben wolltest?
Welche Technologie/Werkzeug verwendest du?
Welche Indexarten in PostgreSQL, abgesehen von B-tree, hast du verwendet?