Golang
Auf welchem Diagramm haben Sie das Problem bei der Verwendung von pprof gesehen?
Was genau waren Ihre Aufgaben an Ihrer aktuellen Arbeitsstelle? Was ist Ihr Verantwortungsbereich?
Was sind Timeouts und benutzt du sie bei der Arbeit?
Erzähl mir, was dein aktuelles Projekt ist, für welchen Teil der Funktionalität du verantwortlich bist?
Wann sollte man Mutex und wann Channel verwenden?
Wie nennt man in Go den Ansatz, bei dem man einen Kanal erstellt, ihn schließt und dann daraus liest? Was ist der Vorteil, einen Kanal zu schließen, im Vergleich dazu, einen Wert hineinzuschicken?
Was ist eine Goroutine und wie funktioniert sie?
Wie war die Zusammensetzung des Teams? War es monofunktional oder funktionsübergreifend?
Auf wie vielen Hosts/Instanzen lief der am stärksten ausgelastete Dienst?
Welche Verhaltensmerkmale hat eine Goroutine, wenn sie synchrone Systemfunktionen aufruft?
Wie sind die Tests im Team aufgebaut — wer schreibt was, welche Abdeckung, gibt es E2E?
Live-Coding: Füge eine Timeout-Funktion hinzu — wenn die Ausführung 1 Sekunde überschreitet, Fehler zurückgeben. Verwendung von select, time.After, context.
Wie implementiert man eine Dead Letter Queue (DLQ) in Kafka?
Was wäre für dich in einem neuen Job interessant?
Was ist TLS und wozu braucht man ein Zertifikat?
Arbeiten Sie noch bei [Unternehmen]? Wann planen Sie zu gehen und warum?
Welche Zustände hat eine Goroutine?
Was ist der Unterschied zwischen einem L4- und einem L7-Load-Balancer?
Warum wurden Kafka und gRPC gleichzeitig verwendet? Welche Szenarien liefen über Kafka und welche über gRPC?
/* 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 }