Вопросы с собеседований
Вопросы на собеседовании: Spring
Spring и Spring Boot: IoC и бины, транзакции, JPA и Hibernate, Security, Kafka и RabbitMQ, тесты, микросервисы.
129вопросов
38Junior
74Middle
17Senior
IoC и внедрение зависимостей
4- Как соотносятся IoC и DI в Spring?Junior
- Какие преимущества у constructor injection по сравнению с field injection? Выберите все верные.Junior
- Как разрешить неоднозначность, когда для внедрения подходят несколько бинов одного типа?Middle
- Как внедрить сразу все реализации интерфейса и выбирать нужную в рантайме?Middle
Бины и их жизненный цикл
4ApplicationContext и конфигурация
5Стереотипы и автосвязывание
5- Что делает аннотация @Autowired?Junior
- Чем @Component отличается от @Bean?Middle
- Почему внедрение через конструктор предпочтительнее внедрения в поле?Middle
- Интерфейс PaymentGateway реализуют два бина: один помечен @Primary, другой имеет имя sbpGateway. В точке внедрения стоит @Qualifier("sbpGateway"). Какой бин будет внедрён?Middle
- Чем @Repository отличается от @Component помимо семантики?Middle
Контейнер изнутри
5- Сколько экземпляров бина со scope singleton создаст контейнер?Junior
- Что такое BeanPostProcessor и зачем он нужен?Middle
- Что на самом деле задаёт аннотация @Order на бине?Middle
- Что верно про события приложения и @EventListener в Spring?Middle
- Как корректно получать prototype-бин внутри singleton-бина, чтобы каждый раз создавался новый экземпляр?Senior
Spring MVC и REST
9- Какая аннотация объединяет @Controller и @ResponseBody, чтобы методы возвращали данные прямо в тело ответа?Junior
- Чем HTTP GET отличается от POST?Junior
- Чем ответы 401, 403 и 404 отличаются и что возвращать на запрос чужого ресурса?Junior
- Добавь эндпоинт GET /users/{id}, возвращающий User по идентификатору.Junior
- Что означает код ответа 404?Junior
- Как в Spring Boot 3 возвращать ошибки REST API в едином формате?Middle
- Что такое Post/Redirect/Get и как сделать его в Spring MVC?Middle
- Чем REST отличается от SOAP?Middle
- Что произойдёт при создании ресурса через POST, если контроллер возвращает ResponseEntity со статусом 201?Middle
Валидация и обработка ошибок
6- Как проверять входные данные в Spring с помощью Bean Validation?Junior
- Зачем нужна аннотация @Valid на теле запроса в контроллере?Junior
- Как в Spring MVC обычно обрабатывают ошибки и валидацию входных DTO?Middle
- Чем @Validated отличается от @Valid?Middle
- В контроллере стоит @Valid @RequestBody CreateUserRequest, и клиент прислал невалидное тело. Что произойдёт по умолчанию?Middle
- Чем @ControllerAdvice отличается от @ExceptionHandler внутри контроллера?Middle
Сервлеты и фильтры
5- Что делает DispatcherServlet в Spring MVC?Junior
- Каков жизненный цикл сервлета?Middle
- Чем Servlet Filter отличается от HandlerInterceptor?Middle
- Разработчик добавил в @RestController поле private User currentUser и заполняет его в начале каждого метода. Что не так?Middle
- Чем forward отличается от redirect?Middle
Spring Data JPA и Hibernate
5- Что даёт объявление интерфейса, наследующего JpaRepository?Junior
- Что даёт Spring Data JPA?Middle
- Почему изменение JPA-сущности внутри @Transactional сохраняется в БД без явного вызова save()?Middle
- Список из 100 заказов рендерится вместе с покупателем каждого, и в логе видно 101 SQL-запрос. Какие способы исправят проблему?Middle
- Что делает включённый по умолчанию в Spring Boot режим open-in-view и почему его считают спорным?Middle
AOP и прокси
5@Transactional
7- При каких исключениях Spring откатывает транзакцию?Junior
- Что делает @Transactional в Spring и где его ставить?Junior
- Что происходит при выходе из метода с @Transactional, если исключений не было?Junior
- Как работает @Transactional и почему вызов метода внутри того же класса (self-invocation) может не открыть транзакцию?Middle
- При каком исключении @Transactional по умолчанию откатывает транзакцию?Middle
- Что реально делает @Transactional(readOnly = true)?Middle
- Что делает propagation=REQUIRES_NEW и какой подводный камень с пулом соединений он несёт?Senior
Spring Boot и Actuator
10- Что такое starter в Spring Boot?Junior
- Что делает аннотация @SpringBootApplication?Junior
- Для чего нужен эндпоинт /actuator/health?Junior
- Как работает автоконфигурация Spring Boot?Middle
- Чем liveness probe отличается от readiness probe?Middle
- Как в Spring Boot собрать перцентили времени ответа HTTP-запросов?Middle
- Зачем нужны @Conditional и ConditionalOn... аннотации в Spring Boot?Middle
- Одно и то же свойство задано в application.yml, в переменной окружения и аргументом командной строки. Какое значение победит?Middle
- Что важно учесть при выставлении наружу эндпоинтов Actuator?Middle
- Сервис зависит от внешнего платёжного API. Стоит ли включать проверку его доступности в readiness-пробу?Middle
HTTP, cookies и сессии
5- Чем cookie отличается от server-side session?Junior
- Почему HTTP называют протоколом без состояния (stateless)?Junior
- Как в Spring Security устроены аутентификация и авторизация — какие объекты за них отвечают?Middle
- Какие флаги cookie и зачем используют для сессионного идентификатора?Middle
- Приложение с серверными сессиями масштабируют на несколько инстансов. Какое решение предпочтительнее?Middle
Spring Security
10- Как Spring Security встраивается в обработку запроса?Junior
- Из каких частей состоит JWT?Junior
- Когда CSRF-защита нужна в Spring Security, а когда её часто отключают?Middle
- Для чего нужна @PreAuthorize в Spring Security?Middle
- Метод помечен @Async, и внутри него SecurityContextHolder.getContext().getAuthentication() возвращает null. Почему?Middle
- В конфигурации указано сначала anyRequest().authenticated(), а затем requestMatchers("/public/**").permitAll(). Что получится?Middle
- У пользователя есть authority "ROLE_ADMIN". Какое выражение в @PreAuthorize сработает?Middle
- Как устроена SecurityFilterChain в Spring Security?Senior
- Чем JWT отличается от OAuth2/OIDC?Senior
- Почему для веб- и мобильных клиентов рекомендуют authorization code flow с PKCE, а implicit flow считают устаревшим?Senior
Reactive и WebFlux
7- Что такое Mono и Flux в Spring WebFlux?Junior
- Чем неблокирующая модель обработки отличается от модели «поток на запрос»?Junior
- Как вызывать внешние HTTP-сервисы из Spring — RestClient и WebClient?Middle
- Метод создаёт Mono с вызовом внешнего сервиса, но не возвращает его и ни на что не подписывается. Что произойдёт?Middle
- Что такое reactive programming и backpressure?Senior
- Чем Spring MVC отличается от Spring WebFlux?Senior
- В реактивной цепочке WebFlux внутри map() выполняется синхронный JDBC-запрос. Чем это опасно?Senior
Устойчивость и наблюдаемость
5- Почему у каждого вызова внешнего сервиса должен быть таймаут?Junior
- Что необходимо учесть, добавляя автоматические повторы вызова внешнего сервиса?Middle
- Почему таймаут называют основой устойчивости, и каким он должен быть относительно таймаута вызывающего?Middle
- Чем bulkhead отличается от rate limiter?Middle
- Как подключить circuit breaker к вызову внешнего сервиса в Spring Boot?Senior
Тестирование Spring Boot
7- Как протестировать REST-контроллер Spring с MockMvc?Junior
- Как писать тесты в Spring Boot — @SpringBootTest и тестовые срезы?Junior
- Чем unit-тест отличается от интеграционного?Junior
- Что проверяют контрактные тесты между сервисами?Middle
- Что делает slice-тест вроде @WebMvcTest по сравнению с @SpringBootTest?Middle
- Почему интеграционные тесты на H2 вместо реальной СУБД считают ненадёжными?Middle
- Что верно про пирамиду тестов в Spring-приложении?Middle
Spring Cloud
5- Зачем нужен service discovery в системе из многих сервисов?Junior
- Зачем нужен Spring Cloud Config Server?Middle
- Какая основная роль Spring Cloud Gateway?Middle
- Что такое service discovery и где здесь Eureka?Middle
- Что необходимо, чтобы распределённая трассировка связала запрос, прошедший через несколько сервисов?Middle
Spring Batch и Integration
5Spring Kafka
5- Что делает аннотация @KafkaListener?Junior
- Что важно задавать при отправке через KafkaTemplate?Middle
- У топика 6 партиций. Что даст параметр concurrency = 3 у @KafkaListener и что произойдёт при concurrency = 10?Middle
- Как @KafkaListener связан с listener container и offset commit?Senior
- Как в Spring Kafka обычно строят retry и dead letter topic?Senior
Spring AMQP и RabbitMQ
5- Что означает подтверждение (ack) сообщения в RabbitMQ?Junior
- Для чего нужен RabbitTemplate в Spring AMQP?Middle
- Как @RabbitListener работает с ack и зачем нужен prefetch?Middle
- Слушатель RabbitMQ при ошибке обработки делает nack с requeue = true. Чем это опасно?Middle
- Когда в Spring выбрать AMQP/RabbitMQ, а когда Kafka?Senior
Spring Cloud Stream
5- Какую задачу решает Spring Cloud Stream?Junior
- Какая функциональная модель используется в современном Spring Cloud Stream?Middle
- Что произойдёт, если у двух экземпляров сервиса в Spring Cloud Stream не задать одинаковую consumer group для входящего binding?Middle
- Что такое binder в Spring Cloud Stream?Senior
- Когда Spring Cloud Stream хуже прямого Spring Kafka или Spring AMQP?Senior
Партнёр платформы
Разбор собеседования
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.