Вернуться в каталог собеседований

Техническое собеседование Frontend-разработчика: пакетирование запросов

Кандидатка проектирует обёртку над fetch, которая собирает запросы по ID в пакет. Интервьюер уточняет работу timeout, Promise, очистку состояния и момент выполнения batch-запроса.

Тихон Галактионов
  • Опубликовано на YouTube:
  • Просмотры на YouTube: 677
  • Лайки на YouTube: 3
Открыть на YouTube

Таймлайн

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

Это вторая часть технического собеседования frontend-разработчика. Интервьюер даёт практическую задачу: обернуть функцию загрузки данных так, чтобы вызовы по разным ID накапливались за небольшой интервал и уходили на backend одним пакетным запросом. Кандидатка предлагает хранить ID, Promise и timer, а затем по шагам уточняет, как сопоставить результаты с исходными вызовами. Интервьюер проверяет крайние сценарии: что происходит после завершения timeout, надо ли очищать его вручную, когда сбрасывать массив ID и как не потерять данные при продолжающемся запросе. В конце он завершает активную часть, предлагает задать вопросы и сообщает, что результат и дальнейшие шаги придут через другого собеседующего.

Затронутые темы

Что взять на заметку

  • Пакетирование запросов сокращает число обращений к backend при серии вызовов за короткий интервал.
  • Для каждого исходного вызова нужно сохранить resolver или иной способ сопоставить его ID с элементом ответа batch-запроса.
  • Для фиксированного окна пакетирования таймер запускают первым запросом и не перезапускают при каждом следующем: иначе получится debounce, а отправка может бесконечно откладываться.
  • Перед запуском batch-запроса нужно отделить текущие ID и resolver'ы от нового состояния, чтобы вызовы во время ожидания ответа сформировали следующий пакет.
  • Асинхронное решение следует проверять сценариями с несколькими окнами, повторяющимися ID и разным временем выполнения запросов.

Рекомендуем посмотреть