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

Техническое интервью Java Developer - Артем Рутковский

Разборочное мок-интервью по Java Junior: от фундаментальных вопросов до Spring и многопоточности. В финале кандидат и интервьюер пошагово исправляют решение задачи с generic-массивом.

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

Открыть на YouTube

Таймлайн

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

Тренировочное техническое интервью для Junior Java Developer с Артёмом Рутковским: кандидат отвечает на вопросы по Java, а интервьюер уточняет и разбирает неточные места. Обсуждаются ООП, SOLID, память, Object/equals, коллекции, исключения, многопоточность, generics, Java 8+, Spring и Spring MVC. В практической части разбирают преобразование обобщённого List в массив, ClassCastException, ковариантность массивов, инвариантность generics и создание типизированного массива через Array.newInstance.

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

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

  • Подготовить объяснение инкапсуляции и Interface Segregation Principle: пустая реализация ненужного метода интерфейса указывает на слишком широкий контракт.
  • Различать примитивные и ссылочные типы, назначение stack и heap, а также сравнение примитивов, ссылок и объектов через equals.
  • Знать контракт equals: по умолчанию он сравнивает ссылки; для смыслового сравнения собственных объектов метод переопределяют по значимым полям и соблюдают рефлексивность, симметрию, транзитивность и консистентность.
  • Для сортировки объектов без переданного Comparator нужно реализовать Comparable; Collections.sort делегирует List.sort, а Comparator нужен для другого порядка сравнения.
  • Различать checked и unchecked исключения, throw и throws, роль finally и преимущество try-with-resources для автоматического закрытия AutoCloseable-ресурсов.
  • Generics работают только со ссылочными типами и могут объявляться на уровне класса или отдельного метода; область действия параметра типа зависит от места объявления.
  • Для задачи List<T> → T[] учитывать type erasure: массив хранит тип во время выполнения, а generics — нет; типизированный массив можно создать через Array.newInstance, передав Class<T> и размер.

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