Типичный пример: var count int; var wg sync.WaitGroup; for i := 0; i < 1000; i++ { wg.Add(1); go func() { count++; wg.Done() }() }; wg.Wait(); fmt.Println(count). Баг — data race на count. Без синхронизации count++ не атомарная операция (read-modify-write). Результат недетерминирован, может быть меньше 1000. Фикс: atomic.AddInt64 или mutex. go run -race поймает это. На собесе дают код и просят найти проблему — тренирует глаз на конкурентные баги.
Найди баг в этом concurrent коде
Middle
288 просмотровAFK Offer AI
Как спроектировать search engine?