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

СОБЕСЕДОВАНИЕ НА FRONTEND РАЗРАБОТЧИКА | REACT TYPESCRIPT

Практическое frontend-собеседование с задачами по JavaScript, TypeScript, Promise и React. Интервьюер по ходу разбирает решения кандидата и завершает запись рекомендациями по подготовке.

Источник: Ayub Begimkulov

Открыть на YouTube

Таймлайн

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

Запись собеседования на frontend-разработчика: кандидат Андрей решает задачи по JavaScript, TypeScript и React, а интервьюер уточняет ход рассуждений и разбирает ошибки. Обсуждаются замыкание для генератора ID, сортировка, реализация `map` и `filter` через `reduce`, цепочки Promise, `Promise.all` и `Promise.allSettled`, а также самостоятельная реализация `Promise.all`. В React-части кандидат пишет таймер и разбирает `useEffect`, cleanup, `React.memo`, `useCallback`, `useRef`, ререндеры и актуальность обработчика событий. В финале интервьюер даёт свою оценку: по его мнению, кандидату полезно набить руку на задачах и подтянуть базовые темы перед следующими собеседованиями.

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

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

  • Для генератора последовательных ID нужно удерживать счётчик в замыкании и возвращать функцию, которая при каждом вызове выдаёт новое число.
  • Нужно уверенно объяснять компаратор `Array.prototype.sort`: `a - b` сортирует числа по возрастанию, а `b - a` — по убыванию; знак результата определяет порядок пары.
  • При реализации `map` и `filter` через `reduce` важны контракт callback, аккумулятор, начальное значение и корректные generic-типы TypeScript для массива и результата.
  • Стоит отработать поведение Promise-цепочек: значение из `catch` продолжает цепочку как успешный результат, `Promise.all` возвращает Promise и отклоняется при первой ошибке, а `Promise.allSettled` сохраняет статусы всех операций.
  • В собственной реализации `Promise.all` результаты нужно записывать по исходному индексу, а завершать общий Promise — только после выполнения всех входных Promise; порядок завершения операций не равен порядку входного массива.
  • Для React-таймера можно запускать интервал в `useEffect`, добавлять управляющее состояние в зависимости и возвращать cleanup с `clearInterval`; это позволяет обойтись без хранения ID интервала в `useRef`.
  • `React.memo` сравнивает props поверхностно по ссылке, а `useCallback` без корректного решения проблемы устаревшего замыкания либо не предотвращает ререндер, либо использует неактуальное состояние; для постоянной подписки на событие обработчик можно хранить в `ref` и вызывать через стабильную обёртку.

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

46 мин
Frontend

СОБЕСЕДОВАНИЕ НА FRONTEND РАЗРАБОТЧИКА ЗП 250К. LIVE CODING

Запись интервью на Middle+ frontend-позицию: от обсуждения опыта кандидата до вопросов по браузеру, CSS, JavaScript, React, TypeScript и практических задач. Автор проходит его под вымышленной легендой для демонстрации процесса зрителям.

55 мин
FrontendSenior

Прохожу СОБЕСЕДОВАНИЕ НА SENIOR FRONTEND. ЗП 400к и Live coding

Запись собеседования на senior frontend-вакансию с разбором ответов кандидата, технических вопросов и двух live-coding задач. В конце автор показывает полученный оффер и названную сумму компенсации.

50 мин
Frontend

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

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