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

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

Мок-собеседование Go-разработчика по базовым темам языка и runtime. Кандидат отвечает на вопросы о структурах данных, конкурентности, контекстах, дженериках и интерфейсах.

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

Открыть на YouTube

Таймлайн

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

Это мок-собеседование по Go без алгоритмических и системных задач: интервьюер последовательно спрашивает кандидата об устройстве строк, слайсов, map, runtime, конкурентности, контекстах, дженериках и ООП-подходах Go. В ответах разбираются детали реализации и практические компромиссы, включая UTF-8, рост слайсов, коллизии хеш-таблиц, планирование goroutine, блокировки и typed nil в интерфейсах. В конце кандидат делится впечатлением от перехода с C++ на Go: по его мнению, на Go удобнее писать промышленный код, хотя C++ он продолжает практиковать на личных задачах.

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

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

  • Повторить, что строка Go неизменяема и хранит байты; отдельно уметь объяснить разницу между len, индексированием по байтам, rune и переменной длиной UTF-8.
  • Уметь описать заголовок слайса: указатель на массив, len и cap; после append вызывающая сторона должна использовать возвращённый слайс, так как возможна реаллокация.
  • Разобрать сложности операций динамического массива: доступ по индексу, append с амортизированной константной стоимостью, сдвиги при вставке и удалении; удаление заменой на последний элемент допустимо, только когда порядок не важен.
  • Подготовить объяснение map: хеширование, бакеты, коллизии, цепочки и открытую адресацию; для денежных ключей разумно хранить сумму в минимальных единицах, например в копейках, а не во float.
  • Повторить различия goroutine и потоков ОС, роль GOMAXPROCS, вытеснение длительно работающих goroutine и поведение при блокирующих системных вызовах.
  • Уметь сравнить буферизированные и небуферизированные каналы, объяснить блокировку отправителя/получателя и способы не допускать дедлоков при нескольких mutex через единый порядок захвата.
  • Повторить context с cancel, deadline и timeout, а также композицию вместо наследования, интерфейсы, typed nil, type switch и ограниченное применение reflection.

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

1 ч 40 мин
BackendMiddle

Cобеседование на Middle в Go с тимлидом из X5: лайв-кодинг и теория

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