13 Angular Concepts You Must Master Before Your Next Interview (2026 Edition)
TL;DR — If you can explain these 13 ideas from code, you won’t “pass the interview.” You’ll set the bar. This isn’t a “tips & tricks” post. It’s a code-first mental model for senior Angular interviews
TL;DR — If you can explain these 13 ideas from code, you won’t “pass the interview.” You’ll set the bar. This isn’t a “tips & tricks” post. It’s a code-first mental model for senior Angular interviews in 2026: correct snippets, and measurable performance instincts. 1) Change detection & OnPush
2) Observables: cancellation + core RxJS operators
3) DI hierarchies: provider scope + tree-shakable providers
4) Lazy loading + targeted preloading
5) Router guards, resolvers, and route composition
6) Reactive forms with performance in mind
7) NgZone + running work outside Angular
8) trackBy, pure pipes, and memoization for lists
9) Build targets: AOT, prod flags, bundle analysis
10) State patterns: local vs global + Signals (or stores)
11) Testing: TestBed, shallow tests, spies
12) Security: XSS, CSP, sanitizer usage
13) Performance profiling + measurable metrics Each section gives: Problem (what breaks in real systems) Change (what you do in Angular 17–21+) Code (minimal, interview-whiteboard friendly) Why it works (the mechanism) Interview move (the “senior” answer) OnPush
Problem
Default change detection checks more than you think. Small UI updates become expensive as the tree grows. Adopt push-based updates: ChangeDetectionStrategy.OnPush plus immutable inputs via Observables or Signals. import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { Observable } from 'rxjs';
interface User { id: string; name: string; }
@Component({ selector: 'user-row', template: `{{ user$ | async | json }}`, changeDetection: ChangeDetectionStrategy.OnPush }) export class UserRow { @Input() user$!: Observable<User>; }
With OnPush, Angular checks this component when: an @Input reference changes (identity change), an Observable emits through async, you manually signal (markForCheck, Signals effects, or events). Explain when OnPush won’t update (mutating objects, “same reference”) and how you fix it: immutable updates, ChangeDetector