Есть ли опыт работы с Spring
Что проверяют
Пользовались ли вы каркасом осознанно или копировали аннотации. Проверяется глубина, а не факт знакомства.
Как отвечать
Отвечайте по слоям: что использовали, что делали руками, что понимаете внутри.
Модули, с которыми работали: Spring Boot как основа, Spring MVC или WebFlux для веба, Spring Data JPA для доступа к данным, Spring Security для авторизации, Spring Cloud если были микросервисы.
Что делали конкретно, а не «использовал»:
- конфигурация: профили для окружений,
@ConfigurationPropertiesвместо россыпи@Value, свои автоконфигурации или стартеры; - транзакции: где ставили
@Transactional, как выбирали распространение, как боролись с длинными транзакциями; - тестирование: срезы вроде
@DataJpaTestи@WebMvcTestвместо поднятия всего контекста,MockMvc, Testcontainers; - обработка ошибок через
@ControllerAdvice, валидация через@Valid.
Что понимаете внутри, это отличает уверенный ответ:
- контекст приложения и жизненный цикл бина;
- прокси:
@Transactional,@Asyncи@Cacheableработают через обёртку, поэтому самовызов метода внутри своего же класса их игнорирует. Это самая частая практическая ловушка; - автоконфигурация Boot и условные аннотации, за счёт которых зависимость подключается сама;
- внедрение через конструктор и почему циклические зависимости запрещены по умолчанию.
Проблемы, которые ловили: N+1 в Spring Data, медленный старт из-за тяжёлой инициализации, разросшийся тестовый контекст, конфликт версий, решённый импортом спецификации версий.
Если опыт небольшой, скажите прямо, что писали в рамках учебного или пет-проекта, и назовите, что именно делали сами.
Где спотыкаются
Перечисляют аннотации без понимания, что за ними стоит.
Не знают про прокси и не могут объяснить, почему самовызов ломает транзакцию.
Поднимают полный контекст в каждом тесте и жалуются на медленную сборку.
Приписывают себе продовый опыт и не могут описать ни одной проблемы.