Вопросы на интервью Java-разработчику
В статье опишем основные этапы собеседования на Junior Java-разработчика и расскажем, что на них стоит ожидать. Статья также будет полезна для любого грейда, так как приводим общие рекомендации про hard и soft skills для подготовки к интервью. Must have к прочтению, если готовитесь к собеседованию.
На текущий момент Java – один из самых популярных языков программирования. Несмотря на свою распространенность, существует определенный порог входа. С одной стороны, он обусловлен особенностями самого языка. С другой – вокруг него существует огромная экосистема, знание которой от вас будут ожидать на собеседовании.
Беседа с HR || Рекрутером
Этап, который в том или ином виде бывает практически всегда. В зависимости от размера компании это может быть как звонок по телефону на 15 минут, так и полноценное собеседование. По факту, это предварительный разговор, где вы и компания решаете, стоит ли вам начинать процесс интервью.
Зачем компании этот этап
– Задать вопросы по предыдущему опыту на основе вашего резюме:
- Уточнить, что вы работали с технологиями из их чек-листа (если такой есть)
- Попросить рассказать о прошлых проектах, и какие проблемы они решали. Этот вопрос нужен, чтобы оценить, насколько связно вы можете излагать свои мысли, а также оценить ваш уровень вовлеченности на предыдущих проектах
- Если вы претендуете на должность Senior/Lead, вас, скорее всего, спросят об опыте руководства проектами/командами
– Узнать ваш текущий статус трудоустройства:
- Если вы студент, готовы ли работать full-time
- Если вы сейчас трудоустроены, когда готовы выйти на новую работу
- Если вакансия предусматривает релокацию в другую страну, то могут уточнить про наличие всех необходимых документов для переезда и оформления визы
– Провести технический скрин. Обычно очень простые вопросы, например:
- Асимптотическая сложность QuickSort
- Чем отличается ‘GROUP BY’и ‘having’
- Разница между static и non-static методами
- Разница между Checked/Unchecked Exceptions
– Уточнить ваши зарплатные ожидания
– В случае собеседования в международную компанию проверить уровень английского языка
Что вы можете узнать о компании на этом этапе
– Подробности проекта, какие задачи решает команда
– Зарплатную вилку. Здесь нужно уточнить, что не все компании готовы ее разглашать, но, из моего опыта, большинство компаний не скрывают
– Информацию о социальном пакете: медицинские страховки, денежные бонусы и бонусы в виде бесплатной еды, оплаты проезда
– Если работа предусматривает релокацию в другую страну, то можно обсудить:
- Оформление визы (какой тип, на сколько виза по времени, можно ли получить по ней гражданство, нужно ли вам за нее платить)
- Помогает ли компания с переездом (перевозка вещей/животных, временное жилье на новом месте и т. д.)
- Помогает ли компания с обустройством в новой стране (открытие банковских счетов, курсы языка, садики, школы).
– Дальнейшие этапы собеседований. Обычно беседа с рекрутером – это предварительный разговор, после которого вам расскажут, сколько будет этапов, и что от вас будут ждать на каждом из них
– Как быстро компания может вас оформить в случае успешного прохождения собеседования (из моего опыта, даже без релокации это может быть > 1 месяца)
На что стоит обратить внимание
- Отнеситесь к беседе с HR/рекрутером с той же ответственностью, с какой подошли бы техническому собеседованию.
- Серьезным red flag’ом является хамство или грубость во время разговора. Если вы провалитесь по техническим скилам, то, скорее всего, вы сможете попробовать собеседоваться в эту компанию снова через полгода, например. Но если вы покажете себя конфликтным человеком, с плохими soft skills, скорее всего, в эту компанию вход вам будет закрыт.
- Подготовьте небольшой рассказ о себе на 3-5 минут, который кратко описывает ваш опыт. Все, кто вас собеседуют, скорее всего, видели ваше резюме, но этот вопрос вам будут задавать снова и снова, и с этим надо просто смириться.
Тестовое задание
Из моего опыта, данный этап встречается нечасто, и в основном при собеседовании на позицию стажеров или junior специалистов.
Зачем компании этот этап
- На данный момент на позицию стажеров/джуниоров конкуренция выше, чем на более серьезные вакансии. Это позволяет компаниям вводить дополнительный этап собеседования, не сильно боясь случайно потерять хорошего кандидата.
- Позволяет снизить нагрузку на руководителей: проверить код выполненного тестового задания обычно занимает меньше времени, чем полноценное собеседование.
- Тестовое задание будет темой для общения на техническом интервью. Вопросы по Java Core больше показывают навыки запоминать теорию, в то время как реальный код позволит лучше понять уровень кандидата как программиста
- Тестовое задание — необязательный шаг перед собеседованием. Бывают ситуации, когда после технического интервью собеседующий не уверен на 100%: подходит кандидат или нет. В такой ситуации кандидату могут предложить решить тестовое задание, чтобы более объективно оценить уровень.
Какие плюсы для вас от тестового задания
- У вас есть возможность продемонстрировать навыки (написать код), которые вы будете использовать в реальных рабочих условиях. Вы сможете пользоваться любыми источниками информации, которые потребуются, и сможете потратить на задание столько времени, сколько посчитаете нужным.
- Если вы только начинаете своей карьерный путь, то выполнение тестовых заданий и обсуждение потом их на собеседовании с senior разработчиком – это реальный опыт, который будет полезен в любом случае: возьмут вас на работу или нет
В целом, тестовые задания – это противоречивая тема в IT-комьюнити. Некоторые кандидаты не готовы тратить свое время на его выполнение, и они имеют на это полное право. Если у Вас есть категоричная позиция по этому вопросу, то стоит сразу обсудить это с рекрутером на первой беседе, чтобы не было неприятных сюрпризов после нескольких этапов интервью.
Техническое интервью
Здесь все довольно прямолинейно. Компании оценивают hard/soft skills кандидата. Кандидат, в свою очередь, может напрямую пообщаться с потенциальной командой и задать им все вопросы по проекту/компании.
В зависимости от уровня знаний, темы для общения будут значительно отличаться. В целом, чем опытней потенциальный кандидат, тем больше общение с Java Core смещается в сторону обсуждения всей экосистемы и ee проектирования продуктов.
В качестве примера – список тем, которые junior специалист может ожидать на техническом собеседовании (далеко не исчерпывающий):
– Java core
- Коллекции: нарисовать иерархию, объяснить, чем отличается LinkedList и ArrayList, рассказать, как работает HashMap
- Обработка ошибок: Checked vs Unchecked, Exception vs Error, try/catch/finally
- ООП: SOLID, static/non-static методы, интерфейс vs абстрактный класс
- Streams: что это и зачем, могут ли стримы быть бесконечными, intermediate vs terminal operations, map vs flatMap
- Java Memory Model: как устроена память в JVM, как работает GC
– Spring
- Нужно уметь объяснить, зачем он нужен и какие проблемы решает
- IOC и DI
- Bean scopes
- С чем именно из спринга работали, зачем эти компоненты были нужны в вашем проект?
– SQL
- Нужно уметь писать простые запросы
- Знать, что такое JOINs, какие бывают, чем отличаются
- Знать, что такое Aggregate functions, зачем нужны having и GROUP BY
– Вопросы по опыту. Для ребят без реального опыта это могут быть pet-projects, курсовые из университета, проекты с IT-курсов
- В чем суть проекта
- С какими технологиями удалось поработать
- Какие были проблемы/трудности
Несколько советов для технического интервью
- Пишите в резюме то, с чем реально знакомы
На своей практике я видел много примеров, когда кандидаты писали в резюме все технологии, о которых когда-либо слышали. Не надо так делать. Вас, скорее всего, спросят о них, и, если вы совсем ничего не знаете, это подставит под сомнение все остальное ваше резюме.
- Не стесняйтесь говорить, что вы чего-то не знаете
Объем вопросов, которые можно задать, огромен. Если вы с чем-то не знакомы, скажите об этом честно. Я видел много примеров, когда кандидаты либо начинали оправдываться, либо пытаться отвечать “рядом”. Честный ответ сэкономит время и покажет вас, как человека с хорошими soft skills.
- Практические задачи
Встречаются довольно часто. Могут быть в формате:
- Алгоритмическая проблема
- Реализовать простую функцию или спроектировать класс
- Починить неработающую программу
Основной совет – не молчите во время решения! Цель этих вопросов – увидеть, как вы размышляете при решении проблемы. Это может быть сложно, поэтому стоит попрактиковаться перед собеседованием. Возьмите любую простую алгоритмическую задачку и потренируйтесь вслух проговаривать все, что вы думаете и делаете. На собеседовании это пригодится.
- Отстаивайте свою точку зрения без агрессии
Иногда бывает, что интервьюер может начать с вами спорить, чтобы посмотреть, что вы:
- Готовы отстаивать свою точку зрения
- Умеете это делать неагрессивно и вежливо
Помните, что во время ответа на любые вопросы интервьюер оценивает как ваши технические знания, так и софт скиллы, поэтому всегда важно не только, что вы отвечаете, но и как
- Умейте задавать вопросы
Есть такая категория вопросов “Решите мне задачу, но я вам не скажу, какую”. По сути, это симуляция ситуации, когда бизнес-заказчик приходит к вам с абстрактными требованиями, а вам надо получить от него всю информацию, которая нужна для построения решения.
На первый взгляд, это может выглядеть как технический вопрос (например, спроектируйте API, который будет предоставлять погоду в Якутске по запросу). По факту, это проверка на софт скилы. От вас будут ждать вопросов вроде:
- Кто и как часто будет этим пользоваться
- Как часто погода обновляется
- Какую погоду именно надо предоставлять
- Есть ли ограничения по формату
Если вы, не спрашивая никаких вопросов, сразу начнете рисовать диаграммы или писать код, это покажет вас как человека, который не очень желает вникать в суть бизнес-процессов, и просто ждет четко поставленных требований от системной аналитики.
Общие советы для собеседования
- Не бойтесь откликаться на вакансии, которые кажутся вам выше вашего уровня
Чаще всего компании пишут ‘wish list’, каким они видят идеального кандидата. Решать, годитесь вы или нет – задача собеседующих, а не вас. Если компания посчитает, что у вас есть потенциал быть нанятым, они вас позовут.
Когда я только начинал свой карьерный путь, то ходил на все собеседования, где со мной были готовы разговаривать. Это помогло мне научиться воспринимать отказы и дало хороший опыт прохождения собеседований и самопрезентации. Для развития карьеры это очень полезные навыки.
- Внешний вид важен
Никто не ожидает, что вы наденете галстук и пиджак на собеседование, но крайне важно, чтобы вы были опрятным, вежливым, и с вами было приятно общаться. Кроме технических скилов каждого потенциального кандидата оценивают как кого-то, с кем придется общаться больше, чем с семьей и друзьями.
- Не стесняйтесь говорить, на какую зарплату вы рассчитываете
Из моей практики, сделают вам оффер или нет, зависит от ваших скилов и опыта, а не ожиданий по зарплате. Я часто видел, как кандидаты с небольшим опытом занижали свои зарплатные ожидания в надежде, что это увеличит шансы на оффер.
Компаниям нужны компетентные люди, готовые решать бизнес-задачи. Если ваши зарплатные ожидания не соответствуют возможностям компании, то после успешного прохождения собеседований вы начнете стадию переговоров, где попытаетесь найти компромисс.
Полезные материалы:
Если вы определились, что профессия Java-разработчик идеально вам подходит, вам уже не терпится применить советы из статьи на собеседованиях, однако не хватает навыков и скиллов, то ждем вас на курсе “Профессия: Java-разработчик” от ProductStar.
Наш подход – погружение студента в практику сразу со старта. Мы понимаем, что учиться технической специальности только по теории бессмысленно. Нужно уметь отрабатывать полученные знания на практике.
Если вам близок такой подход, и вы хотели бы гарантированно трудоустроиться после завершения обучения, то оставляйте заявку на обучение, и мы будем рады видеть вас в числе наших студентов!