Какой алгоритм удаления старых видеофайлов при заполнении флешки используется
Что проверяют
Это задача на постановку, чаще всего про видеорегистратор или камеру с циклической записью. Аналитику важно не назвать аббревиатуру, а описать алгоритм так, чтобы по нему можно было писать код и тесты. Следом спрашивают про защищённые файлы и про случай, когда удалять нечего.
Как отвечать
Базовый ответ: FIFO, циклическая перезапись. Удаляется самый старый по времени записи файл, пока не освободится место под следующий фрагмент. LRU здесь не подходит: записи почти не открывают, и давность обращения ничего не говорит о ценности.
Дальше разложите алгоритм на требования:
- триггер: перед началом нового фрагмента проверяется свободное место, порог с запасом на один-два фрагмента при максимальном битрейте;
- единица удаления: запись режется на фрагменты по несколько минут, поэтому удаляется целый старый файл. Заодно это обходит лимит FAT32 в 4 ГБ на файл;
- порядок: по времени начала записи из имени файла или метаданных, а не по дате доступа. На FAT32 дата доступа хранится без времени, а многие системы её не обновляют;
- исключения: ролики, сохранённые по датчику удара или кнопкой, лежат отдельно и в очередь на удаление не попадают, у них свой лимит;
- крайний случай: если места нет, а всё защищено, запись останавливается и пользователь получает сигнал, а не тихую потерю видео.
Назовите и нефункциональные требования: удаление не прерывает текущую запись, файловая система переживает сбой питания. Критерии приёмки следуют из этого: при заполнении удалён самый старый незащищённый файл, защищённые не тронуты, запись не прервалась.
Где спотыкаются
Отвечают «LRU» по аналогии с кэшем. Для записей с камеры давность доступа не критерий ценности.
Описывают удаление файлов старше N дней. Это чистка по возрасту, а вопрос про заполнение носителя: карта может заполниться за одну поездку.
Забывают про защищённые записи и сценарий «удалять нечего». Именно на нём такие алгоритмы и ломаются в реальной эксплуатации.