Старт и JSX Основа
- Создаёт React-проект на Vite с TypeScript и запускает его
- Объясняет, почему React перерисовывает интерфейс при изменении состояния
Практика. Создать проект на Vite, сделать в нём счётчик и список с добавлением элементов.
Выберите текущий и целевой грейд — останутся темы, которые нужно освоить, с проверяемыми критериями, практическими заданиями и оценкой трудоёмкости. План можно скопировать в документ компании, скачать таблицей или распечатать.
Практика. Создать проект на Vite, сделать в нём счётчик и список с добавлением элементов.
Практика. Сверстать карточку заказа в JSX со всеми состояниями — оплачен, не оплачен, с комментарием и без.
Практика. Сделать компонент поиска, который сообщает родителю запрос по отправке формы.
Практика. Сделать список покупок с добавлением, удалением, отметкой и фильтром, разбитый на 4 компонента.
Практика. Найти в существующем коде дублирующее и производное состояние и упростить компоненты.
Практика. Сделать компонент Card со слотами для заголовка, действий и содержимого.
Практика. Сделать составной компонент Tabs (Tabs.List, Tabs.Tab, Tabs.Panel) с доступностью.
Практика. Сделать компонент с таймером и подпиской на размер окна с корректной очисткой.
Практика. Переписать компонент с пятью useEffect, убрав эффекты, которые на самом деле вычисления или обработчики событий.
Практика. Сделать поле, которое получает фокус при открытии модального окна.
Практика. Обернуть стороннюю библиотеку графиков в React-компонент с корректным созданием и уничтожением.
Практика. Написать хуки useDebounce, useMediaQuery и useLocalStorage с тестами.
Практика. Ускорить список на 5000 элементов с фильтром, измерив время рендера до и после.
Практика. Подготовить для команды разбор, как работает React Compiler и какая ручная мемоизация становится не нужна.
Практика. Перевести маршруты приложения на lazy с заглушками и измерить уменьшение начального бандла.
Практика. Добавить границы ошибок в приложение и проверить, что ошибка в одном виджете не роняет страницу.
Практика. Сделать доступное модальное окно на портале с ловушкой фокуса и закрытием по Escape.
Практика. Провести аудит состояния проекта и перенести фильтры в URL, данные сервера — в кэш запросов.
Практика. Описать правила работы с состоянием для команды с примерами и антипримерами.
Практика. Сделать переключатель темы на Context.
Практика. Найти и устранить лишние перерисовки из-за контекста с помощью React DevTools Profiler.
Практика. Перевести список заказов на TanStack Query с пагинацией, отменой заказа и оптимистичным обновлением.
Практика. Перенести корзину приложения на Redux Toolkit с селекторами и тестами редьюсеров.
Практика. Сделать корзину на Zustand с сохранением в localStorage.
Практика. Сделать форму обратной связи с валидацией на контролируемых полях.
Практика. Сделать форму оформления заказа на React Hook Form и Zod с зависимыми полями.
Практика. Сделать приложение из 4 страниц с вложенной раскладкой и страницей 404.
Практика. Добавить загрузчики данных, защищённые маршруты и фильтры каталога в параметрах адреса.
Практика. Перевести стили React-проекта на CSS Modules или Tailwind.
Практика. Перевести стили учебного проекта на CSS Modules или Tailwind без глобальных конфликтов.
Практика. Добавить тёмную тему на токенах в CSS-переменных без изменения компонентов.
Практика. Покрыть тестами 3 компонента приложения.
Практика. Сделать общую функцию renderWithProviders и покрыть тестами страницу с загрузкой данных.
Практика. Покрыть тестами утилиты и 3 компонента учебного проекта.
Практика. Написать тесты формы оформления заказа с подменой API через MSW — успех, ошибка сервера, валидация.
Практика. Покрыть Playwright 3 ключевых сценария (вход, поиск, оформление заказа) и запустить в CI в двух браузерах.
Практика. Провести аудит набора e2e-тестов — убрать дублирующие, починить нестабильные, сократить время прогона.
Практика. Перевести React-проект на TypeScript в режиме strict.
Практика. Сделать типизированный дженерик-компонент таблицы с колонками и сортировкой.
Практика. Сделать на Next.js блог или каталог с серверными компонентами, формой на Server Actions и метаданными для SEO.
Практика. Разобрать и описать поведение кэша Next.js в своём приложении и настроить инвалидацию по событию.
Практика. Перевести страницу с загрузкой данных в useEffect на серверный компонент и сравнить объём JS на клиенте.
Практика. Сделать на Next.js сайт, где лендинг статический, каталог пересобирается по времени, а личный кабинет рендерится на клиенте.
Практика. Описать стратегию рендеринга и кэширования для интернет-магазина с оценкой нагрузки на сервер.
Практика. Сделать на Expo мобильный клиент своего веб-приложения из трёх экранов.
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.