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