Всем привет! Меня зовут Алексей, я занимаюсь автоматизацией тестирования на Java/Kotlin в Tele2. Уже около полутора лет принимаю участие в найме новых сотрудников в роли технического интервьюера.

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

Если театр начинается с вешалки, то отбор кандидатов начинается… С просмотра резюме? Нет, не угадали. С составления матрицы, в которой фиксируются требования к будущему кандидату, их важность и уровень его компетенций. После того как матрица сформирована, рекрутеры открывают вакансию и начинают отбирать резюме подходящих кандидатов.

Но как же оказаться в этом самом списке подходящих кандидатов? Надо правильно оформить свое резюме, указать актуальный стек технологий и предыдущий опыт работы (при наличии такового). Если описанный стек соответствует матрице требований, ваша кандидатура будет передана техническим специалистам для дальнейшего анализа, поэтому важно предельно понятно и подробно сформулировать эти моменты. HR может дополнительно заранее созвониться с вами для того, чтобы спросить чек-лист базовых вопросов, для первичной оценки знаний. Технические специалисты более детально проанализируют ваши ответы, стек, опыт, портфолио и примут решение, стоит ли звать данного кандидата на собеседование.

Параллельно с этим проводится подготовка сценария для собеседования. На основании матрицы требований формируются блоки вопросов по различным темам. Каждый блок может содержать различное количество вопросов, в зависимости от важности того или иного требования и рассматриваемого грейда (Junior/Middle/Senior). К примеру, вот так выглядело распределение вопросов на позицию QA Engineer Java в команду мобильного приложения (рис. 1).

Рис 1. Распределение вопросов
Рис 1. Распределение вопросов

В случае junior-кандидатов акцент технической части интервью делался больше на фундаментальные знания Java, в то время как в случае middle-кандидатов акцент смещался в сторону тестирования и автоматизации.

Вопросы внутри блоков мы часто группируем парами: первый – достаточно пространный и общий, второй – более специфичный и точный. Приведу примеры вопросов к кандидату:

«Для чего нужен Java Collection Framework? Какие есть основные интерфейсы и реализации?», «Как реализованы структуры данных HashMap и TreeMap? В каких случаях лучше применять каждую из них?».

Пространные вопросы хороши тем, что они покрывают фундаментальные основы какой-либо области знаний. Благодаря этому можно быстро оценить, знаком ли кандидат, хотя бы поверхностно, с этой областью или нет. Главный минус таких вопросов – заезженность. Если загуглить «Вопросы на собеседование Java», то почти на каждом ресурсе будет перечень таких вопросов. С учетом их популярности, вероятнее всего, кандидаты будут хорошо подготовлены к таким вопросам, из-за чего они не всегда показательны. Поэтому вдобавок к ним мы задаем более точные и специфичные вопросы, которые лучше показывают уровень знаний в данной области.

Помимо вопросов, на каждом собеседовании присутствуют задачи (как правило, одна или две). Они бывают трех видов:

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

  2. Практическая задача – стандартная задача по написанию кода. Как правило, этот тип задач мы используем реже всего, т.к. оценить качество кода, умение его писать, продумывание алгоритмов и архитектурных особенностей можно и без задачи. Для этого достаточно открыть портфолио кандидата и посмотреть его предыдущие проекты (если они есть и указаны в резюме). Если же такая потребность все же появляется, то мы просим кандидата реализовать небольшую задачу. В каком формате ее реализовывать? - В любом удобном! Можно реализовать ее в IDE, в любом сервисе code share, да хоть на листке бумаги, лишь бы мы ее потом смогли увидеть и оценить.

  3. Аналитическая задача по прочтению кода – кандидату предоставляется готовый фрагмент работающего кода: необходимо разобраться, что делает данный код и можно ли что-то улучшить (такая возможность в коде присутствует). Эта задача, на мой взгляд, самая наглядная. Она показывает знания кандидата, его умение читать и рефакторить чужой код (что является очень важным навыком), понимание концепций чистого и оптимизированного кода.

Вопросы и задачи подбираются для каждой позиции индивидуально – так, чтобы максимально наглядно можно было оценить соответствие знаний кандидата матрице требований. После того как блоки вопросов сформированы и задачи составлены, сценарий собеседования готов. Теперь, имея «единую систему координат» для текущей позиции, вы можете достаточно объективно оценивать кандидатов.

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

Интервью начинается с приветствия, рассказа о компании, продукте, задачах и будущих целях. Дальше кандидата просят рассказать о себе и о своем предыдущем опыте работы. По моему опыту могу сказать, что достаточно многие кандидаты имеют неплохие hard skills, но вот с soft skills у них есть проблемы. Поэтому составить структурированный рассказ им дается не просто. Если вы не исключение, то я бы мог порекомендовать заранее продумать этот вопрос, подготовить и отрепетировать этот рассказ, т.к. интервью – это в первую очередь знакомство. Не только вам интересно получше узнать о компании и потенциальной будущей команде, но и команде о вас. В связи с этим этот вопрос будет неизбежной частью практически любого собеседования.

После этого идет техническая часть интервью, в рамках которой будут задаваться вопросы и задачи, о которых мы говорили ранее в статье. Вопросы задаются по блокам, начиная с первого. Как уже говорилось ранее, вопросы в рамках блока в основном выстраиваются попарно, чтобы пространные и общие вопросы дополнялись более точными. Мы уже говорили о плюсах такого подхода, но не осветили еще одно немаловажное преимущество: если кандидат не может ответить на общий вопрос, то более точный задавать нет никакого смысла и мы его пропускаем. При проведении интервью нельзя забывать, что кандидат, вероятнее всего, волнуется. Задавать вопросы, на которые он с огромной долей вероятности не сможет ответить, – контрпродуктивно. Это не только не покажет вам его знания, но и, наоборот, увеличит волнение собеседника. По этой причине кандидат может начать хуже отвечать на вопросы, на которые бы мог спокойно ответить.

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

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

Поскольку людям свойственно достаточно быстро забывать многие детали, сразу после окончания интервью составляется резюме по кандидату. Резюме состоит из двух частей:

  1. Объективной – перечисляется список заданий, которые были даны кандидату, выставляются оценки (0 – не справился, 1 – справился не полностью, 2 – справился успешно). Дальше указывается грейд, который можно предложить кандидату (на основании объективных данных).

  2. Субъективной – указываются любые заметки по кандидату: общие впечатления, его потенциальная совместимость с командой и т.д.

Теперь вы знаете всю подноготную проведения собеседований не только со стороны кандидата, но и со стороны команды интервьюеров. Остался лишь единственный не освещенный вопрос, ответ на который уже является субъективным мнением автора: как лучше всего подготовиться, чтобы пройти собеседование?

Я бы мог дать несколько советов:

  1. Умейте анализировать. Проанализируйте потребности рынка – какого специалиста ждут работодатели и какими качествами или стеком технологий он должен обладать для текущей позиции и грейда? Это легко можно определить, если посмотреть актуальные вакансии на рынке. Составьте список требований, которые повторяются часто в вакансиях. Теперь нужно сравнить этот список с вашим резюме. Чего вам не хватает, чтобы соответствовать этому списку? Это и будет ваш вектор дальнейшего развития, чтобы стать максимально востребованным специалистом.

  2. Умейте адаптироваться. Сфера IT быстро развивается и потребности в этой сфере меняются также быстро. Единственный вариант оставаться актуальным на этом рынке – это уметь анализировать текущие потребности и эффективно адаптироваться к ним, приобретая новые компетенции.

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

  4. Пробуйте. Не откладывайте походы на собеседования в дальний ящик. Не только умением анализировать рынок можно составить вектор дальнейшего развития, но и методом проб и ошибок. Это беспроигрышная стратегия, т.к. в случае успешного прохождения собеседования вы добьетесь поставленной цели, а в случае провала у вас будет новая информация. Проанализировав ее, вы сможете лучше скорректировать свой подход в обучении.

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

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

Комментарии (5)


  1. BugM
    09.08.2022 14:07
    +5

    Вы точно мидлов или тем более тестировщиков проверяете знанием реализации хешмапы и тримапы? Про первое вам вероятно что-то не очень правильное и ответят, про второе точно нет.

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


    1. bulakhov_alexey Автор
      09.08.2022 16:09
      -2

      Добрый день, вопросы про JCF в основном адресованы junior-кандидатам, т.к. акцент собеседования больше смешается в сторону проверки базовых знаний Java.И на первый, и на второй вопрос мы получаем достаточно часто вполне внятные ответы. Никто не просит досконально рассказать про все тонкости устройства тримапы и хешмапы. Достаточно сказать, что хешмапа состоит из корзин и при добавлении новой пары вычисляется хеш ключа, на осовании которого выбирается в какую корзину разместить значение. Если в корзине нет элементов, то он становится первым, а если есть - то образуется цепочка элементов. В случае тримапы за основы взята структура дерева, в связи с чем элементы находятся в мапе упорядоченно. У нас на проекте применяются различные типы коллекций, так что базовое представление о том, что они из себя представляют и как работают иметь все же нужно даже тестировщику.


      1. avengerweb
        11.08.2022 19:41

        Самое важное чтобы человек понимал когда использовать tree/hash map, а знает ли человек как оно работает внутри уже второстепенно. Вопросом про реализацию правильнее отсеивать сеньоров, тот уж точно должен знать это из ОПЫТА.


    1. dblur
      10.08.2022 13:01

      Тоже показалось странным. Не все java junior знают, как хешмапа устроена, и почему деревья самобалансирующиеся


      1. souls_arch
        12.08.2022 07:12

        Из современных требований джава джун должен в совершенстве владеть спринг и знать его подкопотье от и до. Очень желательно быть фулстек и знать еще и фронт с фреймами и js как отче наш. Таковы реалии для большинства компаний и ип размещающих вакансию нужен джава джун. Есть еще те, которые берут вовсе без знаний даже коре. Если ты юн, учишься по профилю, харизма 80лвл и силен в математике. И это больше все-таки стажеры.