> Что такое состояние гонки и к чему оно приводит (Go)
Уровень: junior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Wildberries
Стек: Go, Java
> Пример ответа
Состояние гонки (race condition) - это ситуация, когда поведение программы зависит от непредсказуемого порядка выполнения потоков или горутин, работающих с общими данными без синхронизации. В Go это часто проявляется при конкурентном доступе к переменным, map, каналам или другим ресурсам без мьютексов или атомарных операций.
Последствия:
- Непредсказуемые результаты: например, инкремент счётчика двумя горутинами может дать значение меньше ожидаемого из-за чтения/записи в неправильный момент.
- Паники и краши: конкурентная запись в map (без синхронизации) вызывает runtime panic.
- Трудноуловимые баги: ошибки проявляются нестабильно, часто только под нагрузкой или на многоядерных системах.
Пример на Go:
GOvar counter intfor i := 0; i < 1000; i++ {go func() { counter++ }()}// Результат counter может быть меньше 1000
Исправление: использовать sync.Mutex или atomic.AddInt64.
В Java аналогичная проблема решается через synchronized, Lock или AtomicInteger.
> Похожие задачи по Go
Что такое JWT и как он работает
Можно ли указать кастомный заголовок в HTTP запросе
Зачем нужен первичный ключ?
Расскажите о вашем опыте работы с Git
> Похожие задачи по backend
Что такое JWT и как он работает
Можно ли указать кастомный заголовок в HTTP запросе
Зачем нужен первичный ключ?
Расскажите о вашем опыте работы с Git
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью