Расскажу быстренько о себе. Мне 25 лет, родился в Крыму, г. Феодосия. Учился в техникуме городском, потом поступил в Харьков, получил диплом бакалавра и в 2014 году вернулся обратно домой. В 2014 поступил на заочное обучение на магистра (все специальности были кое-как связанны с программированием), и в 2015-м году поступил в армию на контрактную службу сроком на 3 года. После двух лет службы в армии я понял, что надо что-то менять в своей жизни... 23 вопроса, часто задаваемых на собеседованиях - 1И вот мне попадается JavaRush в декабре 2017 года, и я начинаю упорно учить Java. Летом я попадаю на курсы Topjava к Григорию, начинаю проходить каждое его занятие, и к середине сентября должны были закончатся трехмесячные курсы. В общем, в начале сентября я переезжаю в Москву с женой для поиска работы Java программистом и на сегодняшний день прошел примерно 10 собеседований. Я вам напишу то, что постоянно спрашивают и вопросы, на которых я сыпался.
  1. Что такое JDK,JRE,JVM и компилятор. This is must have. Если вам зададут на собеседовании этот вопрос и вы не ответите на него, скорее всего, дальше ничего спрашивать не будут. Маленькое видео с youtube

  2. Объектно ориентированное программирование (ООП). Тут главное рассказать, что такое полиморфизм. Могут попросить перевести это слово, потом нужно рассказать его определение соответственно. Можно рассказывать все своими словами. Потом приводите свои примеры.

    Доп. литература : Полиморфизм

    Видео: Введение в ООП

  3. Множественное наследование в Java.В Java запрещено множественное наследование классов, но разрешено множественное наследование интерфейсов. О наследовании

  4. Методы класса Object (желательно каждый метод посмотреть прямо в самом коде и обратить внимание на Equals и hashCode). Я называл так: getClass, finallize (прочитайте о нем, мало ли зададут вопрос, но запомните: как по мне — ЭТО КОСТЫЛЬ), wait (достаточно знать, что там 3 перегруженных метода) notify, notifyAll, equals и hashcode (обязательно!!! знать 4 правила equals и обязательно знать закон между equals и hashCode).

    Object Java

  5. JVM изнутри. Stack и Heap память.

    Память

  6. Что за ключевое слово new и как оно работает. Материал не нашел, но у меня спрашивали о нем, а точнее, когда мы пишем к примеру

    
    A a = new A()
    

    что происходит перед равно и после равно?

    Перед равно у нас создается ссылка, а после равно у нас создается с помощью ключевого слова new новый объект, который помещается в память Heap в виде набора байт.(если я не прав потом поправьте пожалуйста меня)

  7. Работа Garbage Collection — не очень часто спрашивали, но когда спрашивали начинали копать, насколько я знаю данную тему. Отличная статья на тут

  8. Порядок инициализации полей классов родителя и потомка

  9. Коллекции: приходилось рассказывать абсолютно всю иерархию и работу каждой коллекции.

    Вопрос, чем отличается List от Set. Самое главное — сказать, что из себя представляет интерфейс List. Если вы ответите, что Set — коллекция с уникальными объектами, этого будет недостаточно.

    HashMap, HashSet — начальный размер; capacity, loadfactory, null допускается или нет? Как вычисляется ячейка для объекта при работе с Hash коллекцией? Отличие HashMap от TreeMap (недостаточно сказать, что TreeMap — отсортированная коллекция, по алгоритму красно-черное дерево). Знать алгоритмы вставки, удаления, поиска o каждой коллекции. Queue, Deque, Stack — редко задавали мне вопросы о них. Нужно знать, где интерфейс, а где классы в коллекциях.

    23 вопроса, часто задаваемых на собеседованиях - 2

    Обратите внимание на то, что у Collections есть родитель Iterable

    ссылка от нашего участника)

  10. Java 8. Абсолютно по максимуму должны выжать из себя все что знаете о "нововведениях", выпущенных 4 года назад: вот вам источник Новое в Java 8

    У меня спрашивали о consumers, function и т.п., потом спрашивали о функциональных интерфейсах, потом спрашивали, как создать свою аннотацию, что означает например @SomeAnnotation (name = .... count =....), а именно, что тут name, count и как они работают при создании своей аннотации.

  11. Generics. Все о дженериках. Спрашивают везде.

    Дженерики

  12. Потоки. Thread, Runnable, чем отличаются, как запустить поток. Все о синхронизации. Мьютексы, мониторы, класс Lock. Deadlock когда возникает, приведи те примеры.

  13. Иерархия исключений checked/unchecked, написать свой класс исключения.

    23 вопроса, часто задаваемых на собеседованиях - 3
  14. Final, finallize(опять), immutable, finally. Когда не отработает блок finally.

  15. Как запретить наследования классов (приватные конструкторы, финал класс...).

  16. IO / NIO потоки.

  17. ПАТТЕРНЫ. Выучите хотя бы 5 штук основных (mvc, factory, decorator, singleton, наблюдатель).

  18. Spring ioc, di, ioc - container. Вот вам ссылка на практическое понимание, мне очень помогло... SPRING. Я тут по спрингу прошел до 16 главы, писав вручную весь код. Советую и вам поступить так же.

  19. Maven -> профили, артефакты, war, jar... виды scope. Какие параметры задавать надо при подключении библиотек.

    MAVEN

  20. Что такое ORM? как работает? (изи ответ).

    Hibernate: как связывается с базой данных, что должно быть обязательно при создании класса Entity. Session. 3 уровня кэширования — знать. Как связать таблицу и класс entity. Связи:

    Многие ко многим, один ко многим и т.п.

    Если у нас есть связь, например, User у которого много Book. Как будет выглядеть поле в классе User и поле в классе Book (это там где указывается аннотация многие ко одному и один ко многим над полями).

    Что такое JPA, каким образом он связан с Hiber. JPAQL.

    Hibernate

  21. Следующий вопрос будет по SQL. Запросы, какие знаешь, что использовал. JOIN — внешний, внутренний, левый, правый.

    sql

    Задача из компании: 2 таблицы дано, департамент и сотрудник. Вот пример.

  22. Горизонтальное масштабирование .

    Маленькое видео на тему вертикального и горизонтального масштабирования
  23. Немного html, css, js.

  24. Git. Работа в консоли. commit, push, в чем отличие fetch от pull.

Напоследок, советую читать этот список вопросов и искать ответы самому (качаем навык "гуглить") и писать код для закрепления. P.S. : статья моя первая, так что по-любому будут недостатки, пишите, буду очень рад комментариям. Дополнительная литература, если вам этого еще не достаточно: