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

Mock-собеседование по Go от Старшего разработчика из Авито

Практическое мок-собеседование по Go с четырьмя задачами: слайсы, интерфейсы, range и конкурентный вызов с таймаутом. Ведущий и кандидат объясняют ход рассуждений и исправляют неточности прямо по ходу решения.

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

Открыть на YouTube

Таймлайн

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

Это мок-собеседование по Go: старший разработчик Олег разбирает с кандидатом четыре практические задачи и уточняющие вопросы. Обсуждаются внутреннее устройство слайсов и рост map, реализация собственных ошибок через интерфейсы, различия value- и pointer-receiver, а также поведение переменной range до и после Go 1.22. В финальной задаче кандидат проектирует ограничение времени для непредсказуемого вызова через context.WithTimeout, горутину, канал и select; затем участники подводят итоги тренировки.

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

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

  • Для задач со слайсами нужно пошагово отслеживать len, cap и общий backing array: append при свободной capacity возвращает новый заголовок слайса, но может изменить общую память.
  • Если capacity равна длине, следующий append требует новую область памяти; результаты append от исходного слайса тогда перестают перезаписывать друг друга.
  • При росте map данные переносятся постепенно: в разговоре это называют эвакуацией, чтобы не переносить всю большую таблицу за одну операцию.
  • Собственную ошибку без внешнего пакета можно представить структурой с методом Error() string; если Error определён на pointer-receiver, интерфейсу error соответствует только указатель на структуру.
  • В задаче на range важно учитывать версию Go: участники разбирают старую ловушку с общим адресом переменной цикла и обсуждают изменение поведения в Go 1.22.
  • Для внешнего вызова с непредсказуемой задержкой разбирается схема context.WithTimeout, defer cancel(), запуск вызова в горутине, передача результата через канал и select между результатом и ctx.Done().

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