Angular’s structure rewards discipline and punishes cargo-culting. These questions check whether a candidate understands change detection, RxJS lifecycles and how to keep a large app fast.
Hiring a Angular developer is easy. Telling a real one from a convincing résumé is the hard part — and it’s most of what we do. These are grouped by level, because the same question that stretches a junior is a warm-up for a senior.
Junior Angular interview questions
0–2 years
Core building blocks and RxJS awareness.
What is dependency injection and why does Angular lean on it?
Components handle the view while reusable logic and data live in services that Angular injects; DI gives you singletons, testable seams and clear separation. They put shared state in services, not components.
Copies shared logic and state directly into components with no services.
What are Angular’s data-binding types?
Interpolation, property binding [], event binding (), and two-way [()] with ngModel. They can say which direction data flows in each.
Confuses the binding types or only knows interpolation.
What is an Observable and why must you unsubscribe?
An Observable is a stream of async values you subscribe to and transform with operators; long-lived subscriptions leak memory unless you unsubscribe, use takeUntil, or let the async pipe manage it.
Subscribes everywhere and never cleans up, causing leaks.
Mid-level Angular interview questions
2–5 years
Change detection and subscription hygiene.
How does change detection work and how do you optimise it?
Zone.js triggers change detection, which by default checks the whole component tree; OnPush with immutable inputs and the async pipe limits checks, and trackBy avoids re-rendering list items. They know the tradeoffs of OnPush.
Never uses OnPush, or mutates objects under OnPush and is confused why the view doesn’t update.
How do you prevent subscription memory leaks?
The async pipe where possible, takeUntil(destroy$) or takeUntilDestroyed, and unsubscribing in ngOnDestroy. Cleanup is a habit, not an afterthought.
Manual subscriptions with no teardown anywhere.
Reactive forms vs template-driven forms?
Reactive forms are explicit, strongly typed, testable and scale to dynamic forms; template-driven forms are fine for small, simple cases. They pick based on complexity.
Uses template-driven forms for large, dynamic, validation-heavy forms.
Senior Angular interview questions
5+ years
App structure, state and performance at scale.
How do you structure a large Angular application?
Feature modules or standalone components with lazy-loaded routes, a smart/dumb component split, and a deliberate state-management choice; clear boundaries over one eager root module. They optimise bundle loading.
One root module, everything eager, no lazy loading.
When do you reach for NgRx versus signals or services?
NgRx suits genuinely complex, widely-shared state with clear actions, effects and selectors; signals (v16+) or simple services fit lighter reactive state. They avoid over-engineering trivial state.
Reaches for NgRx for a handful of fields, or scatters mutable state across services.
How do you optimise Angular performance?
OnPush, trackBy, pure pipes, lazy loading and @defer, keeping heavy work out of templates, and analysing the bundle. They measure before optimising.
Ships large eager bundles and optimises by guesswork.
Browse the full series on the interview questions hub, or see how we assess engineers in our interview process.