Mit welchen Bibliotheken werden Metriken in Go geschrieben?
Golang
Wofür ist dieser Code geschrieben? Welches geschäftstechnische Problem löst er?
Welche Metriken? Mit welchen Werkzeugen werden wir diese Metriken erfassen?
// Aufgabe 4 // Bei einem "typischen" CRUD-Service funktionierten einige Methoden irgendwann langsam, und der Service begann, Timeouts zu verursachen. // Der Service besteht aus: // * Application Load Balancer (L7) - Annahme eingehender Anfragen und TLS-Beendigung // * Backend (rest, java/kotlin oder golang) - Verarbeitung eingehender Anfragen und Geschäftslogik // * Datenbank (postgres) - Speicherung und Verarbeitung von SQL-Anfragen // Wie sollte man vorgehen, um die Ursachen der Probleme zu verstehen und Lösungen zur Verbesserung der Situation zu entwickeln?
// Aufgabe 3 // Beschreiben Sie, welche Aufgabe dieser Code löst // Welche Probleme gibt es bei dieser Lösung? // Wie würden Sie diesen Code umschreiben?
Was tun bei Leistungsproblemen mit der Datenbank und dem Load Balancer?
Wie greift man auf den pprof-Profiler auf dem Produktionsserver zu?
Was hast du bei der Arbeit gemacht?
// Aufgabe 3 // Beschreiben Sie, welche Aufgabe dieser Code löst // Welche Probleme gibt es in dieser Lösung? // Wie würden Sie diesen Code umschreiben? var c int type Trace struct { // Einige Felder hier } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { c++ if c == 100 { sender.Send(tr) c = 0 } }
Welche Indizes haben Sie bei der Arbeit verwendet? Was haben Sie in der Praxis angewendet? Bei Wildberries?
Wie funktioniert Partitionierung in PostgreSQL im Inneren?
Was werden Sie tun, wenn sich die Prioritäten in Ihrem Team jeden Tag ändern und neue dringende Aufgaben auftauchen?
Welche Indizes verwendest du in PostgreSQL?
Welche Probleme gibt es im Code mit dem globalen Zähler? Wie kann man sie beheben?
Wie man Increaser universell macht — nicht an die Zahl 100 gebunden?
Auf welchem Diagramm haben Sie das Problem bei der Verwendung von pprof gesehen?
// Aufgabe 3 // Beschreiben Sie, welche Aufgabe dieser Code löst // Welche Probleme gibt es bei dieser Lösung? // Wie würden Sie diesen Code umschreiben? var c int var mu sync.RWMutex type Trace struct { // Einige Felder hier } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { mu.Lock() defer mu.Unlock() c++ if c == 100 { go func() { sender.Send(tr) }() c = 0 } }
func normalize2(str []rune) []rune { result := str[:0] for val := range str { if val != ' ' { result = append(re) } } l, r := 0, 0 isSpace := false for i := 0, i < len(str); i++ { val := string(str[i]) if val == " " { if isSpace { continue } else { str[r] = val r++ isSpace = true } } else { str[r] = val r++ isSpace = false } } return str[:r] }
Kann Increaser eine Implementierung von Sender werden? Worin unterscheidet sich Increaser logisch von Sender?
Kannst du erzählen, wie du die REST- und gRPC-APIs für die internen und externen Dienste der Plattform entworfen und implementiert hast?