Вернуться в видеотекуКоротко о видео
Это учебное техническое интервью на позицию Junior Java Developer с Алексеем Гуменом, который рассказывает о переходе из HelpDesk в Java и о примерно пяти годах опыта в ИТ с учётом обучения. Интервьюер последовательно проверяет основы ООП, паттерны, типы и передачу аргументов, Object/equals/hashCode, строки, коллекции, HashMap, многопоточность и Spring. В практической части разбирают сортировку Map по значениям: сначала через TreeMap и Comparator, затем через Stream API.
Затронутые темы
Что взять на заметку
- В Java аргументы всегда передаются по значению: при передаче объекта копируется ссылка, поэтому изменение объекта видно снаружи, а переназначение локальной ссылки — нет.
- Для пользовательских классов equals и hashCode обычно переопределяют совместно: равные по equals объекты обязаны иметь одинаковый hashCode, но одинаковый hashCode сам по себе не доказывает равенство.
- String неизменяем и использует String Pool; при многократной конкатенации, особенно в цикле, предпочтительнее StringBuilder, чтобы не создавать промежуточные строки.
- Для HashMap нужно понимать пару «ключ—значение», вычисление hashCode ключа, бакеты и обработку коллизий через сравнение ключей.
- При подготовке к вопросам о потоках стоит различать synchronized/lock, deadlock, join, Runnable, Callable и Future; Callable возвращает результат, Runnable — нет.
- Spring Context выступает контейнером для готовых бинов: компонентное сканирование находит классы с подходящими аннотациями, а зависимости можно внедрять через поле, метод, аргумент или конструктор.
- Задачу сортировки Map по значениям можно решить через TreeMap с Comparator, который обращается к исходной Map по ключам, либо через entrySet().stream() и сортировку записей по значению.