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

Открытое интервью на Go разработчика | Эйч Навыки

Открытый разбор собеседования Go-разработчика с лайвкодингом и обсуждением внутренних механизмов Go, кэшей, баз данных и system design. В конце приводятся рекомендации кандидату и ответы на вопросы зрителей.

Источник: Эйч Навыки — менторская программа

Открыть на YouTube

Таймлайн

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

Это открытое демонстрационное собеседование Go-разработчика, предварённое и прерываемое презентацией менторской программы «Эйч Навыки». Кандидат отвечает на вопросы о слайсах, goroutine, каналах и планировщике Go, затем решает задачи на потокобезопасный кэш, LRU и слияние каналов. Во второй части обсуждаются консистентное хеширование, репликация, индексы и Transactional Outbox; в финале интервьюер высказывает мнение, что кандидат тянет на middle, и рекомендует углубить базы данных, планировщик и system design.

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

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

  • Для Go-интервью нужно уверенно объяснять устройство slice: указатель на backing array, length и capacity, последствия append при перераспределении памяти и то, почему результат append следует возвращать из функции.
  • В задачах с каналами важно отдельно проверить блокировку отправителя, преждевременное завершение main и корректную синхронизацию goroutine через WaitGroup, закрытие канала и чтение через range.
  • Полезно разобрать планировщик Go глубже: локальные и глобальная очереди, work stealing, периодический забор задач из глобальной очереди, Netpoller и поведение goroutine при системных вызовах.
  • Для потокобезопасного кэша стоит уметь обосновать выбор mutex/RWMutex, обработку отсутствующего ключа, context и error в интерфейсе, а при преобладании чтений — шардирование.
  • LRU-кэш с операциями O(1) обычно строится на map из ключа в узел и двусвязном списке: обращённый элемент перемещается в актуальный конец, а наименее недавно использованный удаляется с другого конца.
  • При подготовке к system design нужно понимать, что консистентное хеширование размещает ключ на ближайшем по часовой стрелке узле кольца и при изменении числа шардов переносит только часть данных; виртуальные шарды упрощают балансировку.
  • Transactional Outbox отделяет фиксацию локального изменения и записи события в одной транзакции от последующей отправки воркером; нужны идемпотентный ключ, статусы и повторная обработка неотправленных событий.

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

1 ч 29 мин
BackendMiddle

Открытое интервью на Middle Go-разработчика

Запись открытого мок-интервью на Middle Go-разработчика с разбором ответов по Go runtime, базам данных и системному дизайну. В конце — обратная связь кандидату и ответы на вопросы о карьерном переходе и подготовке к интервью.

2 ч 40 мин
BackendMiddle

Открытое собеседование на Middle-Go разработчика

Открытый мок-интервью для Go-разработчика: разбор сложных тем Go, баз данных и системного дизайна, затем обратная связь кандидату и ответы на вопросы зрителей. Запись также содержит два больших рекламных блока менторской платформы Эйч Навыки.