Вернуться в видеотекуТестовое собеседование Java разработчика #24 - Никита Ким
Запись тестового Java-интервью с кандидатом, включающая теоретический опрос и совместный разбор алгоритмической задачи о палиндроме. Вторая половина посвящена SQL, Hibernate, Spring Boot, тестированию и контейнеризации.
- Направление
- Backend
- Формат
- Техническое собеседование
- Длительность
- 59 мин
Коротко о видео
В тестовом собеседовании кандидат Никита Ким рассказывает, что изучает Java с 2019 года с перерывами, работал с Java Core, немного со Spring и базами данных и хочет сменить работу до конца года. Интервьюер последовательно проверяет основы Java, коллекции и сложности алгоритмов, NIO, Stream API, многопоточность, SOLID, паттерны, SQL, ORM/Hibernate, Spring Boot, тестирование и Docker. Практическая часть посвящена проверке строки на палиндром, а в конце разбираются SQL-группировки и различия Docker с виртуальной машиной.
Затронутые темы
Что взять на заметку
- Подготовить объяснение сигнатуры `main`, назначения `static`, передачи аргументов запуска и устройства обычного массива: фиксированный размер, непрерывная память, `ArrayIndexOutOfBoundsException`.
- Разобрать `ArrayList`: расширение происходит при достижении ёмкости, вставка в конец обычно O(1) амортизированно, а особенности зависят от позиции вставки и необходимости расширения.
- Повторить худший случай QuickSort, различия `java.io` и NIO, а также назначение `CopyOnWriteArrayList`, буферов, каналов и селекторов.
- Уметь различать промежуточные и терминальные операции Stream API, объяснять `map` и `flatMap`, функциональный интерфейс с одним абстрактным методом и связь лямбд с такими интерфейсами.
- Повторить `ExecutorService`, `Runnable`, `Callable`, `Future` и `ForkJoinPool`: пул выполняет задачи, но не заменяет осознанный выбор числа потоков и модели параллелизма.
- Для задачи о палиндроме подготовить решение двумя указателями после нормализации строки: сравнивать символы с начала и конца, получая O(n) по времени и O(1) дополнительной памяти без создания перевёрнутой строки.
- Закрепить SQL-запросы с `GROUP BY` и `HAVING COUNT(*)`, а также различия ORM, JPA, Hibernate, кэшей Hibernate, unit/integration-тестов, Testcontainers, Docker и виртуальных машин.