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