Serwis na produkcji nie działa stabilnie dłużej niż 5 minut. Udało się zlokalizować problem: istnieje funkcja P() w zewnętrznej bibliotece, która z pewnym prawdopodobieństwem wywołuje panic. Jak rozwiązać ten problem? Biblioteka jest open source, kod można obejrzeć w vendor.
Golang
```go func main() { wg := sync.WaitGroup{} for i := 0; i < 10; i++ { wg.Add(1) go func(wg sync.WaitGroup) { defer wg.Done() fmt.Println(i) }(wg) } wg.Wait() fmt.Println("some text") time.Sleep(1 * time.Minute) fmt.Println("some text2") } ```
Jak zoptymalizować ciężkie zapytanie SQL analityczne w dużej bazie danych produkcyjnych?
Opowiedz o swoim doświadczeniu, interesujących zadaniach, nad czym lubisz pracować, z czego jesteś dumny.
Gdzie lepiej deklarować interfejs — w miejscu implementacji czy w miejscu użycia?
Opowiedz o sobie w skrócie
Czy kolejność wyjścia 100 gorutyn będzie za każdym razem taka sama? Od czego to zależy?
Załóżmy, że zadanie jest w wersji Go 1.18. Co się zmieni w zachowaniu programu?
Jaka jest różnica między silnikami MergeTree, ReplicatedMergeTree i Distributed w ClickHouse?
Czy znasz architekturę Kubernetes, jakie istnieją jednostki, czym jest control plane?
Co byś zrobił, gdybyś zaproponował rozwiązanie architektoniczne, ale lider techniczny się z tym nie zgadzał, a ty byłeś pewien swojej racji?
Jak działa system moderacji do wykrywania zabronionej treści, w tym podobnych obrazów?
Jak możliwe jest uruchamianie wielu odizolowanych środowisk na jednej lokalnej maszynie (Docker/konteneryzacja)?
```go func main() { wg := sync.WaitGroup{} wg.Add(8) for i := 0; i < 10; i++ { go func(wg *sync.WaitGroup, i int) { defer wg.Done() fmt.Println(i) }(&wg,i) } wg.Wait() fmt.Println("some text") time.Sleep(1 * time.Minute) fmt.Println("some text2") } ```
Dzięki czemu udało się skrócić czas przetwarzania operacji z 120 do 5 sekund?
Co zobaczymy na ekranie podczas uruchamiania programu, jeśli naprawimy błąd z wg (przekazać wskaźnik)?
Jak sprawić, aby na piątym wierszu, jednostka dodana przez append, również była widoczna? Nie zmieniając sygnatury funkcji fill.