Есть функция запроса в базу, которая возвращает одно и то же значение. Предложи решение, чтобы она не ходила лишний раз в базу за одними и теми же данными.

Добавьте кэш по аргументам запроса с понятным сроком жизни и правилами инвалидирования. Если вызовы приходят одновременно, объединяйте загрузку одного ключа, чтобы не устроить лавину запросов.

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

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

Добавьте кэш по аргументам запроса с понятным сроком жизни и правилами инвалидирования. Если вызовы приходят одновременно, объединяйте загрузку одного ключа, чтобы не устроить лавину запросов.

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

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

Добавьте кэш по аргументам запроса с понятным сроком жизни и правилами инвалидирования. Если вызовы приходят одновременно, объединяйте загрузку одного ключа, чтобы не устроить лавину запросов.

Для действительно неизменяемого единственного значения возможен sync.Once, но он не подходит для обычного изменяемого кэша и повторов после ошибки. Не держите общий mutex во время долгого обращения к БД. Решите, кэшировать ли отсутствие и ошибки, ограничьте объём памяти и измеряйте hit rate. Одинаковый ответ сегодня не доказывает его неизменность навсегда.

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

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

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

Подробнее