intermediate
Реализация JavaScript utilities
Реализуйте debounce, throttle, memoize, EventEmitter и Promise helpers с edge cases.
Задачи на реализацию utilities проверяют closure state, timers, callbacks и API contracts. Debounce ждет остановки calls; throttle ограничивает частоту; memoize caches by key; EventEmitter хранит listeners; Promise helpers координируют async completion и errors.
Компромисс: сравните время, память и сложность реализации до выбора структуры или паттерна.
На интервью: Интервьюеры смотрят edge cases: сохранение this и arguments, cleanup methods, leading/trailing calls, listener removal during emit и rejection handling.
Типовые ошибки: Happy-path implementation редко достаточно. Определите timing semantics до кода, не leaking timers или listeners и явно задайте cache keys для memoize.
Чеклист:
- Определите API contract.
- Сохраняйте this и args.
- Очищайте timers и listeners.
- Проверяйте errors и edge timing.