вопросы к экзамену ИТиП
.pdfВопросы к экзамену по дисциплине «Информационные технологии и программирование», 2 семестр
1.Принцип «Соглашение над конфигурацией» в контексте Maven. Стандартная структура каталогов
Maven-проекта.
2.Координаты Maven (<groupId>, <artifactId>, <version>). Сформулировать правила именования для каждой составляющей.
3.Стандартный жизненный цикл сборки Maven. Перечислить основные фазы и описать их назначение.
4.Механизм управления транзитивными зависимостями в Maven. Области видимости зависимостей: compile, provided, runtime, test.
5.Структура многомодульного проекта Maven. Различия между родительским и дочерним POM-
файлами. Назначение секций <modules> и <dependencyManagement>.
6.Модель Gradle (Project, Task, Action). Фазы жизненного цикла Gradle.
7.Конфигурации зависимостей Gradle.
8.Принципу Inversion of Control. Проблемы традиционного подхода к созданию объектов, решаемые применением IoC.
9.Внедрение зависимостей как способ реализации IoC. Типы внедрения зависимостей.
10.Понятия «Бин», «Контейнер», «ApplicationContext». Объяснить назначение каждого компонента.
11. Основные стадии жизненного цикла бина в контейнере Spring. Назначение аннотаций
@PostConstruct и @PreDestroy.
12.Скоупы бинов: singleton, prototype, request, session. Различия между singleton и prototype.
Особенности уничтожения prototype-бинов.
13.Алгоритм разрешения зависимостей при использовании аннотации @Autowired. Способы разрешения неоднозначности с помощью @Primary и @Qualifier.
14.Способы конфигурирования Spring-контейнера. Области применения каждого способа.
15.Назначение JDBC. Перечислить недостатки прямого использования JDBC в прикладном коде.
16.Технология Object-Relational Mapping. Описать, как ORM преобразует Java-классы и объекты в таблицы и строки реляционной БД.
17.Различия между спецификацией JPA и её реализацией Hibernate. Объяснить их взаимосвязь.
18.Сущность (Entity). Правила создания JPA-сущности
19.Основные аннотации JPA для настройки сущностей: @Table, @Column, @Id, @GeneratedValue.
Стратегии генерации первичного ключа.
20.Назначение интерфейса EntityManager. Понятие Persistence Context как кэша первого уровня, его роль в отслеживании изменений.
21.Состояния сущности: Transient (New), Managed (Persistent), Detached, Removed. Объяснить переходы между состояниями при вызове методов persist(), merge(), remove(), detach().
22.Назначение модуля Spring Data JPA. Объяснить принцип автоматической генерации реализации репозитория на основе интерфейса, наследуемого от JpaRepository.
23.Механизм генерации JPQL-запросов на основе имени метода. Привести примеры ключевых слов.
24.Транзакции. Раскрыть каждое свойство ACID с примерами.
25.Назначение аннотации @Transactional. Описать поведение Spring при успешном завершении метода и при возникновении исключения. Настройки rollbackFor и noRollbackFor.
26.Параметры readOnly и propagation аннотации @Transactional. Объяснить влияние readOnly = true на производительность. Сравнить значения Propagation.REQUIRED и Propagation.REQUIRES_NEW.
27.Проблема N+1 запроса. Механизм её возникновения. Как решить?
28.Типы связей между сущностями. Привести примеры.
29.Назначение параметров cascade, orphanRemoval, mappedBy в аннотациях связей. Понятие
«владелец связи».
30.Стратегии загрузки связанных сущностей EAGER и LAZY. Значения по умолчанию для разных типов связей. LazyInitializationException.
31.Модуль Spring MVC. Паттерн Model-View-Controller в контексте Spring.
32.DispatcherServlet в Spring MVC, его функции.
33.Назначение компонентов HandlerMapping, HandlerAdapter, ViewResolver.
34.Различия между аннотациями @Controller и @RestController.
35.Пул соединений, необходимость его использования.
