Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Для чего нужны callback и что такое Callback Hell?
Колбэк (callback) — это функция, которая передается другой функции в качестве аргумента и вызывается позже, когда произойдет какое-то событие или завершится операция. Проблема "Callback Hell" возникает, когда функции начинают вкладываться друг в друга слишком глубоко, что делает код трудночитаемым и сложным для поддержки.
Отличие useMemo от useCallback.
useMemo и useCallback оба предназначены для оптимизации производительности в React, но служат разным целям. useMemo запоминает вычисленные значения, а useCallback запоминает функции. Это позволяет избежать лишних вычислений и создания функций при каждом рендере компонента.
Для чего нужны useMemo и useCallback? Как работает мемоизация?
useMemo: Кэширует результат вычислений, пересчитывая только при изменении зависимостей.
useCallback: Кэширует функцию, предотвращая её пересоздание.
Оба помогают избежать лишних ререндеров.
Гарантирует ли setTimeout выполнение callback ровно через заданное время?
setTimeout не гарантирует выполнение callback ровно через указанное время. Он гарантирует, что callback не выполнится раньше, чем пройдёт заданная задержка. После истечения задержки callback попадает в очередь задач и будет выполнен, когда освободится call stack. На фактическое время влияет нагрузка, блокировки и приоритеты очередей. Поэтому таймер часто срабатывает позже.
В чем разница между useMemo и useCallback?
useMemo мемоизирует вычисляемое значение.useCallback мемоизирует функцию.
Оба хука зависят от массива зависимостей.
Они используются для оптимизации перерендеров.
Какие есть издержки у чрезмерного использования useMemo и useCallback?
Чем отличается передача значения и callback в setState?
Почему this внутри callback функции filter может быть undefined?
Как передать корректный контекст в callback массива?
В чём разница между мемоизацией значений и мемоизацией функций?
Рейтинг:
5
Сложность:
6
useMemo и useCallback сами по себе имеют стоимость. Они усложняют код и увеличивают когнитивную нагрузку. При неправильном использовании они не дают выигрыша в производительности. Иногда они даже замедляют приложение. Эти хуки нужно применять осознанно и точечно.
Рейтинг:
5
Сложность:
5
Передача значения в setState напрямую подставляет новое состояние, а callback (функция-обновитель) вычисляет его на основе предыдущего. Callback гарантирует корректность при нескольких обновлениях подряд. Это особенно важно при асинхронных событиях и батчинге обновлений. В React hooks callback — это предпочтительный способ при зависимостях от старого состояния.
Рейтинг:
4
Сложность:
6
this внутри callback-функции filter может быть undefined, потому что callback вызывается как обычная функция, а не как метод объекта. В строгом режиме ("use strict") значение this в таких функциях равно undefined. Контекст не “передаётся автоматически” внутрь callback. Поэтому this там часто оказывается не тем, что ожидают.
Рейтинг:
5
Сложность:
6
Корректный контекст в callback можно передать несколькими способами: использовать стрелочную функцию, явно привязать this через bind или передать второй аргумент в методы массива. Самый популярный и безопасный способ — стрелочные функции, так как они не имеют собственного this. Выбор подхода зависит от стиля кода и окружения.
Рейтинг:
5
Сложность:
6
Мемоизация значений (useMemo) сохраняет результат вычисления, чтобы не пересчитывать его без нужды. Мемоизация функций (useCallback) сохраняет ссылку на функцию, чтобы она не создавалась заново. В React это важно из-за shallow сравнения props и зависимостей. Оба инструмента полезны, когда вычисления дорогие или когда ссылка влияет на ререндер дочерних компонентов.
Рейтинг:
5
Сложность:
6
Рейтинг:
5
Сложность:
7
Рейтинг:
2
Сложность:
7
Рейтинг:
5
Сложность:
6
Рейтинг:
5
Сложность:
7