Вернуться в видеотекуСОБЕСЕДОВАНИЕ Middle FRONTEND разработчика | JavaScript REACT TYPESCRIPT
Запись учебного собеседования Middle frontend-разработчика по JavaScript, TypeScript и React с разбором ответов и практических задач. Включает объяснения интервьюера по Event Loop, оптимизации, состоянию React и функциональному программированию.
- Направление
- Frontend
- Формат
- Техническое собеседование
- Грейд
- Middle
- Длительность
- 1 ч 54 мин
Коротко о видео
Это учебное мок-интервью с frontend-разработчиком Муратом: сначала разбираются JavaScript Event Loop, очереди microtask/macrotask и requestAnimationFrame, затем TypeScript, производительность веб-страниц и React. Значительная часть видео посвящена практическим задачам: типизации собственного `map`, реализации `map` и `filter` через `reduce`, а также написанию `curry`. В конце интервьюер даёт кандидату обратную связь: отмечает хорошую базу по Event Loop и React ref, но советует тренировать декомпозицию алгоритмических задач и TypeScript.
Затронутые темы
Что взять на заметку
- Microtasks выполняются до полного опустошения очереди после освобождения call stack; бесконечное добавление Promise-микрозадач может заблокировать интерфейс, тогда как задачи через `setTimeout` чередуются с работой браузера.
- `requestAnimationFrame` подходит для анимаций: callbacks одной очереди выполняются перед кадром пачкой, а callback, поставленный из callback, переносится на следующий кадр.
- При типизации аналога `Array.prototype.map` нужны отдельные generic-типы входного элемента и результата: callback может вернуть не тот же тип, который пришёл во входном массиве.
- Для ускорения React-приложения обсуждаются устранение лишних ререндеров, очистка таймеров в cleanup `useEffect`, виртуализация длинных списков, code splitting и загрузка только необходимой части приложения.
- `async` загружает скрипт параллельно и запускает его сразу после загрузки, поэтому порядок зависимых скриптов не гарантирован; `defer` сохраняет порядок выполнения и выполняет скрипты после разбора документа.
- Состояние React следует обновлять иммутабельно: при мутации предыдущая и новая ссылки совпадают, поэтому сравнение не даёт надёжного сигнала об изменении.
- Для контроля ререндеров рассматриваются `React.memo`, `useCallback`, `useMemo` и `useRef`; ref можно использовать для хранения актуального значения без смены ссылки callback.
- При решении задач на `reduce` и curry интервьюер советует сначала проговорить контракт функции, базовый случай и промежуточные состояния, а затем писать код.