🚀 Вопросы интервью по Spring Boot

Вопросы 1-10 для разработчиков

Вопрос Spring Boot 1
Что такое Spring Boot?

Ответ: Spring Boot — это фреймворк на основе Java, построенный поверх Spring Framework, который упрощает разработку автономных, готовых к продакшену приложений. Он минимизирует конфигурацию, предоставляя автоконфигурацию, стартовые зависимости и встроенные серверы.

Ключевые возможности:
  • Упрощает разработку приложений с автоконфигурацией, стартовыми зависимостями и встроенными веб-серверами
  • Широко используется для создания REST API, микросервисов и корпоративных Java-приложений
Вопрос Spring Boot 2
Какие возможности есть у Spring Boot?

Ответ: Spring Boot предоставляет несколько возможностей, которые упрощают разработку и развёртывание приложений:

Основные возможности:
  • Auto Configuration: Автоматически конфигурирует Spring beans на основе доступных в classpath библиотек
  • Starter Dependencies: Предопределённые наборы зависимостей, которые упрощают конфигурацию Maven и Gradle (например, Spring Web, Spring Data JPA)
  • Embedded Servers: Включает встроенные серверы Tomcat, Jetty и Undertow, исключая необходимость внешнего развёртывания
  • Spring Boot Actuator: Предоставляет готовые для продакшена возможности, такие как health checks, метрики, мониторинг и информацию о приложении
  • Spring Boot CLI: Позволяет разработчикам создавать и запускать Spring-приложения, используя команды командной строки
  • Externalized Configuration: Поддерживает конфигурацию через application properties, application.yml, переменные окружения и аргументы командной строки
  • DevTools: Предоставляет автоматический перезапуск, LiveReload и повышенную продуктивность разработчиков
Вопрос Spring Boot 3
Какие преимущества использования Spring Boot?

Ответ: Spring Boot упрощает разработку Spring приложений, снижая ручную конфигурацию и предоставляя готовые для продакшена возможности:

Основные преимущества:
  • Предоставляет embedded web servers
  • Упрощает управление зависимостями используя starter dependencies
  • Поддерживает rapid development через auto-configuration
  • Включает production-ready monitoring с помощью Actuator
  • Легко интегрируется с Spring проектами и сторонними библиотеками
Вопрос Spring Boot 4
Определите ключевые компоненты Spring Boot

Ответ: Ключевые компоненты Spring Boot перечислены ниже:

Компоненты:
  • Starter Dependencies: Предопределённые пакеты зависимостей, которые упрощают настройку проекта (например, Spring Web, Spring Data JPA)
  • Auto Configuration: Автоматически конфигурирует компоненты Spring-приложения на основе зависимостей в проекте
  • Spring Boot CLI: Инструмент командной строки, используемый для быстрого запуска и тестирования Spring-приложений
  • Actuator: Предоставляет готовые для продакшена возможности, такие как мониторинг, health checks и метрики приложения
  • Embedded Servers: Включает встроенные серверы, такие как Apache Tomcat, Jetty и Undertow, исключая необходимость развёртывания на внешнем сервере
  • Spring Boot Annotations: Аннотации, такие как @SpringBootApplication, @RestController и @Autowired, упрощают разработку приложений
Вопрос Spring Boot 5
Почему мы предпочитаем Spring Boot вместо Spring?

Ответ: Spring Boot предпочитается потому что упрощает разработку и развертывание Spring приложений через auto-configuration, starter dependencies и embedded servers.

Сравнение Spring Framework vs Spring Boot:
Критерий Spring Framework Spring Boot
Конфигурация В основном вручную Auto Configuration
Управление зависимостями Вручную Starter Dependencies
Встроенный сервер Отсутствует Tomcat, Jetty, Undertow
Развёртывание WAR-файл на внешнем сервере Исполняемый JAR/WAR
Шаблонный код Больше Меньше
Скорость разработки Медленнее Быстрее
Готовые функции для продакшена Требует дополнительной настройки Встроенный Actuator
Поддержка микросервисов Возможна Отличная
Вопрос Spring Boot 6
Объясните внутреннее устройство Spring Boot

Ответ: Spring Boot следует многоуровневой архитектуре для эффективной обработки запросов клиента.

Процесс обработки запроса:
  • Клиент отправляет HTTP-запрос (GET, POST, PUT, DELETE) к приложению
  • Запрос получается и сопоставляется с соответствующим методом Controller
  • Controller передаёт запрос в слой Service, где выполняется бизнес-логика
  • Слой Service взаимодействует со слоем Repository для выполнения операций с базой данных, используя JPA/Hibernate
  • Repository взаимодействует с базой данных и возвращает результат
  • Ответ отправляется обратно в Controller, который возвращает данные (JSON/XML) или представление (JSP/Thymeleaf) клиенту
Вопрос Spring Boot 7
Что такое Spring Boot Starter Dependencies?

Ответ: Spring Boot Starter Dependencies — это предконфигурированные описания зависимостей, которые упрощают настройку проекта, включая обычно используемые библиотеки для определённой функциональности.

Типичные starter dependencies:
Starter Назначение
spring-boot-starter-web Web и REST-приложения
spring-boot-starter-data-jpa Доступ к базе данных через JPA
spring-boot-starter-security Аутентификация и авторизация
spring-boot-starter-test Модульное и интеграционное тестирование
spring-boot-starter-thymeleaf Шаблонизатор Thymeleaf
spring-boot-starter-validation Валидация bean'ов
spring-boot-starter-actuator Мониторинг и проверки состояния
Вопрос Spring Boot 8
Как запускается Spring-приложение?

Ответ: Spring-приложение запускается вызовом метода main() с аннотацией @SpringBootApplication в классе SpringApplication. Этот метод использует объект SpringApplicationBuilder для конфигурации приложения.

Пример кода:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}
                
Внутреннее устройство:

Когда SpringApplication.run() выполняется, Spring Boot:

  • Создаёт ApplicationContext
  • Выполняет сканирование компонентов
  • Регистрирует Spring beans
  • Применяет автоконфигурацию
  • Загружает свойства конфигурации
  • Запускает встроенный веб-сервер (для веб-приложений)
  • Делает приложение готовым к обработке запросов клиента
Вопрос Spring Boot 9
Что делает аннотация @SpringBootApplication внутри?

Ответ: Аннотация @SpringBootApplication объединяет три аннотации. Это: @Configuration, @EnableAutoConfiguration и @ComponentScan.

Компоненты @SpringBootApplication:
  • @AutoConfiguration: Эта аннотация автоматически конфигурирует beans в classpath и автоматически сканирует зависимости в соответствии с потребностями приложения
  • @ComponentScan: Эта аннотация сканирует компоненты (@Component, @Service и т.д.) в пакете аннотированного класса и его подпакетах
  • @Configuration: Эта аннотация конфигурирует beans и пакеты в classpath
Формула:

@SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan

@SpringBootApplication автоматически конфигурирует приложение на основе зависимостей, добавленных при создании проекта, и запускает приложение с помощью метода run() в главном классе приложения.

Вопрос Spring Boot 10
Что такое Spring Initializr?

Ответ: Spring Initializr — это онлайн-инструмент для генерации проектов, который создаёт базовую структуру Spring Boot проекта с требуемыми зависимостями и конфигурацией сборки. Он помогает разработчикам быстро начать Spring Boot проект без ручной конфигурации Maven или Gradle.

Возможности Spring Initializr:
  • Генерирует Maven или Gradle проекты
  • Позволяет выбрать Spring Boot версию
  • Поддерживает Java, Kotlin и Groovy
  • Автоматически добавляет требуемые starter dependencies