Питання на співбесіді з Angular (Middle) з відповідями
75 запитань для співбесіди з теми Angular (Middle) - з правильними відповідями, поясненнями й посиланнями на документацію.
Пройти цей тест- 1.Що змінюється, коли компонент використовує
ChangeDetectionStrategy.OnPush? - 2.Чому OnPush-нащадок не оновлюється після
addItem()у батьку? - 3.Коли потрібен
ChangeDetectorRef.markForCheck()? - 4.Що означає
ExpressionChangedAfterItHasBeenCheckedError? - 5.Чим сигнали покращують change detection порівняно зі звичайними полями?
- 6.Як найкраще показати дані з Observable в OnPush-компоненті?
- 7.Яку задачу розв'язує
linkedSignal? - 8.Що робить
untracked()всерединіcomputedабоeffect? - 9.Як перетворити Observable на сигнал?
- 10.Що дає змогу зробити
toObservable(sig)? - 11.Що створює
model()? - 12.Для чого потрібен
transformу входу? - 13.Який оператор підходить для пошуку під час введення, щоб показувався лише результат останнього запиту?
- 14.Який оператор має обробляти кнопку «Оплатити», щоб подвійний клік не надіслав дублікати запитів?
- 15.Який оператор зберігає суворий порядок кількох запитів збереження, один за одним?
- 16.Для чого найкраще підходить
mergeMap? - 17.Навіщо в полі пошуку додавати
distinctUntilChanged()післяdebounceTime(300)? - 18.Чим
BehaviorSubjectвідрізняється відSubject? - 19.Чому цей код надсилає два HTTP-запити і як це виправити?
- 20.Чому в довгоживучому потоці
catchErrorтреба ставити всерединіswitchMap? - 21.Як у сучасному Angular відписатися від Observable під час знищення компонента?
- 22.Що відбувається, коли компонент вказує сервіс у своїх
providers? - 23.Навіщо використовувати
InjectionToken? - 24.Чим відрізняються
useClass,useValue,useFactoryіuseExisting? - 25.Що робить
multi: trueу провайдері? - 26.Як впровадити залежність, яка може бути не надана?
- 27.Що відбувається, коли лінивий маршрут оголошує
providers? - 28.Як ліниво завантажити standalone-компонент для маршруту?
- 29.Що повертає функціональний guard, щоб перенаправити користувача?
- 30.Чим
canMatchвідрізняється відcanActivate? - 31.Для чого потрібен резолвер?
- 32.Що вмикає
withComponentInputBinding()? - 33.Як попередити користувача перед виходом зі сторінки з незбереженими змінами?
- 34.Чому
ngOnInitне викликається знову під час переходу з/users/1на/users/2? - 35.Як написати власний синхронний валідатор?
- 36.Куди під'єднувати валідатор «паролі мають збігатися»?
- 37.Як поводяться асинхронні валідатори у формах Angular?
- 38.Для чого потрібен
FormArray? - 39.Що змінює
nonNullable: trueу типізованих реактивних формах? - 40.Що дає реалізація
ControlValueAccessor? - 41.Як отримати посилання на дочірній елемент чи компонент у класі?
- 42.Як зробити кілька іменованих слотів для проєктованого контенту?
- 43.Що робить цей блок
@defer? - 44.Чим відрізняються чисті й нечисті пайпи?
- 45.Який рекомендований спосіб прив'язки до host-елемента компонента?
- 46.Що таке атрибутна директива?
- 47.Як додати заголовок авторизації до кожного запиту?
- 48.Як протестувати сервіс із
HttpClientбез реальних мережевих запитів? - 49.Навіщо в тесті компонента викликати
fixture.detectChanges()? - 50.Як під час міграції на standalone і далі використовувати бібліотеку на NgModule?
- 51.Чим
forkJoinвідрізняється відcombineLatest? - 52.Як отримати одне значення з Observable через
async/await? - 53.Як повторити невдалий HTTP-запит тричі із затримкою?
- 54.Чим
ReplaySubject(3)відрізняється відBehaviorSubject? - 55.Що робить оператор
scan? - 56.Як одному запиту пропустити функціональний інтерсептор (наприклад, заголовок авторизації)?
- 57.Що змінює
provideHttpClient(withFetch())? - 58.Як відрендерити той самий фрагмент шаблону в кількох місцях компонента?
- 59.Що робить
hostDirectivesу компоненті чи директиві? - 60.Як виміряти розмір DOM-елемента після рендеру компонента?
- 61.Як зареєструвати код очищення із сервісу чи функції без
ngOnDestroy? - 62.Як віддати сигнал із сервісу, не дозволяючи компонентам його змінювати?
- 63.Як ліниво завантажити групу дочірніх маршрутів?
- 64.Як анімувати переходи між маршрутами через браузерний View Transitions API?
- 65.Що дозволяє
redirectToу вигляді функції? - 66.Як задати
InjectionTokenзначення за замовчуванням без додавання провайдерів? - 67.Як створити компонент динамічно й задати йому inputs?
- 68.Який тест-ранер за замовчуванням використовують нові проєкти Angular CLI починаючи з v21?
- 69.Як протестувати OnPush-компонент після зміни сигнального input?
- 70.Що змінює
toSignal(obs$, { initialValue: [] })порівняно зtoSignal(obs$)? - 71.Чим
rxResource(абоresource) кращий за ручну підписку вeffect? - 72.Чому варто уникати
subscribeу компоненті лише заради копіювання значень у поля? - 73.Для чого потрібен
@defer (on viewport; prefetch on idle)? - 74.Як передати шаблон від батька, щоб налаштувати, як дочірній компонент рендерить кожен елемент?
- 75.Як відрендерити список із 10 000 рядків, не створюючи 10 000 DOM-вузлів?