← Усі теми

Питання на співбесіді з керування станом (Senior) з відповідями

75 запитань для співбесіди з теми Керування станом (Senior) - з правильними відповідями, поясненнями й посиланнями на документацію.

Пройти цей тест
  1. 1.Чому Redux, Zustand і схожі бібліотеки підписуються через useSyncExternalStore?
  2. 2.Що не так із цим getSnapshot?
  3. 3.У чому різниця між моделлю «підписка на селектор» (Redux, Zustand) і Context?
  4. 4.Де в застосунку з роутингом найкраще зберігати стан фільтра списку (пошук, сортування, сторінка)?
  5. 5.Яка класифікація стану допомагає вибирати інструменти у великому застосунку?
  6. 6.Як зробити, щоб споживачі CartContext, які використовують лише дії в стилі dispatch, не перемальовувалися?
  7. 7.Чому провайдери Context у Next.js App Router виносять в окремий клієнтський компонент?
  8. 8.Чому «один великий AppContext з усім станом» вважається антипатерном?
  9. 9.Що додає use(Context) у React 19 порівняно з useContext?
  10. 10.Для чого потрібен createListenerMiddleware?
  11. 11.Що додає combineSlices у Redux Toolkit?
  12. 12.Чому в Redux-стор не кладуть проміси, екземпляри класів і функції?
  13. 13.Що потрібно мемоізованому селектору з createSelector, щоб він був ефективним з аргументами?
  14. 14.Чому Redux рекомендує структуру «ducks»/папки за фічами з createSlice?
  15. 15.Редʼюсер для orders/placed має також очистити слайс кошика. Як це зробити ідіоматично?
  16. 16.Чим небезпечний стор Zustand на рівні модуля під час SSR (Next.js)?
  17. 17.Як зберігати лише частину полів стору Zustand і обробляти зміни схеми?
  18. 18.Як реагувати на зміни Zustand поза React (наприклад, синхронізувати з SDK аналітики)?
  19. 19.Що дає стору Zustand middleware devtools?
  20. 20.Zustand чи Redux Toolkit: коли RTK - сильніший вибір?
  21. 21.Як реалізувати оптимістичне оновлення через кеш у TanStack Query?
  22. 22.Що таке structural sharing у TanStack Query?
  23. 23.Чому рекомендують фабрики ключів запитів?
  24. 24.Як передати попередньо завантажені на сервері дані TanStack Query клієнтським компонентам у Next.js App Router?
  25. 25.Чому на сервері не можна створювати один глобальний QueryClient для всіх запитів?
  26. 26.Що змінює useSuspenseQuery?
  27. 27.Що потрібно налаштувати для useInfiniteQuery?
  28. 28.Як у TanStack Query скасувати запит, що виконується, коли він став непотрібним?
  29. 29.Що дає опція select у useQuery?
  30. 30.Як зробити оптимістичне оновлення в RTK Query?
  31. 31.Як RTK Query вирішує, які запити перезапитати за тегів з id?
  32. 32.Для чого в ендпоінті RTK Query використовують transformResponse?
  33. 33.Як записати результат мутації прямо в закешований запит без перезапиту (песимістичне оновлення)?
  34. 34.Чи можуть RTK Query і стан createSlice співіснувати в одному сторі?
  35. 35.Як зробити оптимістичне оновлення через mutate у SWR?
  36. 36.Що дає useSWRMutation порівняно з викликом fetch, а потім mutate?
  37. 37.Як SWR уникає ререндера компонента, коли змінюються не пов'язані з ним поля відповіді?
  38. 38.Як передати в SWR дані, завантажені на сервері, щоб вони були в першого клієнтського рендера?
  39. 39.SWR чи TanStack Query: яке порівняння справедливе?
  40. 40.Чому кажуть, що loader'и маршрутів прибирають «водоспади запитів» порівняно із завантаженням у useEffect?
  41. 41.Як не перезапускати loader після кожного action на сторінці?
  42. 42.Як побудувати оптимістичний UI з fetcher у React Router?
  43. 43.Як стрімити повільні некритичні дані з loader'а React Router?
  44. 44.Чи потрібна бібліотека клієнтського кешу (TanStack Query) за наявності loader'ів React Router?
  45. 45.Як помилки валідації з action React Router мають потрапляти у форму?
  46. 46.Легасі-застосунок зберігає відповіді API в Redux-слайсах із ручними прапорцями завантаження. Яка міграція прагматична?
  47. 47.Як синхронізувати клієнтський стан двох вкладок браузера (наприклад, вихід в одній вкладці)?
  48. 48.Який головний ризик копіювання серверних даних з useQuery у стор Zustand/Redux?
  49. 49.Який підхід робить логіку стану найпростішою для юніт-тестів незалежно від бібліотеки?
  50. 50.Коли скінченний автомат (наприклад, XState) кращий за редʼюсер із прапорцями?
  51. 51.Як записувати оновлення з WebSocket у запис кешу RTK Query?
  52. 52.Як реалізувати нескінченне прокручування з одним записом кешу RTK Query?
  53. 53.Що дає збереження кешу TanStack Query (persistQueryClient) і за чим треба стежити?
  54. 54.Що відбувається із запитами TanStack Query, коли браузер переходить в офлайн (за замовчуванням networkMode: 'online')?
  55. 55.Що не так із цим оновленням кешу?
  56. 56.Як налаштовувати компоненти з TanStack Query в тестах?
  57. 57.Як дати кожному екземпляру складного віджета власний стор Zustand?
  58. 58.Як реагувати на дуже часті зміни Zustand (наприклад, позицію вказівника 60 разів на секунду) без перерендерів?
  59. 59.Як ефективно реалізувати undo/redo для стану великого документа?
  60. 60.Навіщо валідувати стан з URL (search-параметри) схемою?
  61. 61.Навіщо надсилати ключ ідемпотентності з оптимістичним запитом «створити замовлення», що може повторитися?
  62. 62.Як показати глобальний індикатор для всіх fetcher'ів React Router, що виконуються (наприклад, кількох кнопок «лайк»)?
  63. 63.Що дає опція provider для власного кешу в SWR?
  64. 64.Що зазвичай змінюється для клієнтських бібліотек стану, коли React Server Components завантажують дані на сервері?
  65. 65.Чому React Redux реалізує useSelector поверх useSyncExternalStoreWithSelector?
  66. 66.Як незалежно задеплоєні мікрофронтенди мають ділити стан на кшталт поточного користувача?
  67. 67.Коли допомагає useSelector(selector, shallowEqual)?
  68. 68.Який підхід підходить для спільного редагування, коли кілька користувачів змінюють один документ офлайн і онлайн?
  69. 69.Як оновити відредаговану задачу в усіх закешованих списках (відфільтрованих представленнях) одразу?
  70. 70.Чому залежні запити можуть створити водоспад і як його скоротити?
  71. 71.Чим staleTime: Infinity відрізняється від refetchOnMount: false?
  72. 72.Коли шина подій краща за спільний стан для взаємодії фіч?
  73. 73.Навіщо моделювати асинхронний стан дискримінованим об'єднанням, а не окремими полями?
  74. 74.Що не так із providesTags: (result) => result.map(({ id }) => ({ type: "Post", id }))?
  75. 75.Де зберігати незбережену чернетку довгої форми, щоб вона пережила перезавантаження чи збій?