Код Middle Реализация с нуля обновлено
Кэш с временем жизни
Условие
createCache(ttl): get, set, has, size. Запись живёт ttl миллисекунд, просроченные не отдаются и не считаются в size.
Что проверяют тесты
отдаёт свежее
просроченное не отдаётся
size не считает просроченное
перезапись обновляет срок
хранит ложные значения
Как подойти
Ленивое устаревание вместо таймера на каждую запись: проверяем при обращении. Экономит память и не держит процесс. Обратная сторона - просроченные записи занимают память до следующего обращения, поэтому в бою добавляют периодическую чистку. Хранение ложных значений (0, '') - обязательный тест: проверка через if (value) здесь всё ломает.
Подсказки: 3
- Вместе со значением храни момент записи.
- Проверку свежести делай при чтении - так не нужны таймеры на каждую запись.
- Различай «значение undefined» и «записи нет» - has должен отвечать точно.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.