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

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

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

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

Открыть на YouTube

Таймлайн

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

Это открытое учебное мок-интервью на Go-разработчика: собеседующий проверяет знания кандидата о внутреннем устройстве Go, конкурентности, сетях и system design. Обсуждаются slices, strings, maps, channels, context, интерфейсы, ошибки, goroutines, планировщик, сборщик мусора, тестирование и синхронизация. В финале участники дают обратную связь кандидату, отвечают на вопросы о подготовке и рынке junior Go-разработчиков, а ведущий презентует менторскую программу.

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

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

  • Для slice нужно уметь объяснить заголовок из указателя, длины и capacity: при передаче в функцию копируется заголовок, изменение элемента затрагивает общий backing array, а append может выделить новый массив — тогда результат append нужно вернуть или присвоить.
  • Нулевой slice, объявленный через var, имеет len=0 и не допускает запись по индексу: это закончится panic `index out of range`, даже если заранее понятен желаемый объём.
  • Индексирование строки в Go работает с байтами; для Unicode следует использовать `range` по строке или преобразование в `[]rune`. Длинная строка при передаче в функцию не копируется целиком: передаётся её заголовок.
  • Обычный map не защищён от конкурентной записи: доступ нужно проектировать с `sync.Mutex`/`sync.RWMutex`, отдельной обёрткой либо, с учётом type assertion и накладных расходов, `sync.Map`.
  • Каналы потокобезопасны, но отправка в закрытый канал вызывает panic, повторное закрытие тоже недопустимо, а закрытый канал можно дочитать. При нескольких writer’ах закрытие должен координировать один владелец.
  • Для остановки набора goroutine обсуждаются `context`, отдельный канал завершения, `select` и heartbeat; отмена родительского context каскадно отменяет дочерние, а дочерний context позволяет добавить локальный timeout.
  • При деградации сервиса сначала следует проверить метрики и логи, найти медленные запросы к БД и причины вроде миграций или отсутствующих индексов; затем выбирать между кэшированием, репликацией, партиционированием, rate limiting и масштабированием инстансов.

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