Вернуться в видеотекуMock-собеседование по Go от Старшего разработчика из Авито
Практическое мок-собеседование по Go с четырьмя задачами: слайсы, интерфейсы, range и конкурентный вызов с таймаутом. Ведущий и кандидат объясняют ход рассуждений и исправляют неточности прямо по ходу решения.
- Направление
- Backend
- Формат
- Мок-собеседование
- Компания
Авито- Длительность
- 51 мин
Коротко о видео
Это мок-собеседование по 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().