Вернуться в видеотекуПрактическое Frontend-собеседование с задачами JavaScript
Запись технической frontend-секции собеседования в Avito: кандидатка разбирает потерю контекста this, strict mode, области видимости и event loop, а затем реализует DOM-список подсказок. В финале обсуждаются отмена устаревших запросов через AbortController, периодическое обновление данных и назначение HTTP-заголовков.
- Направление
- Frontend
- Формат
- Собеседование
- Компания
Avito- Грейд
- Junior
- Длительность
- 32:14
Коротко о видео
Запись технической секции frontend-собеседования, в которой интервьюер просит кандидатку вслух объяснять решения. Сначала разбираются потеря this при передаче метода, strict mode и применение bind, call и apply; затем — области видимости, замыкания, мутация и переприсваивание объектов, event loop и queueMicrotask. В DOM-задаче кандидатка собирает список подсказок для поля ввода, обрабатывая пустой ввод, пустой ответ, ошибку и очистку контейнера. Заключительные блоки посвящены отмене устаревших запросов через AbortController, реализации периодического обновления данных и базовой роли HTTP-заголовков.
Затронутые темы
Что взять на заметку
- Контекст this определяется способом вызова; при передаче метода как функции его можно сохранить через bind либо вызвать с call или apply.
- Замыкание сохраняет связь с переменными лексического окружения; для объектов важно различать мутацию и последующее переприсваивание.
- После текущей задачи выполняются накопившиеся microtask до следующей macrotask; callback можно явно добавить в очередь через queueMicrotask.
- В интерфейсе подсказок не следует отправлять запрос при пустом вводе: нужно очищать старую выдачу и отдельно обрабатывать пустой ответ и ошибку.
- Debounce уменьшает число запросов, но не устраняет race condition; для отмены устаревшего запроса подходит AbortController.
- Периодическое обновление данных требует управляемого запуска и остановки таймера, а также обработки ошибок запроса.
- HTTP-заголовки передают метаданные запроса, включая данные авторизации и политики кэширования.