Вернуться в видеотеку

СОБЕСЕДОВАНИЕ Middle FRONTEND разработчика | JavaScript REACT TYPESCRIPT

Запись учебного собеседования Middle frontend-разработчика по JavaScript, TypeScript и React с разбором ответов и практических задач. Включает объяснения интервьюера по Event Loop, оптимизации, состоянию React и функциональному программированию.

Источник: Ayub Begimkulov

Открыть на YouTube

Таймлайн

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

Это учебное мок-интервью с 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 интервьюер советует сначала проговорить контракт функции, базовый случай и промежуточные состояния, а затем писать код.

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

50 мин
Frontend

НЕУДАЧНОЕ СОБЕСЕДОВАНИЕ на FRONTEND РАЗРАБОТЧИКА. Live coding

Разбор неудачного для автора фронтенд-собеседования с live coding и вопросами по JavaScript, React и TypeScript. Во второй части собеседники рассказывают о монорепозитории, Context/RxJS, собственном UI kit и миграции проектов на Next.js.

58 мин
FrontendSenior

Собеседование frontend в СБЕР на 400к

Запись фейкового frontend-собеседования: опыт кандидата, React-стек и серия теоретических и практических вопросов по TypeScript и JavaScript. В конце разбирается алгоритмическая задача на поиск символов в заданном порядке.