Открытое собеседование на Go-разработчика, часть 1
Открытое мок-собеседование по Go с разбором теории, кода, конкурентности и алгоритмов. В конце — обратная связь кандидату и ответы на вопросы о развитии карьеры разработчика.
- Опубликовано на YouTube:
- Просмотры на YouTube: 12,2 тыс.
- Лайки на YouTube: 213
Таймлайн
Коротко о видео
Запись открытого учебного собеседования: Java-разработчик Павел, переходящий на Go, отвечает на вопросы Саши по модели Go, слайсам, сборке мусора, указателям, map, каналам, горутинам и алгоритмам. В практической части он проектирует периодический мониторинг сайтов с контекстом, тикером и параллельными запросами, а затем решает задачу сжатия строки. После интервью Саша разбирает ответы: отмечает сильные стороны и точки роста, в частности необходимость учитывать ограничение параллелизма и быстрее писать код на Go; это его оценка в рамках мок-интервью. Остальная часть вебинара посвящена вопросам о подготовке, уровнях разработчиков и рекламе менторской программы «Эйч Навыки».
Затронутые темы
Что взять на заметку
- На интервью полезно не просто называть понятия Go, а рассуждать о последствиях: например, subslice удерживает ссылку на исходный массив и может не дать сборщику мусора освободить память.
- Для задач с каналами важно определить момент закрытия: закрывать канал следует после завершения всех отправляющих горутин, иначе range может ждать бесконечно.
- В задаче обхода сайтов нужны context для отмены, ticker для периодичности, закрытие HTTP response body и ограничение числа одновременных запросов, а не горутина на каждый сайт без лимита.
- При решении алгоритмической задачи стоит сначала проговорить инвариант и крайние случаи; в сжатии строки особенно важно дописать последнюю серию символов после прохода.
- По мнению интервьюера, знания концепций и опыт кандидата важнее случайной синтаксической ошибки при переходе с другого языка, но на собеседовании скорость решения всё равно влияет на оценку.
- Для роста до senior участники считают важными автономность, ответственность за результат, умение договариваться и решать проблемы команды, а не только написание кода.