Виммельбух, 3, перетяжка
Виммельбух, 3, перетяжка
Виммельбух, 3, перетяжка

Современные требования к Java-разработчику: о чём вас спросят на собеседовании

Аватар Анна Чуватова
Отредактировано

Требования к Java-разработчику не ограничиваются Java Core, особенно на ведущих позициях. О чём еще вас могут спросить на собеседовании?

25К открытий25К показов

В этой статье Java Team Lead EPAM Олег Клименко рассказал, что, помимо Java Core, требуется от разработчиков на разных этапах карьеры. Олег прошёл большой путь к текущей позиции: получил классическое образование по направлению «Прикладная математика и информатика», дорос до архитектора решений, какое-то время занимал менеджерскую позицию, но решил вернуться к кодингу и пришёл на позицию Lead Software Engineer в EPAM. Статья поможет разобраться, о чём сегодня могут спрашивать Java-разработчиков на интервью.

Базовые требования к Java-разработчику

Java Core и JDK

Конечно, основной навык Java-разработчика — это знание Java Core, языка программирования и встроенного фреймворка JDK. Раньше на собеседованиях в основном спрашивали про Java Core, но теперь, когда появилось много других фреймворков, этим вопросам уделяют только половину интервью или вообще ограничиваются несколькими вопросами. Особенно это видно в интервью на старшего и ведущего разработчика — здесь вопросов про Java Core всё меньше и меньше.

Также в интервью на позицию middle и senior обычно дают задачи на проверку навыков написания кода — интервьюер озвучивает какую-то проблему, которую надо решить. Разные интервьюеры по-разному оценивают выполнение — кто-то ждёт от кандидата хоть какое-то решение, а кто-то смотрит на то, как человек думает, даже если он не достиг решения.

Spring

В enterprise-разработке — на проектах для крупнейших корпораций — спрашивают Spring. Этому фреймворку посвящают вторую часть интервью. Спрашивают как теорию, так и практические задачи, про жизненный цикл bean — это главная сущность в Spring — или что будет, если создать и назвать bean тем или иным способом, если сделать для bean разные атрибуты и т.д. На уровне senior ожидаются глубинные знания фреймворка, включая умение писать собственную библиотеку компонентов, подключать её автоматически, настраивать.

Java Core и Spring — это стандартные требования для Java-программиста. Далее многое зависит от проекта, сферы компании.

Алгоритмы

Алгоритмы спрашивают чаще в финансовой сфере, криптографии, блокчейне, интернет-компаниях. Иногда это теоретические вопросы с целью проверить глоссарий и понимание основ, а иногда — алгоритмические задачи. Некоторые задачи даются в общих терминах — что-нибудь про Чебурашку и Гену и надо придумать алгоритмы.

Git

Git пришёл лет 5–7 назад на смену Subversion (SVN), Perforce и иногда по нему тоже бывают вопросы на интервью — как сделать ветку, как запушить, чем отличается merge от rebase.

Новые требования к Java-разработчику

Если хотите расти дальше по направлению Java и хотите участвовать в новых интересных проектах, то придётся выходить за рамки своего стека и изучать новые инструменты.

CI/CD

С уровня синьор работодатели ждут от Java-разработчика знание CI/CD. Как минимум нужно знать, что происходит на разных стадиях сборки. Например, на стадии валидации нужно знать, что такое Quality Gate, чек-стайл, Sonar. Не ожидается, что Java-разработчик будет их настраивать, но чтобы взаимодействовать с DevOps, нужно знать, для чего они, на каком этапе применяются, и где их лучше настраивать — в билд-пайплайне, в коде, Jenkins, Maven, Gradle. Иногда ведущего Java-разработчика могут попросить по шаблону настроить CI/CD в Jenkins, например на начальных этапах проекта, когда команда небольшая.

Репозитории

В последние годы пришло новое требование к Java-разработчику — это стратегия управления ветками Trunk Based Development. Суть заключается в том, что изменения не складируются в отдельные ветки, а сразу уходят в продакшен, если коммит проходит все автоматические проверки CI/CD.Это практика становится всё популярнее, потому что экономит много времени.

В целом есть три кита, на которых стоит Trunk Based Development — автоматическое тестирование, CI/CD, который позволяет выходить в производство мелкими изменениями сразу, без ожидания больших релизов, и переключатель функций (англ. feature toggle). «Фича тогл» позволяет настройками отключать и включать новые доработки в продакшне без вторичного развертывания.

Облака

Следующее требование к Java-программисту — это знание облачных технологий для лидов, иногда для синьоров. Знание Amazon Web Services (AWS) или Google Cloud Platform (CGP) я вижу почти в каждой вакансии. Американские компании требуют AWS, европейские чаще GCP. На проектах в российских компаниях такие требования встречаются реже, российские компании используют Yandex.Cloud.

Docker

Часто вследствие работы с облаками требуется знание Docker. В целом Docker становится сейчас базовым инструментом — можно работать в Docker и не работать с облаками, но если вы работаете в облаке, то Docker используется наверняка. Глубокие знания Java-разработчику не нужны, чаще всего на интервью задают поверхностные вопросы — например, «какие команды в Docker знаете».

Spring Cloud

Из работы с облаками вытекает требование ― знание Spring Cloud. Это одна из библиотек в Spring Boot, предназначенная для работы с облаком.

Kafka

Инструмент, который всё чаще используется в распределённой архитектуре. Может встретиться и другой брокер ― RabbitMQ, но он теряет популярность.

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

Другие требования к Java-разработчику

Остальные вещи нишевые и зависят от проектов. Где-то требуются фреймворки для поиска, где-то для NoSQL и знание NoSQL баз данных. Чаще в современных архитектурах помимо реляционных баз присутствуют нереляционные, они не заменяют реляционные, сосуществуют параллельно со своими типами данных. Полезно иметь представление, что это такое, какие плюсы минусы работы, например, с MongoDB или другой документно-ориентированной базой данных.

Книги для тех, кто хочет знать Java на продвинутом уровне

  • «Философия Java» — Брюс Эккель
  • «Java. Эффективное программирование» — Джошуа Блох
  • «Чистый код. Создание, анализ и рефакторинг» — Роберт Мартин
Если вы крутой Java-программист и ищете работу — заходите на специальную карьерную страницу EPAM. Там можно узнать больше про команду, стек и проекты, найти ссылки на профессиональные сообщества и оставить заявку на личное общение.
Следите за новыми постами
Следите за новыми постами по любимым темам
25К открытий25К показов