Бен Авад проверил навыки Клемана Михайлеску в React.js

Ben Awad 2,3 млн 36 мин 3 мин 20.11.2020
Главное

Бен Авад 20 ноября 2020 года провел пробное техническое собеседование с Клеманом Михайлеску для проверки его навыков работы в React.js. В ходе встречи гость продемонстрировал решение базовых задач фронтенд-разработки, включая создание счетчика, получение данных через API и реализацию пагинации.

🔢 Создание базового компонента счетчика 0:54

Первым заданием для Клемана Михайлеску стала разработка простого счетчика. Интервьюер попросил отобразить число и кнопку, которая увеличивает значение на единицу при каждом нажатии .

Разработчик реализовал задачу следующим образом:

Бен Авад подчеркнул, что визуальное оформление (CSS) в данном случае не имеет значения . Клеман Михайлеску использовал стандартные HTML-теги p и button для вывода интерфейса.

🌐 Получение данных из внешнего API 3:01

Вторая задача заключалась в работе с Random User API для получения данных о пользователях. Бен Авад предложил гостю использовать любые доступные инструменты, включая поиск в Google или Stack Overflow .

Клеман Михайлеску выбрал библиотеку axios для выполнения HTTP-запросов. Процесс реализации включал несколько этапов:

  1. Установка библиотеки через менеджер пакетов .
  2. Создание функции fetchRandomData для выполнения GET-запроса к API .
  3. Настройка вывода полученного JSON-объекта на экран в виде строки для проверки структуры данных.

Сначала разработчик планировал вызывать функцию по нажатию кнопки, но затем решил реализовать загрузку при старте приложения . Для этого он применил хук useEffect с пустым массивом зависимостей, что имитирует поведение метода жизненного цикла componentDidMount.

🖼 Отображение списка пользователей и TypeScript 14:10

После успешного получения данных интервьюер поручил визуализировать результат в виде списка с именами и фотографиями . Клеман Михайлеску модифицировал код, чтобы обрабатывать массив пользователей, даже если API возвращает только один объект.

Для структурирования кода разработчик применил следующие подходы:

Бен Авад отметил, что Клеман Михайлеску набрал максимально возможный балл за выполнение базовых требований к реализации интерфейса .

📑 Реализация бесконечной пагинации 22:13

Для усложнения задачи Бен Авад попросил добавить функционал загрузки дополнительных данных ("Load More") . API поддерживает параметр page, что позволяет запрашивать следующие страницы с результатами.

Клеман Михайлеску реализовал логику накопления данных:

Это позволило пользователю нажимать на кнопку и видеть, как список имен и фотографий дополняется новыми элементами без потери старых .

⚠️ Проблема зависимостей в useEffect 29:44

В финальной части собеседования возникла дискуссия по поводу предупреждения линтера в хуке useEffect. Инструменты анализа кода указывали на пропущенную зависимость — функцию fetchNextUser .

Позиции сторон распределились следующим образом:

В итоге Бен Авад признал, что Клеман Михайлеску успешно справился с интервью, продемонстрировав уверенное владение основными концепциями React.js . Собеседники упомянули, что вторая часть этой встречи, посвященная алгоритмам, доступна на канале гостя.

💬 Цитаты

«Я здесь, потому что меня заставил Бенджамин Авад, который хотел проверить «сдувшегося» фронтенд-разработчика.»

Клеман Михайлеску 0:27

«На каждом сайте вы отображаете список из API и используете пагинацию — это буквально большая часть веб-разработки.»

👥 Спикеры
🔗 Упомянутые сайты и проекты
📖 Термины
useState
Хук React для добавления состояния в функциональные компоненты.
useEffect
Хук для выполнения побочных эффектов, таких как запросы к API или подписки.
axios
Популярная библиотека для выполнения HTTP-запросов в браузере и Node.js.
Linter (линтер)
Инструмент для анализа кода на наличие потенциальных ошибок и несоответствие стилю.
📊 Цифры
🗓 Хронология
  1. 0:00 Начало интервью и обсуждение мотивации Клемана.
  2. 1:31 Реализация компонента-счетчика.
  3. 4:06 Подключение axios и первый запрос к API.
  4. 22:42 Добавление кнопки Load More и логики пагинации.
  5. 29:44 Дискуссия о правилах использования хуков React и зависимостях.
⚖️ Другая сторона
Технологии и IT React.js axios useState useEffect TypeScript