Ctrl K
Frontend · Senior · Код

Напишите функцию memoizeAsync. Она принимает асинхронную функцию от строкового ключа и время жизни кэша в миллисекундах и возвращает обёртку: повторный вызов с тем же ключом не ходит в сеть, параллельные вызовы делят один запрос, а ошибки не кэшируются.

~15 мин голосом

Как подойти

Проверяют, понимаете ли вы асинхронную модель JS: что кэшировать нужно промис, а не результат, чтобы параллельные вызовы делили один запрос. Ещё смотрят, как вы обрабатываете гонки при ошибках и TTL и как управляете жизненным циклом кэша (размер, инвалидация).

Встречал этот вопрос на настоящем собесе?
Ответов0
Средний балл—
Сильных—
Тренировали0
Темы
Похожие вопросыПеред базой стоит кеш в Redis с карточками товаров, TTL — пять минут. Расскажите, как бы вы организовали чтение и обновление, как кеш может разойтись с базой, и что произойдёт, когда истечёт TTL у очень популярного ключа. MiddleНапишите функцию retry. Она принимает асинхронную функцию и опции: число попыток, базовую задержку и AbortSignal, вызывает функцию и при ошибке повторяет её с экспоненциально растущей задержкой. Возвращает промис с первым успешным результатом или с последней ошибкой. SeniorЕсть поставщики цен, у каждого метод price принимает артикул и асинхронно возвращает CompletableFuture с ценой. Напиши метод bestPrice, который принимает артикул и список поставщиков, опрашивает всех параллельно и возвращает CompletableFuture с минимальной ценой: упавших и не ответивших за две секунды пропускаем, а если цены не дал никто, результат завершается ошибкой. SeniorВы добавили кеш перед базой данных для карточек товаров, и пользователи начали жаловаться, что видят старые цены. Как устроить кеширование, чтобы этого избежать? MiddleСпроектируйте сервис коротких ссылок: пользователь отдаёт длинный URL и получает короткий, а переход по короткой ссылке перенаправляет на оригинал. Middle

Ответь голосом

Интервьюер задаст этот вопрос и послушает. Думай вслух, проси подсказку, если нужно. Закончил — пауза или «Я ответил», через минуту здесь балл и какие пункты закрыты.

Войти, чтобы ответить

Лучше в наушниках · ~15 мин