Встречается на собеседованиях • сегодня

Что такое проблема N+1

Проблема N+1 возникает при работе с ORM (например, Hibernate), когда для получения связанных сущностей выполняется один запрос для основной сущности и N дополнительных запросов для связанных данных. Это приводит к неэффективности и снижению производительности. Пример: ```java @Entity public class Author { @OneToMany(mappedBy = "author") private List books; } // Проблема N+1: List authors = entityManager.createQuery("SELECT a FROM Author a", Author.class).getResultList(); for (Author a : authors) { a.getBooks().size(); // Для каждого автора выполняется отдельный запрос для получения книг } ``` Решение: 1. Использовать JOIN FETCH: ```java List authors = entityManager.createQuery( "SELECT DISTINCT a FROM Author a LEFT JOIN FETCH a.books", Author.class).getResultList(); ``` 2. Настроить eager loading через аннотации (не всегда оптимально) 3. Использовать EntityGraph или Batch fetching
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы