Jakie biblioteki służą do pisania metryk w Go?
Golang
Do czego jest napisany ten kod? Jakie problem biznesowo-techniczne rozwiązuje?
Jakie metryki? Jakimi narzędziami będziemy je rejestrować?
// Zadanie 4 // W "typowej" usłudze CRUD - w pewnym momencie niektóre metody zaczęły działać wolno, a usługa zaczęła się timeoutować. // Usługa składa się z: // * Application Load Balancer (L7) - przyjmowanie przychodzących żądań i kończenie TLS // * Backend (rest, java/kotlin lub golang) - obsługa przychodzących żądań i logika biznesowa // * Baza danych (postgres) - przechowywanie i obsługa zapytań SQL // Jak postępować poprawnie, aby zrozumieć przyczynę problemów i opracować rozwiązania poprawiające sytuację?
// Zadanie 3 // Opisz, jakie zadanie rozwiązuje ten kod // Jakie są problemy w tym rozwiązaniu? // Jak byś przepisał ten kod?
Co zrobić z bazą danych i load balancerem w przypadku problemów z wydajnością?
Jak uzyskać dostęp do profilera pprof na serwerze produkcyjnym?
Czym się zajmowałeś w pracy?
// Zadanie 3 // Opisać, jakie zadanie rozwiązuje ten kod // Jakie problemy są w tym rozwiązaniu? // Jak byś przepisał ten kod? var c int type Trace struct { // Niektóre pola tutaj } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { c++ if c == 100 { sender.Send(tr) c = 0 } }
Jakie indeksy używałeś w pracy? Co stosowałeś w praktyce? Na Wildberries?
Co zrobisz, gdy w twoim zespole codziennie zmieniają się priorytety i pojawiają się nowe pilne zadania?
Jak działa partycjonowanie w PostgreSQL pod maską?
Jakie indeksy używasz w PostgreSQL?
Jakie problemy występują w kodzie z globalnym licznikiem? Jak to naprawić?
Jak uczynić Increaser uniwersalnym — niezwiązanym z liczbą 100?
Na którym wykresie zauważyłeś problem podczas korzystania z pprof?
// Zadanie 3 // Opisz, jakie zadanie rozwiązuje ten kod // Jakie są problemy w tym rozwiązaniu? // Jak byś przepisał ten kod? var c int var mu sync.RWMutex type Trace struct { // Niektóre pola tutaj } 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] }
Czy Increaser może stać się implementacją Sender? Czym Increaser różni się logicznie od Sender?
Czy możesz opowiedzieć, jak zaprojektowałeś i zaimplementowałeś API REST i gRPC dla wewnętrznych i zewnętrznych usług platformy?