Как пройти интервью в Luxoft на позицию Java: чек-лист полезных советов

Язык программирования Java считается самым популярным в мире — на этом языке, пишут и сложные финансовые системы для банков, и развлекательные медиа-порталы, и приложения для мобильных телефонов, и трейдинговые платформы.

7 комментариев
Михаил Гедзберг, директор филиала Luxoft в Санкт-Петербурге
Директор филиала Luxoft в Санкт-Петербурге Михаил Гедзберг подготовил советы для Java-разработчиков, которые хотят получить работу в проектах компании Luxoft и поделился тем, на что обращают внимание работодатель при техническом собеседовании. Конечно, большинство рекомендаций носят универсальный характер и пригодятся при подготовке к собеседованию в большинстве IT-компаний.

Популярность Java приводит к сильной конкуренции на ИТ-рынке. На основании опыта рекрутеров компании Luxoft на одну вакансию программиста Java рассматривается в среднем 5 соискателей. Для трудоустройства в подходящую компанию недостаточно прочитать пару книг или просмотреть ролики на YouTube. Требования как к опытным кандидатам, так и новичкам только увеличиваются.

Резюме кандидата начинается с релевантного опыта. В зависимости от сложности проекта, его длительности, обилия используемых технологий (не просто Java Core), руководитель может ожидать от кандидатов релевантный опыт в разработке от 3-5 лет, на более сложных проектах и на senior-позициях — от 8 лет.

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

Как подготовиться к собеседованию?

Приведенные ниже темы покрывают лишь часть возможностей языка Java, но они являются основой, в этих вопросах профессиональный Java-программист должен разбираться на 5+, иметь свое мнение и отвечать на вопросы потенциального работодателя.

Итак, заранее лучше освежить в памяти следующие темы:

  1. Алгоритмы и структуры данных (Algorithms & Data structures)
    • Типы данных
    • Виды сортировок
    • Поиск в бинарном дереве
    • NP-полный алгоритм
    • Исправление цикличной зависимость
  2. Коллекции (Collection)
    • Интерфейсы (Collection, Set, Map, Queue)
    • Сравнение TreeSetи TreeMap
    • Разница Hashtable и ConcurrentHashMap
  3. Исключение (Exceptions)
    • Различия Errorи UncheckedException
    • Как избегать catch блока
    • Сравнение NoClassDefFoundErrorи ClassNotFoundException
  4. Управление памятью и сборка мусора (Memory & GC)
    • Какова структура Java Heap?
    • Что такое метод finalize в Java?
    • Принципы Garbage Collector
    • Какие есть утилиты для мониторинга JVM?
    • Сравнение Perm Space и Metadata space в Java 8
  5. Многопоточность
    • Сравнение потока и процесса
    • Что такое volatile?
    • Что такое потокобезопасность (thread safe) и как ее добиться?
  6. Объектно-ориентированное программирование (OOP)
    • Различия между перегрузкой и переопределением метода?
    • Можем ли мы предотвратить переопределение метода без использования модификатора final?
    • SOLID принципы

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

Базы данных

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

Да, у баз данных есть общая часть — SQL, но даже тут есть различия — например, MS SQL или Oracle. Добавим в этот список PostgreSQL и MySQL. Первые две — стандарт больших корпоративных систем, последние две — малых или средних.

Для доступа к базам данных существует два разных подхода: JDBC и Hibernate.

Выделим несколько топиков по этой теме, о которых может зайти речь на собеседовании:

  • преимущества и недостатки Hibernate по сравнению с JDBC;
  • какие существуют стратегии загрузки данных в Hibernate;
  • назовите аннотации, используемые в Hibernate.

Если ваша платформа получает данные в режиме реального времени, то в мире Java без JMS вам не обойтись.

Следует четко понимать:

  • из каких компонент JMS состоит;
  • основные интерфейсы JMS;
  • стандартные типы JMS-сообщений.

Львиная доля мировых систем работает на Unix-подобных операционных системах. Программист, который пишет код на Java и не знает, как запустить свое приложение, просмотреть лог-файлы, настроить демо, явно будет проигрывать. Поэтому здесь уже правильнее говорить не о Java-программисте, а о Java-инженере. Это сотрудник, который умеет писать код, эффективно взаимодействовать с другими участниками команды, следовать SDLC-процессам, инженерным практикам (CI/CD, XP, Scrum/SAFE, Code coverage, BDD).

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

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

Практическая часть

Ну и напоследок можно порекомендовать некоторые книги, которые помогут освежить знания о Java и лучше подготовиться к собеседованию:

  1. Джошуа Блох «Эффективная Java» («Effective Java: Programming Language Guide»);
  2. Крейг Уоллс «Spring в действии» («Spring in Action»);
  3. Бауэр Кристиан «Java Persistence API и Hibernate» («Java Persistence with Hibernate»);
  4. Роберт Мартин «Чистый код» («Clean Code»);
  5. Роберт Седжвик «Алгоритмы на Java» («Algorithms In Java»);
  6. Мартин Фаулер «Рефакторинг. Улучшение существующего кода» («Refactoring. Improving the Design of Existing Code»);
  7. Джез Хамбл «Непрерывное развертывание» («Continuous Delivery»);
  8. Майкл Нейгард «Release it! Проектирование и дизайн ПО для тех, кому не все равно» («Release It!»).

Все вакансии Luxoft


Читать на dev.by