Вернуться в видеотеку

Собеседование Java Junior | Jetbulb

Развёрнутое мок-интервью по Java Core для начинающего Java-разработчика. Ведущий задаёт уточняющие и провокационные вопросы, исправляет неточности и подводит итоги подготовки кандидата.

Источник: Максим Добрынин | ex. Jetbulb

Открыть на YouTube

Таймлайн

Коротко о видео

Это учебное мок-интервью на позицию Java Junior: ведущий проверяет Вадима по Java Core и уточняет ответы на вопросы с подвохом. Разбираются ООП, SOLID, паттерны, строки, классы-обёртки, Object, коллекции, исключения, многопоточность и Generics. В конце кандидат отмечает пробелы в Spring и базах данных и планирует готовиться к реальным собеседованиям после следующего курса.

Затронутые темы

Что взять на заметку

  • Для интервью по ООП нужно различать инкапсуляцию, наследование, композицию и агрегацию, а также помнить, что вложенный пакет не входит в область package-private доступа родительского пакета.
  • Композицию обычно выбирают как более гибкую альтернативу наследованию для отношений «has-a»; интерфейсы следует делить по реальным потребностям реализаторов, а не дробить заранее без оснований.
  • Нужно уверенно объяснять String Pool: строковый литерал использует существующий объект из пула либо создаёт его там, тогда как new String(...) создаёт отдельный объект.
  • StringBuilder уменьшает число промежуточных объектов String при множественных конкатенациях; StringBuffer отличается синхронизацией и нужен только при соответствующей потребности в потокобезопасности.
  • Для HashMap важен контракт equals/hashCode: hashCode определяет корзину, а equals разрешает коллизии; в Java 8 длинные цепочки коллизий могут преобразовываться в дерево, давая логарифмический доступ в таком случае.
  • ArrayList быстрее для доступа по индексу, LinkedList — для операций со ссылками при уже найденном узле; удаление элемента из середины всё равно требует учёта стоимости поиска.
  • В многопоточном коде нужно различать happens-before, видимость, атомарность, race condition и область действия synchronized: несинхронизированный метод того же объекта может выполняться параллельно.
  • В Generics параметры типа стираются во время выполнения; static-метод объявляет собственный параметр типа, а ограничение типа параметра класса задаётся через <T extends BaseEntity>, не wildcard.

Рекомендуем посмотреть