Вернуться в видеотекуТестовое собеседование Java разработчика #22 - Николай Оськин
Развёрнутое учебное мок-интервью по Java для начинающего разработчика: от Java Core и алгоритмов до многопоточности, SQL/JDBC, JPA и REST. В финале кандидат задаёт вопросы о понимании реализаций JVM и библиотек и получает рекомендации по дальнейшему изучению.
- Направление
- Backend
- Формат
- Техническое собеседование
- Длительность
- 1 ч 21 мин
Коротко о видео
Это мок-интервью будущего Java-разработчика Николая Оськина, профессионального музыканта и преподавателя, который системно изучает Java с 2020 года. Интервьюер проверяет Java Core, Collections API, исключения, многопоточность, JDBC, JPA/Hibernate, REST и базы данных, уточняя и корректируя ответы кандидата. В конце они разбирают алгоритмическую задачу о символах, общих для всех строк, и обсуждают дальнейший план обучения.
Затронутые темы
Что взять на заметку
- `final` запрещает переназначить ссылку или поле, но не делает сам изменяемый объект неизменяемым: в `final List` по-прежнему можно добавлять и удалять элементы.
- Значения по умолчанию относятся к полям объекта и класса; локальная переменная должна быть явно инициализирована до использования.
- `Map` не наследуется от `Collection`; в иерархии отдельно обсуждаются `List`, `Set`, `Queue` и `Map`, а поиск по значению в `LinkedList` требует линейного прохода O(n).
- `TreeMap` основан на красно-чёрном дереве; упорядоченность ключей позволяет выполнять базовые операции поиска с логарифмической сложностью O(log n).
- `volatile` обеспечивает видимость актуального значения между потоками, но не делает составные операции атомарными; для взаимного исключения нужен `synchronized` или другой механизм синхронизации.
- `Future.get()` возвращает результат асинхронного вычисления, но может блокировать вызывающий поток; это важно учитывать при проектировании асинхронного кода.
- При JDBC пользовательские параметры следует передавать через `PreparedStatement`, а не собирать SQL-строку вручную, чтобы не допустить SQL-инъекцию.