Hibernate: вопросы на собеседовании
Вопросы и ответы по Hibernate: подготовка, примеры и типичные ошибки.
Проверьте себя по Hibernate: 5 вопросов, ~10 минут
Вопросов: 39. Частые идут первыми, сложные возвращаются на повторение.
- Каковы три состояния сущности Hibernate: transient, persistent и detached?Middle· спрашивают почти всегда· полный разбор — Jobs/Boost
- Когда Hibernate ускоряет разработку, а когда ORM-абстракция начинает мешать понимать базу данных?Middle· спрашивают почти всегда· полный разбор — Jobs/Boost
- Что такое проблема N+1 в Hibernate и как её решить?Senior· спрашивают почти всегда· полный разбор — Jobs/Boost
- Что такое Hibernate и что такое ORM (Object-Relational Mapping)?Junior· спрашивают почти всегда· полный разбор — Jobs/Boost
- Как Hibernate управляет транзакциями базы данных и как он интегрируется с
@TransactionalSpring?Senior· спрашивают почти всегда - Как сравнить Hibernate с raw SQL, query builder и другими ORM по контролю, типобезопасности и производительности?Junior· спрашивают почти всегда
- Что такое lazy loading в Hibernate и когда возникает
LazyInitializationException?Senior· спрашивают почти всегда - В чём разница между
SessionFactoryиSessionв Hibernate?Middle· спрашивают почти всегда· полный разбор — Jobs/Boost - Какие типы ассоциаций существуют в Hibernate:
@OneToOne,@OneToMany,@ManyToOne,@ManyToMany?Middle - Как Hibernate решает ошибку
detached entity passed to persist?Senior· полный разбор — Jobs/Boost - Что такое eager loading и каковы его компромиссы по сравнению с lazy loading?Middle· полный разбор — Jobs/Boost
- В чём разница между кэшем первого и второго уровня в Hibernate?Senior· полный разбор — Jobs/Boost
- Что такое метод
flush()в Hibernate и когда сессия сбрасывается автоматически?Senior - В чём разница между методами
get()иload()в Hibernate?Middle - Как понять, что проблема в приложении связана с Hibernate, а не с индексами, схемой, isolation level или плохим SQL?Senior· полный разбор — Jobs/Boost
- Представьте, после изменения кода на Hibernate выросло число SQL-запросов и latency. Как вы будете это доказывать и чинить?Senior· полный разбор — Jobs/Boost
- Какие ошибки делают команды, когда прячут сложность базы данных за Hibernate?Middle
- Какая mental model Hibernate важнее всего: unit of work, change tracking, query generation, migrations или generated client?Middle· полный разбор — Jobs/Boost
- Какие production-риски есть у Hibernate: N+1, транзакции, lazy loading, connection pooling, migrations и raw queries?Senior· полный разбор — Jobs/Boost
- Какие преимущества даёт Hibernate по сравнению с чистым JDBC?Junior· полный разбор — Jobs/Boost
- Что такое Hibernate Query Language (HQL) и чем он отличается от SQL?Middle· полный разбор — Jobs/Boost
- Что такое атрибут
mappedByв ассоциациях Hibernate?Middle· полный разбор — Jobs/Boost - Что такое оптимистическая блокировка в Hibernate? Как работает
@Version?Senior· полный разбор — Jobs/Boost - Как реализовать пагинацию в Hibernate?Middle· полный разбор — Jobs/Boost
- В чём разница между
save(),persist(),saveOrUpdate()иmerge()в Hibernate?Middle· полный разбор — Jobs/Boost - В чём разница между
SessionHibernate иEntityManagerJPA?Middle· полный разбор — Jobs/Boost - Что такое аннотация
@BatchSizeи как она помогает с производительностью?Senior· полный разбор — Jobs/Boost - Что такое
CascadeTypeв Hibernate и какие опции каскадирования доступны?Middle· полный разбор — Jobs/Boost - Что такое Criteria API в Hibernate и когда его следует использовать?Middle
- Как настроить генерацию DDL в Hibernate? Что такое
hbm2ddl.autoи каковы его значения?Middle· полный разбор — Jobs/Boost - Расскажите о случае, когда Hibernate помог или помешал вам при миграциях, транзакциях, оптимизации запросов или борьбе с N+1.Middle· полный разбор — Jobs/Boost
- Как работает first-level cache vs second-level cache, и какие баги вызывает stale data?Middle· полный разбор — Jobs/Boost
- Что такое аннотация
@Inheritanceи какие стратегии наследования поддерживает Hibernate (SINGLE_TABLE, TABLE_PER_CLASS, JOINED)?Middle - В чём разница между
@JoinColumnи@JoinTable?Middle· полный разбор — Jobs/Boost - Что такое пессимистическая блокировка в Hibernate и когда её следует использовать?Middle
- Как настроить кэш второго уровня в Hibernate? Назовите несколько провайдеров кэша.Middle
- Для чего используются аннотации
@Embeddableи@Embedded?Middle - Что такое перехватчики (interceptors) и слушатели событий (event listeners) в Hibernate?Middle· полный разбор — Jobs/Boost
- Что такое
@NamedQueryи@NamedNativeQueryв Hibernate?Middle