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

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

Запись открытого мок-собеседования на Middle Go-разработчика с разбором live coding-задач и внутренностей Go. После технической части идут обратная связь кандидату, Q&A и презентация менторской программы.

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

Открыть на YouTube

Таймлайн

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

Это открытое мок-собеседование по Go: наставник разбирает с Сергеем слайсы, каналы, горутины, worker pool, планировщик Go, конкурентный доступ к map, внутренности map и проектирование многопоточного кэша. Во второй части участники дают кандидату обратную связь, обсуждают его переход в разработку, подготовку к реальным интервью, pet-проекты, Git, линтеры и практику. Значительная часть эфира посвящена презентации менторской программы «Эйч Навыки» и ответам на вопросы зрителей; это не реальное собеседование в конкретную компанию.

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

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

  • Для задач со слайсами нужно уметь объяснить, что при передаче slice копируется его заголовок с len и cap, а не меняется длина исходного слайса; append может записать элемент в общий backing array, но исходный len останется прежним.
  • Для массовой обработки URL подготовьте два решения: семафор на буферизированном канале и worker pool с фиксированным числом воркеров, каналом задач, закрытием канала после отправки задач и ожиданием завершения через sync.WaitGroup.
  • При подсчёте HTTP-статусов общий map нужно защищать mutex; конкурентные записи в обычный map могут завершиться panic, а отсутствие panic в отдельном запуске не делает код безопасным.
  • Число горутин для I/O-задачи не следует брать равным числу ядер: его подбирают с учётом GOMAXPROCS, тайм-аутов, файловых дескрипторов, сетевых ограничений и измерений нагрузки.
  • Повторите отличие поведения переменной цикла в goroutine в версиях Go до 1.22 и начиная с Go 1.22, а также блокировку небуферизированного канала при отправке без готового получателя.
  • Для вопросов о кэше подготовьте LRU/LFU-вытеснение при нехватке памяти, шардирование данных и мьютексов для снижения конкуренции, а также компромиссы между sync.Map и map с синхронизацией.
  • Для подготовки к интервью полезнее глубоко разобрать несколько тем — здесь это слайсы, concurrency и map — чем поверхностно перечислить множество тем; практику закрепляют собственные реализации структур и регулярное написание кода.

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

30 мин
BackendSenior

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

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