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

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

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

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

  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