8 питань

Питання на співбесіді з React

Питання рівня Junior

  1. 1. Чим props відрізняються від state у React?

    Відповідь

    Props компонент отримує від батька, і для нього вони лише для читання. State це внутрішні дані компонента, якими він керує сам через useState або useReducer. Зміна state або нових props спричиняє повторний рендер. Якщо дані можна обчислити з props, окремий state для них не потрібен.

    Додаткове питання: Чому не можна змінювати state напряму, наприклад state.items.push(x)?

    Розбір теми в курсі: React: старт

  2. 2. Навіщо потрібен key при рендері списків?

    Відповідь

    key допомагає React зіставити елементи списку між рендерами і зрозуміти, що додали, видалили чи переставили. Ключ має бути стабільним і унікальним серед сусідів, найкраще id з даних. Індекс масиву як ключ ламає стан елементів і анімації, коли список сортують, фільтрують або вставляють елементи на початок. Без ключа React покаже попередження в консолі.

    Додаткове питання: Як можна навмисно скинути стан компонента за допомогою key?

    Розбір теми в курсі: React: старт

  3. 3. Як працює useEffect і що означає масив залежностей?

    Відповідь

    useEffect запускає побічний ефект після рендеру: запит, підписку, таймер. Без масиву залежностей ефект виконується після кожного рендеру, з порожнім масивом лише після монтування, а зі значеннями тоді, коли якесь із них змінилось. Функція, яку повертає ефект, це cleanup: React викликає її перед наступним запуском ефекту і при розмонтуванні. У cleanup відписуються, очищають таймери і скасовують запити.

    Додаткове питання: Чому в режимі розробки зі StrictMode ефект запускається двічі?

    Розбір теми в курсі: React: старт

  4. 4. Що таке контрольовані та неконтрольовані поля форми?

    Відповідь

    У контрольованому полі значення зберігається в state і передається через value, а зміни приходять через onChange. Так React є єдиним джерелом правди, і легко робити валідацію чи форматування під час введення. У неконтрольованому полі значення живе в DOM, його читають через ref або з події submit, а початкове задають через defaultValue. Неконтрольовані поля простіші й рендеряться рідше, але гірше підходять для складної логіки.

    Додаткове питання: Що станеться, якщо передати value без onChange?

    Розбір теми в курсі: React: старт

  5. 5. Як передати дані між двома сусідніми компонентами?

    Відповідь

    Спільний state піднімають до найближчого спільного батька і передають униз через props разом із функціями для його зміни. Якщо дані потрібні глибоко в дереві й прокидання props стає незручним, використовують Context. Context підходить для рідко змінних даних на кшталт теми чи поточного користувача. Для складного глобального стану беруть окрему бібліотеку, наприклад Zustand або Redux.

    Додаткове питання: Чому зміна значення Context може спричинити зайві рендери?

    Розбір теми в курсі: React: старт

Питання рівня Middle

  1. 1. Що змушує компонент рендеритися повторно?

    Відповідь

    Компонент рендериться знову, коли змінюється його state, коли рендериться батько або коли змінюється Context, який він читає. Рендер батька за замовчуванням рендерить усіх дітей, навіть якщо їхні props не змінились. React.memo пропускає рендер, якщо props поверхнево рівні. Рендер ще не означає зміну DOM: React оновлює DOM лише там, де результат відрізняється.

    Додаткове питання: Чому React.memo не допоможе, якщо передавати в props новий об'єкт на кожен рендер?

    Розбір теми в курсі: React: старт

  2. 2. Навіщо потрібні useMemo і useCallback? Коли їх не варто використовувати?

    Відповідь

    useMemo запам'ятовує результат обчислення, а useCallback саму функцію, доки не зміняться залежності. Вони корисні для дорогих обчислень і для стабільних посилань, які передають у React.memo компоненти або в залежності useEffect. Мемоізація має свою ціну: пам'ять і порівняння залежностей. Обгортати все підряд немає сенсу, спершу варто знайти реальну проблему в профайлері.

    Додаткове питання: Як React Compiler змінює потребу в ручній мемоізації?

    Розбір теми в курсі: React: старт

  3. 3. Що таке reconciliation і як React вирішує, що оновити в DOM?

    Відповідь

    Reconciliation це процес порівняння нового дерева елементів із попереднім. React порівнює дерева евристично: якщо тип елемента на тому ж місці змінився, піддерево знищується і створюється заново разом зі станом. Якщо тип той самий, React оновлює лише змінені атрибути і рекурсивно йде в дітей. Для списків він зіставляє елементи за key, а потім застосовує мінімальний набір змін до DOM.

    Додаткове питання: Чому оголошення компонента всередині іншого компонента скидає його стан на кожному рендері?

    Розбір теми в курсі: React: старт

Тренуй ці питання

Вчи картки, відповідай текстом або голосом і отримуй оцінку AI. Потрібен вхід в акаунт.

Відповідай уголос і отримуй оцінку

Тут питання з еталонними відповідями. У застосунку ShortLesson ти відповідаєш сам, текстом або голосом, а AI оцінює відповідь за критеріями і ставить додаткове питання, як на справжній співбесіді.

Застосунок незабаром з'явиться в магазинах.

Інші теми