Вопросы с выбором ответа:

Вопрос 1. Что такое Spring Data JPA?

  • a) Библиотека для работы с NoSQL базами данных
  • ✅ b) Модуль Spring для упрощения работы с JPA
  • c) Инструмент для миграции баз данных
  • d) Фреймворк для создания REST API

Вопрос 2. Какую зависимость нужно добавить в pom.xml для использования Spring Data JPA?

  • a) spring-boot-starter-web
  • ✅ b) spring-boot-starter-data-jpa
  • c) spring-boot-starter-security
  • d) spring-boot-starter-test

Вопрос 3. Какой JPA-провайдер используется по умолчанию в Spring Data JPA?

  • a) EclipseLink
  • ✅ b) Hibernate
  • c) OpenJPA
  • d) TopLink

Вопрос 4. Какой интерфейс репозитория предоставляет базовые CRUD-операции?

  • a) JpaRepository
  • ✅ b) CrudRepository
  • c) PagingAndSortingRepository
  • d) ListCrudRepository

Вопрос 5. Какой метод репозитория возвращает сущность по её идентификатору?

  • a) findAll()
  • ✅ b) findById()
  • c) save()
  • d) delete()

Вопрос 6. Какое свойство транзакций гарантирует, что все операции выполняются как единое целое?

  • a) Consistency
  • b) Isolation
  • ✅ c) Atomicity
  • d) Durability

Вопрос 7. Какое значение параметра propagation аннотации @Transactional используется по умолчанию?

  • a) Propagation.REQUIRES_NEW
  • ✅ b) Propagation.REQUIRED
  • c) Propagation.NESTED
  • d) Propagation.NOT_SUPPORTED

Вопрос 8. Какое значение propagation создаёт новую транзакцию, приостанавливая существующую?

  • a) Propagation.REQUIRED
  • ✅ b) Propagation.REQUIRES_NEW
  • c) Propagation.NESTED
  • d) Propagation.MANDATORY

Вопрос 9. При каких исключениях Spring по умолчанию откатывает транзакцию?

  • a) При любых Exception
  • b) При Checked Exception
  • ✅ c) При RuntimeException и Error
  • d) При любых ошибках компиляции

Вопрос 10. Какой параметр @Transactional позволяет указать, при каких исключениях транзакция должна откатываться?

  • ✅ a) rollbackFor
  • b) noRollbackFor
  • c) isolation
  • d) propagation

Вопросы на последовательность:

Вопрос 11. Последовательность настройки Spring Data JPA

Расположите шаги в правильном порядке для настройки Spring Data JPA в проекте:

  1. Добавить зависимость spring-boot-starter-data-jpa в pom.xml/build.gradle.
  2. Настроить application.properties/application.yml с параметрами БД.
  3. Определить сущность с аннотациями @Entity и @Id.
  4. Создать репозиторий, расширяющий JpaRepository.

Вопрос 12. Порядок выполнения запроса через JPA

Укажите правильную последовательность этапов при выполнении запроса через Spring Data JPA:

  1. Вызов метода репозитория (например, findAll()).
  2. Spring Data создает реализацию репозитория.
  3. JPA преобразует вызов метода в SQL-запрос.
  4. Получение результатов и маппинг в сущности.

Вопрос 13. Этапы работы с транзакцией в Spring

Расположите этапы обработки транзакции в Spring:

  1. Пометить метод аннотацией @Transactional.
  2. Spring открывает транзакцию перед выполнением метода.
  3. Выполнение бизнес-логики с обращениями к БД.
  4. Spring фиксирует транзакцию (если нет исключений).

Вопрос 14. Порядок создания REST API с доступом к БД

Укажите правильную последовательность разработки REST-контроллера с доступом к БД:

  1. Описать DTO для запросов/ответов.
  2. Создать @RestController с методами-обработчиками.
  3. Реализовать сервисный слой с вызовом репозитория.
  4. Настроить маппинг между сущностью и DTO (например, через ModelMapper).

Вопрос 15. Жизненный цикл сущности JPA

Расположите этапы жизненного цикла сущности JPA в правильном порядке:

  1. Сущность управляется (managed) после вызова entityManager.persist().
  2. Изменения в managed-сущности автоматически отслеживаются.
  3. При коммите транзакции изменения синхронизируются с БД.
  4. Сущность переходит в состояние detached после закрытия транзакции.

Вопрос 16. Укажите порядок выполнения запроса в Spring Data JPA:

  1. Генерация SQL-запроса Hibernate
  2. Вызов метода репозитория
  3. Маппинг результата в сущности
  4. Отправка запроса в БД

Вопрос 17. Укажите правильный порядок наследования интерфейсов Spring Data JPA:

(Расположите от базового к более специализированному)

  1. Repository
  2. CrudRepository
  3. PagingAndSortingRepository
  4. JpaRepository

Вопрос 18. Выставите в правильном порядке жизненный цикл Hibernate Entity-объектов

  1. Transient
  2. Persistent (or Managed)
  3. Detached
  4. Removed

Вопрос 19. Выставите иерархию интерфейсов в Collections по возрастанию:

  1. Iterable
  2. Collection
  3. List
  4. ArrayList

Вопрос 20. Три уровня кэширования поставьте их по возрастанию

  1. Кеширование на уровне сессии (Session)
  2. Кеширование на уровне SessionFactory
  3. Кеширование запросов (и их результатов)

Вопросы на сопоставление:

Вопрос 21. Сопоставьте аннотации и их назначение:

  • 1. @Controller - Определяет класс как Spring MVC контроллер
  • 2. @Service - Помечает класс как сервисный компонент
  • 3. @Autowired - Внедряет зависимости автоматически
  • 4. @RequestMapping - Сопоставляет URL с методами контроллера

Вопрос 22. Сопоставьте методы CrudRepository и их действия:

  • 1. save() - Сохраняет или обновляет сущность
  • 2. deleteById() - Удаляет сущность по ID
  • 3. findAll() - Возвращает все записи
  • 4. existsById() - Проверяет наличие по ID

Вопрос 23. Сопоставьте свойства application.properties и их назначение:

  • 1. spring.datasource.url - URL подключения к БД
  • 2. spring.jpa.show-sql - Показывает SQL-запросы в логах
  • 3. spring.jpa.hibernate.ddl-auto - Управляет созданием схемы БД
  • 4. spring.datasource.username - Имя пользователя БД

Вопрос 24. Сопоставьте стратегии генерации ID (@GeneratedValue) и их описание:

  • 1. AUTO - Выбор стратегии зависит от БД
  • 2. IDENTITY - ID генерируется БД (auto_increment)
  • 3. SEQUENCE - Используется последовательность БД
  • 4. TABLE - ID хранятся в отдельной таблице

Вопрос 25. Сопоставьте компоненты Spring и их назначение:

  • 1. JpaRepository - Расширенный интерфейс для работы с JPA
  • 2. JdbcTemplate - Выполнение SQL-запросов без ORM
  • 3. EntityManager - Управление сущностями в JPA
  • 4. @Repository - Помечает класс как репозиторий Spring

Вопрос 26. Сопоставьте HTTP-методы и их назначение в REST API:

  • 1. GET - Получение ресурса
  • 2. POST - Создание нового ресурса
  • 3. PUT - Полное обновление ресурса
  • 4. PATCH - Частичное обновление ресурса

Вопрос 27. Сопоставьте типы отношений в JPA и их описание:

  • 1. @OneToOne - Один к одному
  • 2. @OneToMany - Один ко многим
  • 3. @ManyToOne - Многие к одному
  • 4. @ManyToMany - Многие ко многим

Вопрос 28. Сопоставьте исключения Spring и их причины:

  • 1. DataIntegrityViolationException - Нарушение целостности данных
  • 2. EntityNotFoundException - Сущность не найдена
  • 3. TransactionSystemException - Ошибка в транзакции
  • 4. OptimisticLockingFailureException - Конфликт оптимистичной блокировки

Вопрос 29. Сопоставьте аннотации Spring MVC и их назначение:

  • 1. @Controller - Определяет класс как контроллер
  • 2. @RestController - Контроллер для REST API
  • 3. @RequestMapping - Маппинг URL на метод
  • 4. @GetMapping - Маппинг GET-запроса

Вопрос 30. Сопоставьте методы работы с транзакциями и их описание:

  • 1. @Transactional - Определяет границы транзакции
  • 2. propagation - Поведение распространения транзакции
  • 3. isolation - Уровень изоляции
  • 4. readOnly - Транзакция только для чтения

Вопросы открытого типа:

Вопрос 31. Какая аннотация JPA указывает, что поле является первичным ключом?

Ответ: @Id

Вопрос 32. Какой метод CrudRepository используется для удаления сущности по её ID?

Ответ: deleteById()

Вопрос 33. Какое свойство в application.properties задаёт URL для подключения к базе данных?

Ответ: spring.datasource.url

Вопрос 34. Какая аннотация Spring позволяет выполнить метод в транзакции?

Ответ: @Transactional

Вопрос 35. Какой интерфейс в Spring Data JPA предоставляет пагинацию и сортировку?

Ответ: PagingAndSortingRepository

Вопрос 36. Какой Hibernate-параметр в application.properties автоматически создаёт таблицы при старте приложения?

Ответ: spring.jpa.hibernate.ddl-auto=create

Вопрос 37. Какой метод JpaRepository ищет сущность по её ID?

Ответ: findById()

Вопрос 38. Какой метод EntityManager используется для сохранения новой сущности в БД?

Ответ: persist()

Вопрос 39. Какая аннотация Spring обозначает класс как компонент сервисного слоя?

Ответ: @Service

Вопрос 40. Какой класс в Spring используется для выполнения "сырых" SQL-запросов без JPA?

Ответ: JdbcTemplate

Смешанная подборка вопросов:

Вопрос 41. Какой аннотацией включается поддержка кэширования в Spring?

  • a) @EnableTransactionManagement
  • ✅ b) @EnableCaching
  • c) @EnableJpaRepositories
  • d) @EnableWebSecurity

Вопрос 42. Какой кэш-провайдер используется в Spring Cache Abstraction по умолчанию?

  • a) Ehcache
  • b) Redis
  • c) Caffeine
  • ✅ d) ConcurrentMap

Вопрос 43. Какой класс используется для программного управления транзакциями в Spring?

  • ✅ a) TransactionTemplate
  • b) TransactionManager
  • c) CacheManager
  • d) EntityManager

Вопрос 44. Поставь иерархию транзакций по степени изолированности по возрастанию:

  1. READ UNCOMMITTED
  2. READ COMMITTED
  3. REPEATABLE READ
  4. SERIALIZABLE

Вопрос 45. Расположите этапы жизненного цикла транзакции в Spring в правильном порядке:

  1. Начало транзакции
  2. Выполнение бизнес-логики
  3. Фиксация (commit) транзакции
  4. Откат (rollback) при ошибке
  5. Закрытие ресурсов

Вопрос 46. Сопоставьте паттерны проектирования и их назначение:

  • 1. Singleton - Гарантирует единственный экземпляр класса
  • 2. Factory Method - Делегирует создание объектов
  • 3. Strategy - Инкапсулирует семейство алгоритмов
  • 4. Observer - Реализует механизм подписки

Вопрос 47. Какая аннотация Spring Data JPA позволяет написать кастомный SQL-запрос?

Ответ: @Query

Вопрос 48. Какой метод CrudRepository используется для проверки существования сущности по ID?

Ответ: existsById()

Вопрос 49. Какое свойство application.properties включает логирование SQL-запросов?

Ответ: spring.jpa.show-sql=true

Вопрос 50. Какая аннотация JPA определяет отношение "один ко многим" между сущностями?

Ответ: @OneToMany