Вернуться в каталог собеседований

Собеседование Go-разработчика: goroutine и конкурентность

Кандидат объясняет назначение Go для I/O-нагруженных сервисов, отличие goroutine от системных потоков и устройство runtime. Интервьюер уточняет race condition, data race и другие риски параллельности.

it father.
  • Опубликовано на YouTube:
  • Просмотры на YouTube: 2,6 тыс.
  • Лайки на YouTube: 43
Открыть на YouTube

Таймлайн

Коротко о видео

В этой короткой записи проводится техническое собеседование Go-разработчика. Интервьюер начинает с вопроса о том, зачем создавали Go при наличии других языков, и кандидат связывает его с микросервисами и большим объёмом операций ввода-вывода. Далее обсуждаются ограниченный набор языковых сущностей, каналы и goroutine. Ведущий просит отличить легковесную goroutine от системного потока, а затем перейти к контекстным переключениям и составным частям Go runtime, включая планировщик. Финальный блок посвящён проблемам конкурентности: race condition, data race, deadlock, livelock и starvation. Интервьюер возвращает кандидата к неточным формулировкам, чтобы проверить понимание того, когда nondeterministic-поведение становится ошибкой.

Затронутые темы

Что взять на заметку

  • Go часто используют для I/O-нагруженных сервисов и конкурентной обработки задач.
  • Goroutine отличается от системного потока способом планирования и стоимостью переключения.
  • Race condition опасна, когда порядок выполнения меняет наблюдаемый результат программы.
  • Нужно различать data race, deadlock, livelock и starvation.

Рекомендуем посмотреть