Яндекс. Собеседование в 2019 на должность Java разработчика.
Проработав год в небольшой компании и устав от тотальной неорганизованности, появилось желание работать в компании с правильно выстроенными рабочими процессами. Решив не мелочиться, я выбрал наиболее крупные компании с интересными проектами: Сбербанк, Райффайзен, Тинькофф и Яндекс. К вопросу о том, где искать вакансии, мной они были найдены на сайтах компаний или на hh. В целом, процесс собеседования во всех компаниях выглядел схожим образом. Сбербанк и Райффайзен имеют только одну встречу в офисе, на которой обсуждаются сразу все темы, процесс прохождения собеседований в Тинькофф очень близок к процессу в Яндексе. О нем и будет эта статья. Процесс собеседования занял примерно две недели с момента отклика на вакансию до получения итогового ответа.
Через пару дней после отклика со мной связалась HR, и мы договорились созвониться по телефону. В разговоре обсудили рабочий опыт, используемые технологии и сферу интересов, HR кратко рассказала о проектах и формате собеседования (скайп интервью и очная часть в офисе Яндекса).
Интервью по скайпу
Интервью по большей части состояло из вопросов по теории, их было много на разные темы.
Началось оно с обсуждения наиболее популярных алгоритмов сортировки, их сложности и описания принципа работы. Java Collections Framework, из чего состоит, как устроены коллекции, какую сложность имеют и где какие лучше применять. Самые основы многопоточности: для чего используется ключевое слово volatile, способы создания потоков и какие есть методы для работы с ними. По Spring были заданы совсем стандартные вопросы: типы бинов, этапы формирования контекста и как происходит связывание компонентов. Немного о JDBC и базах данных: способы защиты от sql инъекций, как устроены индексы в БД, виды оператора JOIN и чем отличается HAVING от WHERE.
После теоретических вопросов интервьюер прислал ссылку на YandexCode.
YandexCode представляет собой простой браузерный текстовый редактор с подсветкой синтаксиса, но без автокомплита.
Было две задачки:
- Написать метод для удаления всех нулей из массива
- Обход графа в глубину
Собеседование проходило чуть меньше часа. На следующий день пришло письмо с подтверждением встречи в офисе.
Собеседование в офисе
Проходило в офисе Яндекса на Садовнической улице. Состояло из двух встреч подряд, на каждую был выделен ровно один час.
Алгоритмическая секция
Вся алгоритмическая секция состояла из задачки «Реализовать систему отслеживания событий пользователей и поиска роботов. Робот — пользователь совершающий больше 5000 событий в час.»
Решение нужно было оформить на бумаге. Интервьюер наблюдал за ходом решения и периодически задавал наводящие вопросы. Код можно было писать на относительно абстрактном уровне, до мелочей никто не докапывался. По истечении часа интервьюер ушел, и через несколько минут пришел другой.
Java core
Часть по Java core несколько дублировала интервью по скайпу. Началась она с вопросов про коллекции, аналогичных в части по скайпу. Многие вопросы были подкреплены задачками, вроде «Реализовать поиск дубликатов в массиве». Далее следовала часть про многопоточность, сводящаяся к обсуждению пакета java.util.concurrent, которой было уделено на удивление много времени. Завершали собеседование контракты переопределения equals и hashСode и стандартные вопросы про ООП.
Резюмируя
На деле оказалось, что собеседование проходит не сложнее, чем в остальных компаниях на должность Java разработчика. Для успешного прохождения достаточно хорошего знания своей предметной области, основных алгоритмов и структур данных, а также некоторой тренировки решения задачек на листках.