Как бы вы реализовали мемоизацию функции с несколькими аргументами, включая непримитивные значения — объекты и массивы?

Сначала определите равенство аргументов: по ссылке или по содержимому; для ссылочного варианта подходит дерево Map/WeakMap по позициям аргументов.

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

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

Сначала определите равенство аргументов: по ссылке или по содержимому; для ссылочного варианта подходит дерево Map/WeakMap по позициям аргументов.

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

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

Сначала определите равенство аргументов: по ссылке или по содержимому; для ссылочного варианта подходит дерево Map/WeakMap по позициям аргументов.

Объекты и массивы можно использовать как ключи WeakMap, примитивы — Map. Структурное сравнение дороже и требует правил для циклов, типов и порядка ключей. Изменение объекта после кэширования делает старый результат опасным, если функция зависит от его содержимого; нужен контракт неизменяемых входов или инвалидация.

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

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

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

Подробнее