1745 вопросов для подготовки на позицию Frontend-разработчик
1745 вопросов1634 компании353 технологии
Что проверяют на интервью
Как устроена подборка
Подборка помогает системно подготовиться к интервью на позицию Frontend-разработчик: проверить теорию, потренировать практические задачи и объяснение решений. В подборке чаще встречаются темы: frontend, browser, react.
Мемоизация полезна для чистого дорогого вычисления, но Date.now меняется со временем: кэширование изменит наблюдаемое поведение. handleSend зависит от inputText и не может быть навсегда заморожен через [].
Вынесите ClientType в независимый модуль, сервис пусть принимает clientId и возвращает уже разобранные данные. Компонент должен управлять загрузкой, ошибкой и отменой устаревшего запроса.
В показанном варианте useCallback уже использован корректно: функция стабильна, updater не читает visible из замыкания, Button обёрнут в memo. Явной ошибки оптимизации здесь нет.
Не запускайте fetch на каждом рендере: это создаст цикл запросов. Выполняйте его при изменении URL или явной перезагрузке, накапливая успешно полученные ответы в состоянии хука.
Загрузите /api/items в эффекте, извлеките payload.list и отобразите элементы с key=id. Предусмотрите загрузку, ошибку, пустой список и отмену запроса при размонтировании.
Причина повторной подписки — новая inline-функция callback при каждом рендере App. Стабилизируйте её через useCallback и не пересоздавайте объект listenerOptions без изменения значений.
Представленный JSX уже синтаксически корректен. Реальные слабые места — всего десять возможных id, неточная модель таймера и div вместо доступной кнопки; исправлять несуществующие ошибки не нужно.
При чётном counter число скрыто, при нечётном показано. Эффект запускается после первого commit и изменения props.value, но не при изменении одного counter: его нет в зависимостях.
В коде есть незакрытые return, присваивание вместо сравнения, null вместо массива, неубранный обработчик и вероятное сохранение Promise в state. Исправления нужны и в JSX, и в эффекте загрузки.