Библиотека собеса по Java | вопросы с собеседований
6.3K subscribers
391 photos
8 videos
417 links
Вопросы с собеседований по Java и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/08c603b6

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Что такое lazy и eager загрузка в Hibernate?

Lazy loading — данные загружаются только при первом обращении к ним (через прокси). Экономит ресурсы, но может вызвать LazyInitializationException, если сессия закрыта.

Eager loading — связанные данные загружаются сразу вместе с объектом. Удобно, если данные точно нужны, но может быть избыточно.

Выбор стратегии зависит от сценария и баланса между производительностью и простотой.

🐸 Библиотека собеса по Java

#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1👏1
Как в Spring работает proxy-based AOP, и какие ограничения у такого подхода?

Spring AOP обычно работает через создание прокси-объекта (JDK dynamic proxy или CGLIB). Методы вызываются на прокси, который вокруг них вставляет advice (before, after и т.д.).

Ограничения:

Только публичные методы интерфейсов (для JDK proxy) или методы класса (для CGLIB).

Внутренние вызовы (this.method()) не проходят через прокси, advice не сработает.

Прокси не могут перехватывать конструкторы.

Работа с final классами/методами ограничена (не могут быть проксированы).

🐸 Библиотека собеса по Java

#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2🎉1
Что такое идемпотентность в REST API и как её реализовать?

Идемпотентность означает, что повторный вызов одного и того же запроса не изменяет состояние сервера более одного раза.

Способы реализации:

Использовать контроль состояния (если запись уже существует, не создавать её второй раз).

Использовать HTTP методы по стандарту: GET, PUT, DELETE. Уже идемпотентны по спецификации.

Использовать уникальный ключ (идемпотентный токен) с клиентской стороны; сервер хранит, что уже получал этот токен, и при повторе не выполняет операцию заново.

В Spring → фильтры или interceptors проверяют заголовок Idempotency-Key и используют хранилище (БД, кеш) для управления повторными запросами.

🐸 Библиотека собеса по Java

#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2👏1🌚1
Что такое transaction propagation в Spring и какие виды существуют?

Propagation (передача транзакции) — политика того, как метод с аннотацией @Transactional будет взаимодействовать с существующей транзакцией.

Виды:

▪️ REQUIRED (по умолчанию): использует существующую транзакцию или создаёт новую, если её нет

▪️ REQUIRES_NEW: всегда создаёт новую транзакцию, при этом приостанавливая текущую

▪️ SUPPORTS: действует в рамках текущей транзакции, если есть, иначе без транзакции

▪️ MANDATORY: бросает исключение, если нет текущей транзакции

▪️ NEVER: запрещает наличие транзакции, если уже есть, бросает исключение

▪️ NESTED: создаёт «вложенную» транзакцию (savepoint внутри основной)

🐸 Библиотека собеса по Java

#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112🔥1👏1
DispatcherServlet в Spring Framework?

DispatcherServlet — это центральный компонент Spring MVC, который выступает в роли Front Controller.
Он принимает все входящие HTTP-запросы, перенаправляет их нужным контроллерам и формирует HTTP-ответ.

🔹 При получении запроса он:

— Определяет нужный Handler (контроллер) через HandlerMapping.

— Передаёт выполнение HandlerAdapter, который вызывает метод контроллера.

— Обрабатывает результат с помощью ViewResolver, чтобы вернуть клиенту нужное представление (например, HTML или JSON).

🐸 Библиотека собеса по Java

#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101🔥1
Что такое Lazy Initialization?

Lazy Initialization — это подход, при котором объект создаётся только в момент первого обращения к нему, а не заранее при инициализации класса или приложения.

Такой подход экономит ресурсы (память, CPU) и ускоряет старт программы, особенно если объект может так и не понадобиться.

🐸 Библиотека собеса по Java

#spring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91🔥1