Техническое интервью Java Developer - Михаил Кончиц
Учебное интервью по Java для Junior-разработчика с вопросами, уточнениями и практическими задачами. Основные темы — Java Core, коллекции, Spring и веб-слой.
Максим Добрынин | ex. Jetbulb
Открыть на YouTube- Опубликовано на YouTube:
- Просмотры на YouTube: 19,6 тыс.
- Лайки на YouTube: 410
Таймлайн
Коротко о видео
Запись учебного технического интервью на позицию Junior Java Developer с Михаилом Кончицем. Участники последовательно разбирают ООП, Object, equals и clone, строки, исключения, Collections Framework, Spring IoC/DI, Spring MVC и HTTP. В нескольких блоках кандидат решает практические задачи: реализует глубокое клонирование, создаёт и копирует коллекции, сортирует числа через Comparator.
Затронутые темы
Что взять на заметку
- Для clone() нужно понимать различие shallow copy и deep copy: при глубоком копировании для ссылочных полей создаются независимые вложенные объекты, иначе оригинал и копия разделяют одну ссылку.
- Метод Object.clone() требует Cloneable, изначально protected и по умолчанию выполняет поверхностное копирование; в практической задаче это проверяют изменением вложенного Address после клонирования.
- equals() по умолчанию сравнивает ссылки, поэтому для сравнения состояния объектов его переопределяют и соблюдают контракт: рефлексивность, симметричность, транзитивность, согласованность и false для null.
- Строки String неизменяемы; обсуждаются string pool, лишние промежуточные строки при конкатенации и использование StringBuilder при накоплении строк, особенно в циклах.
- Ведущий подчёркивает, что checked и unchecked исключения технически различаются обязательностью обработки; также он высказывает мнение, что checked exceptions могут раскрывать детали реализации и часто менее предпочтительны.
- Нужно уметь объяснить, что ArrayList основан на массиве и при росте capacity создаёт новый массив с копированием элементов, а LinkedList — связный список; for-each доступен объектам, реализующим Iterable.
- Для Spring важно знать назначение IoC-контейнера, способы DI через поле, setter и конструктор, scope бинов, отличие Controller от RestController, а также Content-Type и Accept в HTTP-заголовках.