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

Mock-собеседование старшего Go разработчика из Тинькофф | Самое полное интервью

Длинное мок-собеседование по внутреннему устройству конкурентности в Go. Вопросы переходят от горутин и планировщика к примитивам синхронизации, архитектуре серверов и низкоуровневым аспектам процессоров.

Источник: Vladimir Balun - Programming

Открыть на YouTube

Таймлайн

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

Это мок-собеседование по Go concurrency: интервьюер задаёт Денису, представленному как старший разработчик из Тинькофф, углублённые вопросы о горутинах, потоках, планировщике и синхронизации. Собеседник рассуждает вслух и в ряде тем прямо отмечает, что не помнит низкоуровневые детали; интервьюер развивает ответы уточняющими вопросами. Во второй половине разбирают каналы, context, CAS, кэш-когерентность, конкурентный доступ к map, архитектуру веб-сервера и синхронизацию связного списка.

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

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

  • Подготовьте объяснение модели G-M-P в Go: роли горутин, OS-потоков и P, локальные очереди, блокирующие системные вызовы и work stealing.
  • Умейте сравнить горутины с потоками ОС, включая динамический стек, хранение состояния и причины более дорогого context switching у потоков.
  • Повторите кооперативную и вытесняющую многозадачность, кванты времени, приоритетное планирование, Round Robin и Shortest Job First.
  • Разберите примитивы синхронизации Go: mutex, WaitGroup, atomic-операции, spinlock, а также причины deadlock и способ предотвращения через единый порядок захвата блокировок.
  • Нужно понимать устройство каналов: очереди отправителей и получателей, буферизацию, блокировку при полном буфере и применение буферизированного канала как ограничителя параллелизма.
  • Повторите Compare-and-Swap и context.Context: сигнал отмены через закрытие Done-канала, cancel, timeout и освобождение ресурсов.
  • Для системного дизайна полезно уметь сопоставлять поточную и событийную архитектуры веб-сервера, шардирование конкурентной map и блокировки отдельных узлов связного списка.

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