Share This
Связаться со мной
Крути в низ
Categories
//Как пройти собеседование на позицию Java-разработчика?

Как пройти собеседование на позицию Java-разработчика?

Чтобы получить работу, знать программирование на Java недостаточно – нужно найти вакансию и пройти квест по найму. Рассказываем о плане подготовки к интервью, часто встречающихся вопросах по Java Core и Java EE и правильном поведении на собеседовании. Обсудить

kak projti sobesedovanie na poziciju java razrabotchika 088f102 - Как пройти собеседование на позицию Java-разработчика?

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

Отличия в интервью по Java Core и Java EE

Поскольку Java в основном используется как язык прикладного программирования, основное внимание уделяется вопросам, касающимся API, концепций и шаблонов проектирования.

Собеседования по Java меняются в зависимости от опыта кандидата. Например, младшие разработчики с опытом от 1 до 4 лет увидят больше вопросов по таким темам, как основы языка, API, структура данных и алгоритмы.

Более опытные разработчики, с опытом от 5 до 6 лет, получат вопросы о параллельном программировании, API, параллелизме Java, внутреннем устройстве JVM, настройке сборщика мусора и производительности Java.

Собеседования по Java EE сильно отличаются от собеседований по Java Core, поскольку последние в основном сосредоточены на основных концепциях Java, таких, как параллелизм, коллекции и внутреннее устройство JVM. Собеседования по Java EE основаны на JSF, Spring, Hibernate и других.

План подготовки к собеседованию

Существует общий список тем, с которыми стоит ознакомиться, или освежить их в памяти перед собеседованием:

  • основы Java;
  • ООП;
  • Java core;
  • структура данных;
  • многопоточность;
  • сборка мусора;
  • базы данных;
  • фреймворки;
  • сетевые протоколы;
  • устройство JVM;
  • архитектура;
  • паттерны;
  • алгоритмические задачи;

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

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

kak projti sobesedovanie na poziciju java razrabotchika 69b2e9a - Как пройти собеседование на позицию Java-разработчика?

Основы Java

Для самопроверки рекомендуем пройти тест на общие знания для Java-разработчика.

Примеры часто задаваемых вопросов:

  1. В чем важность метода main()?
  2. В чем разница между переменными path и classpath?
  3. Какие есть модификаторы доступа?
  4. Что такое классы-оболочки?
  5. В чем разница между equals () и ==?
  6. Что такое JIT-компилятор?
  7. В чем заключаются особенности языка программирования Java?
  8. Что такое статический импорт?
  9. Что такое Enum?
  10. Что такое композиция?

Java core

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

  1. Как устроена HashMap?
  2. Чем отличается LinkedList от ArrayList?
  3. Разница между String, StringBuffer и StringBuilder?
  4. Разница между интерфейсом Runnable и Callable?
  5. Разница между TreeSet и TreeMap?
  6. Напишите программу на Java, чтобы проверить, является ли число простым или нет?
  7. Как проверить, содержит ли связанный список цикл в Java?
  8. Написать Java-программу для обратного преобразования String без использования API?
  9. Разница между переходным процессом и изменчивым в Java?
  10. Разница между абстрактным классом и интерфейсом?

ООП

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

  1. Что такое перегрузка методов в ООП или Java?
  2. Какой метод скрытия используется в Java?
  3. Является ли Java чистым объектно-ориентированным языком?
  4. Каковы правила перегрузки и переопределения методов в Java?
  5. Какова разница между перегрузкой метода и переопределением?
  6. Можем ли мы предотвратить переопределение метода без использования модификатора final?
  7. Что такое ковариантный метод переопределения в Java?
  8. Можем ли мы изменить возвращаемый тип метода на подкласс при переопределении?
  9. Как вы вызываете суперклассовую версию метода переопределения в подклассе?
  10. В чем разница между абстракцией и полиморфизмом в Java?

Структура данных

Подробнее о структурах данных мы рассказывали в статье «Алгоритмы и структуры данных: развернутый видеокурс».

Примеры часто задаваемых вопросов:

  1. Чем дерево отличается от графа?
  2. Что такое АВЛ-деревья?
  3. Чем стек отличается от очереди?
  4. Какие классы в Java реализуют стек или очередь?
  5. Чем LinkedList отличается от ArrayList?
  6. Что такое HashSet?
  7. Чем HashSet отличается от TreeSet?
  8. Как работает HashMap?
  9. Найдите средний элемент односвязного списока за один проход.
  10. Как реализовать бинарное дерево поиска?

Многопоточность

Не все программисты работают с многопоточностью, но базовые вещи стоит знать хотя бы в теории.

Примеры часто задаваемых вопросов:

  1. Что такое поток?
  2. В чем разница между потоком и процессом?
  3. Как реализовать потоки?
  4. Когда нужно использовать Runnable vs Thread?
  5. В чем разница между методами start () и run () класса Thread?
  6. Что такое модель памяти Java?
  7. Что такое volatile?
  8. Что такое изменчивая переменная в Java?
  9. Что такое потокобезопасность? Vector – это потокобезопасный класс?
  10. Что происходит, когда в потоке возникает исключение?

Сборка мусора

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

  1. Какова структура Java Heap? Что такое пространство Perm Gen в куче?
  2. Как определить незначительную и основную сборку мусора в Java?
  3. В чем разница между сборщиками мусора ParNew и DefNew Young Generation?
  4. Как вы обнаружите, что сборщик мусора привел к вызову System.gc ()?
  5. В чем разница между последовательным и пропускным сборщиками мусора?
  6. Когда объект получает право на сборку мусора в Java?
  7. Что такое метод finalize в Java? Когда сборщик мусора вызывает метод finalize?
  8. Как отслеживать действия по сбору мусора?
  9. Можно ли принудительно запустить сборщик мусора в любое время?
  10. Происходит ли сборка мусора в постоянном пространстве генерации в JVM?

Базы данных

Освежите в памяти ваши знания по SQL и JPQL.

Примеры часто задаваемых вопросов:

  1. Реляционные и нереляционные БД – в чем разница? Что и когда использовать?
  2. Как строится запрос SQL?
  3. Какие виды join-ов существуют?
  4. Чем having отличается от where?
  5. Были ли у вас в практике случаи оптимизации запросов?
  6. Приходилось ли смотреть план выполнения запроса?
  7. Что такое entity manager?
  8. Что такое persistence context?
  9. Что такое JPQL и чем он отличается от SQL?
  10. Что означает полиморфизм в запросах JPQL и как его «выключить»?

Фреймворки

В большинстве случаев требуется Spring.

Примеры часто задаваемых вопросов:

  1. Transactional – как она работает? Что в ней можно дополнительно настроить?
  2. Назовите различные модули фреймворка Spring.
  3. Перечислите некоторые важные аннотации в конфигурации Spring на основе аннотаций.
  4. Объясните Bean в Spring и перечислите различные области применения Spring bean.
  5. Объясните роль DispatcherServlet и ContextLoaderListener.
  6. В чем разница между внедрением конструктора и внедрением установщика?
  7. Как обрабатывать исключения в Spring MVC Framework?
  8. Какие важные аннотации Spring вы использовали?
  9. Как интегрировать Spring и Hibernate Frameworks?
  10. Назовите типы управления транзакциями, которые поддерживает Spring.

Сетевые протоколы

Повторите уровни модели OSI и основные протоколы: tcp, udp, https:

  1. Что такое IP-адрес?
  2. Что такое веб-сервис?
  3. Какие существуют типы веб-сервисов?
  4. В чем отличие host и domain?
  5. Какие методы в HTTP вы знаете?
  6. Чем отличаются методы GET, POST и HEAD?
  7. Что такое REST?
  8. Зачем нужен класс Calendar в Java?
  9. Как преобразовать дату в Java к нужному формату?
  10. Отличие классов Socket и URL?

JVM

Одна из многих черт хорошего программиста – хорошее понимание основ. Если вы хотите проверить основы программирования на Java, вопрос о разнице между кучей и стековой памятью – хороший выбор. Несмотря на то, что оба являются частью JVM и выделенной для процесса Java памятью потребителя, между ними есть много различий.

Примеры часто задаваемых вопросов:

  1. Что такое куча и стек?
  2. Как хранятся объекты в JVM?
  3. Что такое string pool?
  4. Что обеспечивает принцип happens before?
  5. Как работает сборщик мусора?
  6. В чем разница между потоком пользователя и потоком демона?
  7. Что такое OutOfMemoryError в Java?
  8. Можно/нужно ли обрабатывать ошибки JVM?
  9. В чем разница между ошибкой и исключением?
  10. Объясните что такое JDK, JRE и JVM.

Архитектура

  1. Когда нужно использовать микросервисы, а когда монолит?
  2. Использовали ли вы eureka или consul?
  3. В чем разница между Hibernate и JDBC?
  4. Каковы преимущества использования Hibernate перед JDBC?
  5. Выгодно ли использование среды Spring для разработчиков Java?
  6. Если у вас есть приложение Java с подключением к базе данных, которое необходимо улучшить, как бы вы его улучшили?
  7. Как избежать тупика базы данных?
  8. Что такое шардинг и насколько он полезен?
  9. Что такое масштабируемость?
  10. Что такое балансировка нагрузки?

Паттерны

Никто не потребует перечислять все существующие паттерны, но некоторые, используемые в Java или Spring, знать надо. Например Immutable, Singleton, Prototype, Builder, Proxy, Abstract factory, Wrapper.

Разное

На интервью могут поинтересоваться, знакомы ли вы с Agile, Git или Gitflow, REST/SOAP, Docker, и Kubernetes. Также встречаются вопросы об использовании в работе функциональных и интеграционных тестов.

kak projti sobesedovanie na poziciju java razrabotchika d6e16e4 - Как пройти собеседование на позицию Java-разработчика?

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

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

Про себя

Работодателя наверняка заинтересует практический опыт кандидата, поэтому даже самые простые ответы стоит иллюстрировать примерами из решенных вами задач. Интервью может включать вопросы о мотивации, степени ответственности, амбициях и поведенческих особенностях соискателя. Их цель – побольше узнать о том, как вы работаете в коллективе, справляетесь с нестандартными задачами и авралами. Подготовиться к ним поможет статья «Как легко пройти собеседование».

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

***

Обучение программированию на Java

Если вы решите подтянуть знания по Java, в нашей библиотеке найдется множество статей на эту тему. Освоить востребованную профессию также поможет Факультет Java-разработки GeekBrains. Онлайн-академия приглашает студентов на курсы основного обучения и факультативы от компаний-партнеров. Занятия ведут опытные преподаватели, а личный наставник помогает разобраться с возникающими затруднениями. Успешно окончившие курс студенты получают не только диплом о профессиональной переподготовке, но и помощь в трудоустройстве.

Интересно, хочу попробовать!

  • 12 views
  • 0 Comment

Leave a Reply

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Свежие комментарии

    Рубрики

    About Author 01.

    blank
    Roman Spiridonov

    Моя специальность - Back-end Developer, Software Engineer Python. Мне 39 лет, я работаю в области информационных технологий более 5 лет. Опыт программирования на Python более 3 лет. На Django более 2 лет.

    Categories 05.

    © Speccy 2020 / All rights reserved

    Связаться со мной
    Close