На моей предыдущей работе я провел много собеседований на позиции Java-разработчика. У нас был типичный современный стек Java, основанный на фреймворке Spring и реляционной базе данных. Мы обычно нанимали младших разработчиков сразу после школы, поэтому наш процесс собеседования был разработан для поиска талантливых людей с потенциалом, а не с энциклопедическими знаниями.

У нас был один очный раунд и домашнее задание по программированию. В этой статье мы попытаемся охватить оба.

Очный раунд

Это был самый важный этап нашего процесса. В основном обычно это был тимлид команды, которая нанимала, и один старший разработчик проводил ее. Цель состояла в том, чтобы определить, подходит ли человек для команды, обладает ли он некоторыми способностями к техническому мышлению и, самое главное, может общаться.

В первой части у нас была небольшая беседа о предыдущем опыте, будь то их текущая работа или школьный проект.

Типичными вопросами здесь будут:

  • Над каким последним проектом вы работали?
  • Чему вы научились недавно?
  • Каким был бы проект вашей мечты?

Во второй части мы ответили на несколько технических вопросов. Вокруг некоторых основных вещей Java или Spring.

Типичные вопросы здесь:

  • Объясните статическое ключевое слово.
  • Объясните, как сравнивать объекты в Java. Равно и имеет код.
  • Инверсия управления и внедрение зависимостей.

В третьей части нам нужно было решить техническую задачу. Это была упрощенная реальная задача, которую мы должны были решить в прошлом году (мы изменили ее, чтобы она оставалась интересной). У него не было одного решения. Включал разработку простого алгоритма, который настоятельно предполагал использование рекурсии, но мог быть решен множеством способов.

Конечная цель состояла в том, чтобы кандидат разработал структуру данных и использовал ее в простом алгоритме. Мы хотели, чтобы кандидаты сообщали о том, что они делают, и мы обычно помогали им все обсудить. Мы никогда не смотрели на синтаксис и не заботились о том, какой язык они использовали. Мы хотели увидеть возможности для разработки структуры для хранения данных и некоторое базовое мышление, чтобы увидеть, смогут ли они, по крайней мере, обсудить, что должно быть сделано.

В прошлой части мы дали место для любых вопросов.

Примите вызов домашнего кодирования

У нас была очень простая задача по кодированию, которая заключалась в том, чтобы реализовать парсер CSV. Проанализируйте данные в предоставленном нами формате CSV и распечатайте их в виде таблицы HTML и файла Excel.

Мы рассмотрели эти концепции в финальном коде:

  • Полиморфизм
  • Ведение журнала
  • Использование библиотеки
  • Комментарии
  • Модульное тестирование

Мы не требовали идеального решения, мы даже рекомендовали реализовать столько, сколько им хочется, а затем просто написать комментарии, объясняющие, как это закончить. У нас не было ограничений по времени, и конечной целью было посмотреть, сможет ли кандидат писать код в соответствии с нашими стандартами.

Надеюсь, эта статья помогла вам, вы всегда можете задать мне любой вопрос в моем Твиттере.

Первоначально опубликовано на https://ppolivka.com.