Подготовка к собеседованию Java разработчика


Оглавление

Цели собеседования:

Цель собеседования это не только проверить технические навыки соискателя на должность Java разработчика, но и проверить его софт скилы, как общается, как реагирует на ситуации, когда не знает ответа и как думает.
Софт скилы наверное даже более важны чем техника, техника от проекта к проекту отличается и ее можно подтянуть, но если человек не сможет ужиться в команде, его придется уволить, а увольнение не всегда простое мероприятие.

Формат собеседования:

Обычно собеседование занимает один час, реже полтора часа. Два часа — это очень редкий формат.
Стандартное время собеседования занимает час. И этот час делится на несколько отрезков:

  • Первые 5 – 10 минут это вопрос к соискателю, что бы он рассказал вкратце о себе. Цель данного этапа понять как соискатель себя позиционирует, на каких моментах делает акцент. Не всегда это осознанно, но так или иначе нужно уметь представить себя и свою ранее проделанную работу.
  • Следующие 35 – 45 минут это технические вопросы. Тут важно сильно не буксовать, не закапываться в детали (если не просят подробностей). Потому что кол-во времени ограничено, а так много всего нужно спросить. И если вопрос по теме не успеют задать, то скорей всего вы собеседование не пройдете, потому что не успеете раскрыть свой потенциал.
  • И завершающие 5 – 10 минут это время на то чтобы задать вопросы компании от соискателя. Запретных тем нет. И это тоже очень важно, в зависимости от позиции, на которую хотите устроится, нужно задавать свой набор вопросов, которые так же оставят о вас положительные эмоции.

Как проверяют техническую подкованность соискателя:

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

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

Основа, которую нужно знать для собеседования Java разработчика:

  • Spring Core – это, наверное, один из главных фреймворков, которые используются в разработке. Есть команды, которые против таких вещей, или они не подходят под них задачи. Но если вы знаете Spring Core – то это хороший задел для прохождения 99% собеседований.
  • Spring Boot – важно знать чем отличается от Spring (Core). Зачем его используют.
  • Spring Boot Starter – тоже нужно знать. Еще лучше если вы писали свой, или хотя бы знаете из чего они состоят, как запускаются, конфигурируются и т.п.
  • ООП — это азы, знать надо. На вакансии Senior уже не спрашивают, но если вдруг начали спрашивать такое, значит где-то вы сильно прокололись и собеседники пытаются прощупать дно, а точно вы Senior Java Developer.
  • Java Core – очень много всего, начиная от коллекций и заканчивая JMM. (Exceptions, Concurrency, Transactions, Collections Framework, Java Memory Model)
  • Unit тестирование – какие фрейморки есть, какие подходы. Сюда же могут попасть вопросы про Spring Test Framework.

Дальше будут вопросы про БД и фреймворки JPA и тп:

  • JDBC – нужно понимать, как устанавливается соединение с БД. Какие операции дешевые, а какие дорогие. Тут можно еще про пул рассказать
  • JPA и реализации (Hibernate, Eclipse и тп) – тут главное не путать спецификацию и реализацию, очень часто задают такие вопросы с подковыркой
  • SQL и СУБД
  • Кэширование – как работает, какие уровни есть

После будут вопросы уже чуть более специфичные для конкретного проекта. Если в проекте используется для взаимодействия сервисов gRPC, то точно будут вопросы про него и тп:

  • WebService – по-хорошему нужно знать как запрос из браузера, попадает в конкретный Java класс, который его обрабатывает. Тут точно нужно знать как работают сервелеты. (Filter, Dispatcher и тп);
  • gRPC – какие отличия от REST. Какие преимущества и какие минусы.
  • Rest – точно нужно знать какие сервисы можно назвать Restfull, HAETOAS;
  • JSON и XML – тут нужно понимать, что за форматы, как описывать их схему. Плюсы и минусы обоих форматов.
  • JMS, MQ – нужно рассказать какие брокеры использовали и тп. Если не использовали, то нужно познакомиться как минимум Kafka, ActiveMQ, ReabitMQ;

Еще будут вопросы про дизайн и архитектуру:

  • Шаблоны программирования, нужно найти в своем опыте использование паттернов и описать;
  • Точно будут вопросы про SOLID, ACID, GoF и тп;
  • Вопросы по проектированию ПО;

Так же будут вопросы про процессы, как устроена разработка, как вы понимаете выпуск продукта:

  • Автоматизация сборки – Gradle, Maven – в чем разница. Еще бы хорошо уделить внимание, на сколько ли медленней работает Maven;
  • VCS – точно нужно знать азы, как коммитить, как решать мердж конфликты и тп.;
  • CI/CD – что это такое, какие системы использовали;
  • Agile и SCRUM;

Что нужно спросить соискателю:

  • Первое что нужно узнать – это как работает команда, по каким процессам. Это многое расскажет о том как устроена команда, и какие процессы есть;
  • Еще очень важно знать, как работает процесс доставки артефактов. Это многое расскажет о зрелости команды и процессах в команды;
  • Нужно спросить про оборудование, на котором предстоит работать. Можно ли выбрать конфигурацию оборудования или будет предложен стандартный ноутбук.
  • Так же стоит уточнить как выглядит процесс работы. Нужно ли будет подключатся по VPN. Нужно ли будет использовать удаленный рабочий стол, стоит ли какой-нибудь трекер времени и тп? Это очень важно, так как влияет на уровень комфорта при работе.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *