Реальное собеседование на Senior Java-разработчика
Кандидат отвечает на углублённые вопросы о коллекциях Java, индексах баз данных, Stream API и распределённых системах. Интервьюер уточняет устройство трассировки, гарантии Kafka, блокировки и применение @Transactional.
- Опубликовано на YouTube:
- Просмотры на YouTube: 20,5 тыс.
- Лайки на YouTube: 581
Таймлайн
Коротко о видео
Автор проходит реальное техническое интервью на роль Senior Java Developer. Вопросы начинаются с временной сложности HashMap, LinkedList и ArrayList, устройства индексов и порядка полей в составном индексе. Затем кандидат решает задачу по Stream API и разбирает пример из практического опыта. В блоке распределённых систем обсуждаются трассировка запросов, передача контекста между сервисами, отличие Kafka от RabbitMQ, партиции и гарантии доставки. Финальная часть посвящена deadlock, оптимистическим и пессимистическим блокировкам, happens-before и уровням изоляции. Интервьюер также проверяет понимание работы Spring-прокси и рисков долгих блокирующих вызовов внутри транзакции.
Затронутые темы
Что взять на заметку
- Порядок полей в составном индексе влияет на возможность использовать его в запросе.
- Трассировка связывает спаны в цепочку запроса между сервисами.
- Гарантии доставки Kafka требуют участия логики потребителя, поскольку брокер не делает обработку бизнес-сообщения идемпотентной сам.
- Если транзакция уже захватила блокировки БД, долгий внешний вызов продлевает время их удержания.
- В стандартном прокси-режиме Spring self-invocation не перехватывается @Transactional; отдельную транзакционную границу обычно выносят в другой Spring-бин.