Вернуться в видеотекуСОБЕСЕДОВАНИЕ НА FRONTEND РАЗРАБОТЧИКА | REACT TYPESCRIPT
Практическое frontend-собеседование с задачами по JavaScript, TypeScript, Promise и React. Интервьюер по ходу разбирает решения кандидата и завершает запись рекомендациями по подготовке.
- Направление
- Frontend
- Формат
- Мок-собеседование
- Длительность
- 1 ч 23 мин
Коротко о видео
Запись собеседования на 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` и вызывать через стабильную обёртку.