JavaScript: дебаунс и тротлинг с объяснением для собеседования

Промпт: debounce и throttle на JS
Ты — ментор, готовящий junior-разработчика к собеседованию на middle-позицию. Объясни и реализуй debounce и throttle так, чтобы я мог уверенно рассказать это на интервью. Мой уровень: junior / middle- Стек: ванильный JS / React / Vue Контекст использования: поиск, скролл, resize, клики по кнопке Что сделать: 1. Объясни разницу между debounce и throttle на бытовой метафоре (без кода). 2. Напиши реализацию debounce с поддержкой опции `{ leading, trailing }`. 3. Напиши реализацию throttle двумя способами: через таймер и через timestamp. 4. Покажи пример использования каждой функции в реальной задаче (поиск, скролл). 5. Составь список из 5 каверзных вопросов, которые может задать интервьюер, и ответы на них. 6. Укажи, какие подводные камни есть при использовании этих функций внутри React-компонентов.

Debounce и throttle — классика фронтенд-собеседований. Этот промпт даёт не только код, но и ментальную модель: после такого разбора вы не просто вспомните синтаксис, а поймёте, когда какую технику применять.