Темы собеседования junior'а golang разработчика

• обновлено • 3 мин чтения

Небольшое введение.

В первую очередь при найме джунов — обращайте внимание, горят ли у них глаза и попытайтесь понять скорость их обучаемости. Неопытный джуниор (или стажёр) — это всегда убыток для компании. Как напрямую, так и косвенно. Чем быстрее он учится, тем легче вам как его коллеге. А бизнесу легче выйти на окупаемость такого найма.

Темы (кратко)

  1. Что такое Golang? Какие его ключевые особенности?
  2. Какие существуют встроенные типы и структуры данных в языке?
  3. Как Го решает задачу конкурентности и параллельности? Что такое горутина?
  4. Что такое интерфейс? Для чего используется?
  5. Как ты проверяешь работу своего кода? Каких практик придерживаешься в работе? (комментарии в коде, тесты, обработка ошибок, SOLID и т.п.)
  6. Над какими проектами работал? Что захватывало твой интерес?
  7. С какими пакетами стандартной библиотеки работал, почему?

Темы (подробно)

  1. Что такое Golang? Какие его ключевые особенности?
    • На данном этапе оцениваем общие знания кандидата о языке программирования Go и его понимание ключевых особенностей, таких как простота синтаксиса, высокая производительность, сборка мусора и поддержка конкурентности. Это основа, без которой сложно оценить уровень владения языком. Бонусом будет знание истории языка в общих чертах (кто, зачем и почему разработал язык)
  2. Какие существуют встроенные типы и структуры данных в языке?
    • Смотрим насколько кандидат знаком с базовыми элементами языка, такими как массивы, срезы (в чем отличие от массива), map’ы, строки и числа. Это важно для понимания, как кандидат будет работать с данными и структурировать их в коде.
  3. Как Го решает задачу конкурентности и параллельности? Что такое горутина?
    • Знает ли кандидат о горутинах и каналах? Это одна из ключевых особенностей Go. Этот вопрос плотно пересекается с предыдущим пунктом. Это важно для разработки высокопроизводительных приложений, способных эффективно использовать многоядерные сервера.
  4. Что такое интерфейс? Для чего используется?
    • В первую очередь смотрим на понимание концепций абстракции, полиморфизма инъекции зависимостей в целом. Это критично для написания гибкого и модульного кода.
  5. Как ты проверяешь работу своего кода? Каких практик придерживаешься в работе? (комментарии в коде, тесты, обработка ошибок, SOLID и т.п.)
    • Вопрос о тестировании, стремлении кандидата к профессиональному мастерству. На этом этапе можно понять уровень перспективности кандидата (джунов берут в первую очередь из расчёта, что они вырастут в сеньоров/тимлидов)
  6. Над какими проектами работал? Что захватывало твой интерес?
    • Пытаемся понять реальный опыт кандидата и его увлеченность разработкой. Это также дает представление о том, как кандидат применяет свои знания на практике и какие задачи ему интересны.
  7. С какими пакетами стандартной библиотеки работал, почему?
    • Ожидается что кандидат расскажет об одном из следующих пакетов. По глубине ответа можно понять действительно ли его опыт и интересы (смотри пункт №6) пересекаются с тем, что он реально знает. Пакеты: strconv, io, ioutil (плюс балл за рассказ о том, что ioutil в статусе deprecated и почему), http, sync, fmt, bufio

Об авторе: Александр Бруяко — руководитель разработки с опытом в backend, инфраструктуре и управлении командами.


Теги: