Питання на співбесіді з патернів проєктування (Middle) з відповідями
75 запитань для співбесіди з теми Патерни проєктування (Middle) - з правильними відповідями, поясненнями й посиланнями на документацію.
Пройти цей тест- 1.Який патерн застосовано під час рефакторингу?
- 2.Чому функція
subscribeу реалізації Observer зазвичай повертає функцію відписки? - 3.Чим Декоратор відрізняється від Замісника (Proxy), якщо структура в них схожа?
- 4.Чим Адаптер відрізняється від Фасаду?
- 5.Коли доречна «Абстрактна фабрика», а не проста фабрика?
- 6.Чим небезпечний модульний синглтон (
export const cache = new Map()) у SSR-застосунку? - 7.Як реалізувати undo/redo через патерн «Команда»?
- 8.Чому набір прапорців
isLoading,isError,isSuccessгірший за явний стан? - 9.Який ризик має глобальна шина подій (event bus) як реалізація Mediator?
- 10.Який патерн реалізують interceptors в axios чи обгортки над
fetch? - 11.Як рендерити дерево коментарів довільної вкладеності?
- 12.Як генератор допомагає реалізувати Ітератор для посторінкового API?
- 13.Чим «Шаблонний метод» відрізняється від «Стратегії»?
- 14.Чому іммутабельний стан спрощує патерн «Знімок» (Memento)?
- 15.Який патерн використовує Babel чи ESLint-плагін, що обходить AST із методами
Identifier(),CallExpression()? - 16.Сповіщення бувають трьох типів і надсилаються трьома каналами (email, push, SMS). Який патерн позбавить від 9 класів?
- 17.Навіщо на фронтенді шар «репозиторіїв» або API-сервісів замість
fetchпросто в компонентах? - 18.Як впровадити залежність у React-компоненти, щоб у тестах підмінити API-клієнт?
- 19.Яка із ситуацій порушує принцип підстановки Лісков?
- 20.Компонент
UserCardприймаєuser: User(30 полів), а використовує лише ім'я й аватар. Який принцип порушено? - 21.Що каже закон Деметри про код
order.customer.address.city.name? - 22.Що таке односпрямований потік даних в архітектурі Flux?
- 23.Чим MVVM відрізняється від підходу React?
- 24.Які патерни можна побачити в Redux?
- 25.Який порядок шарів Feature-Sliced Design згори вниз?
- 26.Навіщо у FSD кожен слайс має публічний API (
index.ts)? - 27.Чим можуть зашкодити barrel-файли (
index.ts, що реекспортують усе підряд)? - 28.Яке головне правило Clean Architecture?
- 29.Де краще тримати бізнес-правила (наприклад, розрахунок знижки) у фронтенд-застосунку?
- 30.Що описує Atomic Design?
- 31.Що таке «стрілянина шротом» (shotgun surgery)?
- 32.Що таке «заздрісна функція» (feature envy)?
- 33.Що таке «одержимість примітивами» (primitive obsession) і як її лікувати?
- 34.Чому кажуть «дублювання дешевше за неправильну абстракцію»?
- 35.Що таке патерн Null Object?
- 36.Як реалізувати ліниву ініціалізацію важкого об'єкта?
- 37.Чим погані міксини (
Object.assign(Class.prototype, mixin))? - 38.Що таке патерн Registry на прикладі плагінів?
- 39.Чим mock відрізняється від stub у тестах?
- 40.Що таке «тестова піраміда»?
- 41.Що таке headless-компонент з погляду патернів?
- 42.Який патерн використовується в «слотах» компонента (
<Card header={...} footer={...}>)? - 43.Що таке функція вищого порядку з погляду патернів?
- 44.Як пов'язані event delegation і патерн «Легковаговик»?
- 45.Чим
useReducerблизький до патерну «Стан»? - 46.Який патерн реалізує
React.memoабо функціяmemoize(fn)? - 47.Коли варто виділяти абстракцію за «правилом трьох»?
- 48.Який патерн реалізує Proxy-об'єкт у Vue 3 чи MobX для реактивності?
- 49.Що таке «анемічна модель» і чому її критикують?
- 50.Чим DI-контейнер (Angular, InversifyJS) відрізняється від ручного передавання залежностей?
- 51.Як Parallel Change (expand/contract) допомагає змінити широко вживану сигнатуру функції?
- 52.Що таке Branch by Abstraction?
- 53.Що таке патерн Humble Object?
- 54.Навіщо обгортати зовнішній платіжний SDK у власний Gateway?
- 55.Яку проблему розв'язує Unit of Work, наприклад у редагованій таблиці?
- 56.Що дає патерн «Специфікація» для складних фільтрів?
- 57.Навіщо додавати jitter до експоненційної затримки під час повтору запитів?
- 58.Як не дати двом користувачам непомітно перезаписати правки одне одного в тому самому записі?
- 59.Що таке патерн Result (Either) для обробки помилок?
- 60.Як композиція допомагає уникнути prop drilling без Context?
- 61.Чому хуки замінили більшість render props і HOC?
- 62.Як зазвичай реалізують складені компоненти в React?
- 63.Що таке поліморфний проп
as? - 64.Що таке патерн state reducer?
- 65.Що таке prop getters?
- 66.Що таке запах «розбіжні зміни» (divergent change)?
- 67.Що таке «теоретична загальність» (speculative generality)?
- 68.Що таке групи даних (data clumps) і як їх виправляють?
- 69.Як безпечно рефакторити легасі-код без тестів?
- 70.Чому старі feature flags стають технічним боргом?
- 71.Що таке collection pipeline?
- 72.Чим корисні каррування й часткове застосування?
- 73.Чим корисний «Адаптер» під час заміни бібліотеки дат?
- 74.Чому «Ланцюжок обов'язків» добре пасує для правил валідації?
- 75.Навіщо використовувати «Фасад» для складної функції на кшталт завантаження відео (чанки, повтори, прогрес)?