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

Mock-собеседование по Go от Team Lead Ozon

Тренировочное Go-собеседование с теорией по языку и практической задачей на объединение каналов. В конце интервьюер даёт кандидату разбор сильных сторон и пробелов по concurrency.

Источник: it-interview

Открыть на YouTube

Таймлайн

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

Мок-собеседование по Go: кандидат с 1–2 годами коммерческого опыта отвечает на вопросы о базовых типах, интерфейсах, ошибках, defer, замыканиях и конкурентности. Затем он с подсказкой проектирует функцию merge, объединяющую произвольное число входных каналов в один, и разбирает корректное закрытие выходного канала через sync.WaitGroup. В финале интервьюер оценивает знание slice и map как хорошее, а concurrency и примитивы синхронизации — как основную зону для доработки.

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

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

  • У slice есть указатель на backing array, длина и capacity; append может изменить общий backing array, если места в capacity достаточно.
  • Функция copy копирует элементы в уже выделенный буфер и сама память не выделяет: для независимой копии нужно сначала создать slice нужного размера через make.
  • Чтение из nil map безопасно и возвращает нулевое значение типа вместе с признаком присутствия при форме value, ok; запись в nil map вызывает panic.
  • В Go реализация интерфейса не объявляется явно: тип подходит интерфейсу, если имеет все требуемые методы. Пустой интерфейс (any) способен хранить значение любого типа.
  • Тип error — интерфейс с методом Error() string; пользовательская ошибка должна реализовать именно этот метод.
  • Небуферизированный канал синхронизирует отправителя и получателя: операции записи и чтения блокируются до парной операции. Буферизированный канал работает без блокировки, пока буфер не заполнен или не опустел.
  • Для merge N каналов нужно запускать по goroutine, читающей каждый вход до закрытия, ждать завершения всех таких goroutine через sync.WaitGroup и только затем закрывать общий выходной канал.

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

30 мин
BackendSenior

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

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