Вопросы с выбором ответа:
Вопрос 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 в проекте:
- Добавить зависимость spring-boot-starter-data-jpa в pom.xml/build.gradle.
- Настроить application.properties/application.yml с параметрами БД.
- Определить сущность с аннотациями @Entity и @Id.
- Создать репозиторий, расширяющий JpaRepository.
Вопрос 12. Порядок выполнения запроса через JPA
Укажите правильную последовательность этапов при выполнении запроса через Spring Data JPA:
- Вызов метода репозитория (например, findAll()).
- Spring Data создает реализацию репозитория.
- JPA преобразует вызов метода в SQL-запрос.
- Получение результатов и маппинг в сущности.
Вопрос 13. Этапы работы с транзакцией в Spring
Расположите этапы обработки транзакции в Spring:
- Пометить метод аннотацией @Transactional.
- Spring открывает транзакцию перед выполнением метода.
- Выполнение бизнес-логики с обращениями к БД.
- Spring фиксирует транзакцию (если нет исключений).
Вопрос 14. Порядок создания REST API с доступом к БД
Укажите правильную последовательность разработки REST-контроллера с доступом к БД:
- Описать DTO для запросов/ответов.
- Создать @RestController с методами-обработчиками.
- Реализовать сервисный слой с вызовом репозитория.
- Настроить маппинг между сущностью и DTO (например, через ModelMapper).
Вопрос 15. Жизненный цикл сущности JPA
Расположите этапы жизненного цикла сущности JPA в правильном порядке:
- Сущность управляется (managed) после вызова entityManager.persist().
- Изменения в managed-сущности автоматически отслеживаются.
- При коммите транзакции изменения синхронизируются с БД.
- Сущность переходит в состояние detached после закрытия транзакции.
Вопрос 16. Укажите порядок выполнения запроса в Spring Data JPA:
- Генерация SQL-запроса Hibernate
- Вызов метода репозитория
- Маппинг результата в сущности
- Отправка запроса в БД
Вопрос 17. Укажите правильный порядок наследования интерфейсов Spring Data JPA:
(Расположите от базового к более специализированному)
- Repository
- CrudRepository
- PagingAndSortingRepository
- JpaRepository
Вопрос 18. Выставите в правильном порядке жизненный цикл Hibernate Entity-объектов
- Transient
- Persistent (or Managed)
- Detached
- Removed
Вопрос 19. Выставите иерархию интерфейсов в Collections по возрастанию:
- Iterable
- Collection
- List
- ArrayList
Вопрос 20. Три уровня кэширования поставьте их по возрастанию
- Кеширование на уровне сессии (Session)
- Кеширование на уровне SessionFactory
- Кеширование запросов (и их результатов)
Вопросы на сопоставление:
Вопрос 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. Поставь иерархию транзакций по степени изолированности по возрастанию:
- READ UNCOMMITTED
- READ COMMITTED
- REPEATABLE READ
- SERIALIZABLE
Вопрос 45. Расположите этапы жизненного цикла транзакции в Spring в правильном порядке:
- Начало транзакции
- Выполнение бизнес-логики
- Фиксация (commit) транзакции
- Откат (rollback) при ошибке
- Закрытие ресурсов
Вопрос 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