На моей предыдущей работе я провел много собеседований на позиции Java-разработчика. У нас был типичный современный стек Java, основанный на фреймворке Spring и реляционной базе данных. Мы обычно нанимали младших разработчиков сразу после школы, поэтому наш процесс собеседования был разработан для поиска талантливых людей с потенциалом, а не с энциклопедическими знаниями.
У нас был один очный раунд и домашнее задание по программированию. В этой статье мы попытаемся охватить оба.
Очный раунд
Это был самый важный этап нашего процесса. В основном обычно это был тимлид команды, которая нанимала, и один старший разработчик проводил ее. Цель состояла в том, чтобы определить, подходит ли человек для команды, обладает ли он некоторыми способностями к техническому мышлению и, самое главное, может общаться.
В первой части у нас была небольшая беседа о предыдущем опыте, будь то их текущая работа или школьный проект.
Типичными вопросами здесь будут:
- Над каким последним проектом вы работали?
- Чему вы научились недавно?
- Каким был бы проект вашей мечты?
Во второй части мы ответили на несколько технических вопросов. Вокруг некоторых основных вещей Java или Spring.
Типичные вопросы здесь:
- Объясните статическое ключевое слово.
- Объясните, как сравнивать объекты в Java. Равно и имеет код.
- Инверсия управления и внедрение зависимостей.
В третьей части нам нужно было решить техническую задачу. Это была упрощенная реальная задача, которую мы должны были решить в прошлом году (мы изменили ее, чтобы она оставалась интересной). У него не было одного решения. Включал разработку простого алгоритма, который настоятельно предполагал использование рекурсии, но мог быть решен множеством способов.
Конечная цель состояла в том, чтобы кандидат разработал структуру данных и использовал ее в простом алгоритме. Мы хотели, чтобы кандидаты сообщали о том, что они делают, и мы обычно помогали им все обсудить. Мы никогда не смотрели на синтаксис и не заботились о том, какой язык они использовали. Мы хотели увидеть возможности для разработки структуры для хранения данных и некоторое базовое мышление, чтобы увидеть, смогут ли они, по крайней мере, обсудить, что должно быть сделано.
В прошлой части мы дали место для любых вопросов.
Примите вызов домашнего кодирования
У нас была очень простая задача по кодированию, которая заключалась в том, чтобы реализовать парсер CSV. Проанализируйте данные в предоставленном нами формате CSV и распечатайте их в виде таблицы HTML и файла Excel.
Мы рассмотрели эти концепции в финальном коде:
- Полиморфизм
- Ведение журнала
- Использование библиотеки
- Комментарии
- Модульное тестирование
Мы не требовали идеального решения, мы даже рекомендовали реализовать столько, сколько им хочется, а затем просто написать комментарии, объясняющие, как это закончить. У нас не было ограничений по времени, и конечной целью было посмотреть, сможет ли кандидат писать код в соответствии с нашими стандартами.
Надеюсь, эта статья помогла вам, вы всегда можете задать мне любой вопрос в моем Твиттере.
Первоначально опубликовано на https://ppolivka.com.