Mock-собеседование по Go (Junior) от Team Lead из Ozon
Мок-интервью по Go для Junior-разработчика с разбором задач на поведение кода и итоговой обратной связью. Основной акцент — внутреннее устройство базовых конструкций Go и конкурентность.
it-interview
Открыть на YouTube- Опубликовано на YouTube:
- Просмотры на YouTube: 71,7 тыс.
- Лайки на YouTube: 1,5 тыс.
Таймлайн
Коротко о видео
Это мок-собеседование на позицию Junior Go-разработчика: интервьюер проверяет понимание базовых типов, строк, слайсов, map, интерфейсов, defer, замыканий и конкурентности через короткие задачи на чтение кода. Кандидат рассуждает о поведении программ без компиляции, а интервьюер уточняет важные детали: руны в range, общий backing array у слайсов, typed nil в интерфейсе, порядок defer и безопасную работу с общими данными. В финале кандидат и интервьюер разбирают сильные стороны и темы для дальнейшей подготовки.
Затронутые темы
Что взять на заметку
- Повторить строки в Go: строка неизменяема, range по строке возвращает байтовый индекс и rune; string(rune) нужен для печати символа, а не его числового кода.
- Уметь пошагово разбирать слайсы: header содержит указатель, len и cap; слайсы могут разделять backing array, а append при нехватке capacity создаёт новый массив. Рост capacity не стоит описывать как всегда строгое удвоение — он зависит от runtime и размера элемента.
- Для map закрепить: порядок обхода не гарантирован; ключ должен быть comparable; массивы и структуры допустимы, если сравнимы их элементы; map[T]struct{} подходит для множества без хранения отдельного значения.
- Разобрать интерфейсы на примере typed nil: интерфейс с заданным динамическим типом и nil-значением внутри сам не равен nil.
- Практиковать defer и замыкания: аргументы deferred-вызова вычисляются в момент defer, замыкание выполняется позже и видит захваченную переменную; несколько defer выполняются в LIFO-порядке.
- Для конкурентных задач отработать Mutex/RWMutex, atomic, WaitGroup и каналы: map нужно защищать и при конкурентном чтении, а ожидание горутин нельзя заменять sleep.
- Уметь написать fan-in для каналов: отдельная горутина читает каждый входной канал в общий out, WaitGroup ждёт всех читателей, а отдельная горутина закрывает out после их завершения.