Собеседование Go-разработчика: goroutine и конкурентность
Кандидат объясняет назначение Go для I/O-нагруженных сервисов, отличие goroutine от системных потоков и устройство runtime. Интервьюер уточняет race condition, data race и другие риски параллельности.
- Опубликовано на YouTube:
- Просмотры на YouTube: 2,6 тыс.
- Лайки на YouTube: 43
Таймлайн
Коротко о видео
В этой короткой записи проводится техническое собеседование 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.