Это демонстрационное техническое собеседование: Евгений Борисов последовательно интервьюирует шестерых участников по Java, Spring, Maven, Hibernate/JPA, REST, JVM и архитектуре. Через ответы кандидатов разбираются диагностика зависимостей и производительности, прокси Spring, транзакции, DI, ленивые коллекции, AOP и базовые механизмы JVM. В финале автор формулирует советы по самопрезентации на интервью: давать релевантный контекст, не отвечать голым «нет» и завершать истории позитивным результатом.
Для нового Maven-проекта с внутренними артефактами сначала проверьте настройки репозиториев и credentials в settings.xml; пустой локальный репозиторий на новом ноутбуке часто не содержит нужной конфигурации.
Различайте -DskipTests (тесты компилируются, но не запускаются) и maven.test.skip=true (тесты также не компилируются); выбор зависит от причины сбоя.
Конфликты транзитивных зависимостей удобнее исследовать через Maven dependency:tree или граф зависимостей IDE, а версию переопределять через dependencyManagement либо BOM, а не случайной прямой зависимостью.
@Transactional в Spring работает при вызове через прокси: self-invocation обходит прокси и не открывает ожидаемую внешнюю транзакцию. Практический обход — вынести вызов в другой бин или обращаться к self-injected proxy; AspectJ имеет другую модель weaving.
При расследовании медленного метода сначала полезны логи и профилирование с flame graph: множество отдельных транзакций или запросов Hibernate может объяснить задержку лучше, чем предположение о проблеме в бизнес-логике.
Для JPA важно понимать lazy-загрузку коллекций, persistence context первого уровня и dirty checking: изменения managed-сущности в транзакции могут сохраниться при её завершении.
Автор советует отвечать на интервью кратко, но с контекстом проекта и своего вклада; при отсутствии прямого опыта честно связать вопрос с близкой технологией и закончить историю результатом.