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.