Вернуться в видеотеку

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

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

Источник: it father.

Открыть на 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.

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