Код Middle Реализация с нуля обновлено

Кэш с временем жизни

Условие

createCache(ttl): get, set, has, size. Запись живёт ttl миллисекунд, просроченные не отдаются и не считаются в size.

Что проверяют тесты

  • отдаёт свежее

  • просроченное не отдаётся

  • size не считает просроченное

  • перезапись обновляет срок

  • хранит ложные значения

Как подойти

Ленивое устаревание вместо таймера на каждую запись: проверяем при обращении. Экономит память и не держит процесс. Обратная сторона - просроченные записи занимают память до следующего обращения, поэтому в бою добавляют периодическую чистку. Хранение ложных значений (0, '') - обязательный тест: проверка через if (value) здесь всё ломает.

Подсказки: 3
  1. Вместе со значением храни момент записи.
  2. Проверку свежести делай при чтении - так не нужны таймеры на каждую запись.
  3. Различай «значение undefined» и «записи нет» - has должен отвечать точно.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.