Питання на Співбесіді Spring Boot

Автор: Aaron Cao · Оновлено

Питання на Співбесіді Spring Boot
Очікуйте питань про autoconfiguration і startery, dependency injection і bean scope, profile та зовнішню конфігурацію, Spring Data JPA, REST-контролери й обробку exception, testing slice та Actuator. Співбесіди на senior-рівень додають межі транзакцій, caching і поведінку сервісу після перезапуску.

Очікуйте питань про autoconfiguration і startery, dependency injection і bean scope, profile та зовнішню конфігурацію, Spring Data JPA, REST-контролери й обробку exception, testing slice та Actuator. Співбесіди на senior-рівень додають межі транзакцій, caching і поведінку сервісу після перезапуску.

Про що інтерв'юери питають щодо autoconfiguration і starterів?

Ви, ймовірно, використовуєте Spring Boot щодня, не читаючи його стартовий log, і інтерв'юери це знають, тому й починають звідси. Цей розділ охоплює питання, що перевіряють, чи розумієте ви framework, чи лише його налаштування за замовчуванням.

  • Що саме поєднує @SpringBootApplication, і що зламається, якщо прибрати одну частину?
  • Як autoconfiguration вирішує, що конфігурувати, і яку роль відіграють conditional annotation?
  • Що таке starter і що в ньому є, крім dependency?
  • Як перевизначити чи вимкнути конкретну autoconfiguration?
  • Звідки береться embedded server і як би ви його замінили?

Хороша відповідь пов'язує механізм із чимось, що ви справді робили: bean, який довелося exclude, starter, який ви замінили, або помилку запуску, яку ви відстежили через condition evaluation report.

Які основні питання про container і дані трапляються?

  • Dependency injection. Constructor проти field injection, чому constructor injection кращий, і як розв'язати ситуацію з двома кандидатами bean одного типу.
  • Життєвий цикл і scope bean. Чому singleton за замовчуванням, коли доречний request чи prototype scope, і що робить спільне використання singleton bean небезпечним.
  • Конфігурація. Пріоритет property, profile для кожного середовища та @ConfigurationProperties проти розсіяного value injection.
  • Spring Data JPA. Derived query methods, проблема N плюс 1, lazy проти eager fetching і коли переходити на native query.
  • Транзакції. Що насправді перехоплює proxy @Transactional, чому self-invocation тихо пропускає транзакцію і як правила rollback працюють із checked exception.

Питання про proxy транзакцій — найпоширеніше місце, де впевнена відповідь розсипається, тож будьте готові пояснити межу proxy, а не просто назвати annotation.

Як говорити про REST-дизайн, testing і операції?

Окрім container, інтерв'юери хочуть побачити частини, що проявляються в продакшені. На web-рівні: вибір status code, валідація і централізована обробка помилок через @ControllerAdvice замість try-catch у кожному контролері. У testing: різниця між повним @SpringBootTest і slice на кшталт web-layer test, і чому запуск усього context для одного тесту контролера — повільна звичка. В операціях: що розкриває Actuator, які endpoint не мають бути публічними, і як health check живлять deployment.

Уявіть backend-інженерку, яка проходить співбесіду на mid-level посаду в логістичній компанії. Її запитують, чому запланована job іноді записувала неповні дані. Замість здогадок вона проходить через межу транзакції, зазначає, що job викликала transactional метод сама на собі, і пояснює поведінку proxy, яка це пропустила. Інтерв'юер одразу перейшов до розмови про offer, бо відповідь показувала звичку debugging, а не завчену definition.

Набори питань для інших мов і framework зібрані в розділі question banks.

Як тренуватися і де тут місце живого асистента?

Прочитайте стартовий log власного сервісу один раз і будьте здатні його переказати. Потім тренуйтеся вголос, бо саме розрив між знанням концепції та поясненням її за сорок секунд вирішує результат таких співбесід. AI-інтерв'юер на сторінці /mock-interview може ставити уточнювальні питання, які ви б собі не поставили.

Під час усної відеоспівбесіди SubcueAI транскрибує питання інтерв'юера і показує на вашому боці запропоновану структуру відповіді — в desktop-оверлеї на macOS і Windows або на бічній панелі розширення браузера Chromium. Жоден meeting bot не приєднується до дзвінка, і нічого не впроваджується на сторінку зустрічі. Чесне обмеження — раунд кодування: якщо він переходить на платформу з моніторингом екрана чи proctoring, жива допомога поза межами, а якщо ви ділитеся екраном, усе на ньому видно.

Часті запитання

У чому різниця між Spring і Spring Boot?

Spring — це базовий framework. Spring Boot додає opinionated autoconfiguration, starter dependency й embedded server, тож сервіс працює без зовнішніх файлів конфігурації.

Чому constructor injection кращий?

Він робить dependency явними й обов'язковими, дозволяє тримати field як final і дає змогу побудувати об'єкт у тесті без container. Field injection приховує відсутні dependency аж до runtime.

Що таке проблема N плюс 1?

Один query завантажує список, а потім кожен елемент викликає ще один query для своєї асоціації. Виправте це через fetch join, entity graph або batch fetching замість eager loading всього.

Які endpoint Actuator ризиковано розкривати?

Усе, що розкриває конфігурацію, environment чи heap state. Розкривайте health і metrics через свій шлях моніторингу, а решту тримайте за автентифікацією або вимикайте повністю.

Наскільки глибокими є питання про Spring Boot на senior-рівні?

Співбесіди senior переходять від annotation до поведінки: межі proxy, transaction propagation, коректність caching, продуктивність запуску і поведінка сервісу під час rolling restart.

Схожі запитання

← Докладніше: Питання для співбесід за роллю та темою