Вопрос 7. Есть сервис ExampleService (см. рис). Если внешний сервис вызывает подряд методы:

Обращение к CityDao::getCity будет выполнено один раз.

Короткий ответ

Что ответить на собеседовании

Обращение к CityDao::getCity будет выполнено один раз.

Подробный разбор

Ответ с пояснениями

Условие

Вопрос 7. Есть сервис ExampleService (см. рис). Если внешний сервис вызывает подряд методы:

exampleService.getCityFromCache(100000); exampleService.getCity(100000);

Сколько раз будет обращение к CityDao::getCity если кэш был пустым?

@Component @RequiredArgsConstructor public class ExampleService {

private final CityDao dao;

@Cacheable
public String getCityFromCache(int index) {
    return dao.getCity(index);
}

public String getCity(int index) {
    return getCityFromCache(index);
}

}

0 1 2 Зависит от реализации CacheManager

Ответ

Обращение к CityDao::getCity будет выполнено один раз.

Пояснение:

  • Метод getCityFromCache помечен аннотацией @Cacheable, значит при первом вызове с параметром 100000 результат будет получен из dao.getCity(100000) и закэширован.
  • Второй вызов exampleService.getCity(100000) вызывает внутри себя getCityFromCache(100000), но так как результат уже в кэше, dao.getCity не вызывается повторно.

Итог: при пустом кэше первый вызов вызывает DAO, второй — использует кэш.

Ответ: 1.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее