Техническое собеседование Frontend-разработчика: пакетирование запросов
Кандидатка проектирует обёртку над fetch, которая собирает запросы по ID в пакет. Интервьюер уточняет работу timeout, Promise, очистку состояния и момент выполнения batch-запроса.
- Опубликовано на YouTube:
- Просмотры на YouTube: 677
- Лайки на YouTube: 3
Таймлайн
Коротко о видео
Это вторая часть технического собеседования frontend-разработчика. Интервьюер даёт практическую задачу: обернуть функцию загрузки данных так, чтобы вызовы по разным ID накапливались за небольшой интервал и уходили на backend одним пакетным запросом. Кандидатка предлагает хранить ID, Promise и timer, а затем по шагам уточняет, как сопоставить результаты с исходными вызовами. Интервьюер проверяет крайние сценарии: что происходит после завершения timeout, надо ли очищать его вручную, когда сбрасывать массив ID и как не потерять данные при продолжающемся запросе. В конце он завершает активную часть, предлагает задать вопросы и сообщает, что результат и дальнейшие шаги придут через другого собеседующего.
Затронутые темы
Что взять на заметку
- Пакетирование запросов сокращает число обращений к backend при серии вызовов за короткий интервал.
- Для каждого исходного вызова нужно сохранить resolver или иной способ сопоставить его ID с элементом ответа batch-запроса.
- Для фиксированного окна пакетирования таймер запускают первым запросом и не перезапускают при каждом следующем: иначе получится debounce, а отправка может бесконечно откладываться.
- Перед запуском batch-запроса нужно отделить текущие ID и resolver'ы от нового состояния, чтобы вызовы во время ожидания ответа сформировали следующий пакет.
- Асинхронное решение следует проверять сценариями с несколькими окнами, повторяющимися ID и разным временем выполнения запросов.