Angular Developer Certification Exam — Questions and Answers
Question 1: How should Angular professionals approach client or stakeholder communication?
- Use clear, professional language appropriate to the audience, confirm understanding, and document key communications (Correct answer)
- Use technical jargon regardless of the audience
- Communication skills are unimportant for technical professionals
- Only communicate in writing, never verbally
Correct answer: Use clear, professional language appropriate to the audience, confirm understanding, and document key communications
Effective communication tailored to the audience's knowledge level is essential for building trust, ensuring understanding, and achieving professional objectives.
Question 2: Which FormArray property tells you how many controls it currently contains?
- size
- length (Correct answer)
- count
- controls.total
Correct answer: length
`FormArray.length` returns the number of controls currently in the array, mirroring the standard array API.
Question 3: Which FormArray method removes the control at a given index?
- remove(index)
- splice(index)
- delete(index)
- removeAt(index) (Correct answer)
Correct answer: removeAt(index)
`FormArray.removeAt(index)` removes the control at the specified position and updates the array's validity.
Question 4: What is the role of HttpParams in Angular HTTP requests?
- Defining named route parameters in the Angular router
- Configuring request timeout and retry intervals
- Building an immutable, encodable set of URL query string parameters (Correct answer)
- Storing server-side session variables between requests
Correct answer: Building an immutable, encodable set of URL query string parameters
HttpParams provides an immutable fluent API to construct, set, append, and percent-encode query string parameters for HTTP requests.
Question 5: What is the purpose of the <router-outlet name="sidebar"> syntax in Angular templates?
- It restricts which routes can render in that outlet
- It creates a secondary or auxiliary named outlet for rendering sibling routes (Correct answer)
- It sets the default outlet for all child routes
- It enables lazy loading for that outlet's routes
Correct answer: It creates a secondary or auxiliary named outlet for rendering sibling routes
Named outlets (auxiliary outlets) allow multiple independent router outlets to be active simultaneously, each rendering different routes.
Question 6: What does `@ContentChildren(ItemComponent)` return inside a component?
- A QueryList of all projected ItemComponent instances (Correct answer)
- The template reference of the content slot
- The first projected ItemComponent instance
- A static array of child component factories
Correct answer: A QueryList of all projected ItemComponent instances
@ContentChildren queries projected content and returns a live QueryList containing all matching component or directive instances.
Question 7: Which Angular template syntax creates a local template reference variable for a DOM element?
- let-refName
- @ref
- #refName (Correct answer)
- *ref
Correct answer: #refName
The hash (#) prefix in a template creates a local reference variable that can be used elsewhere in the same template.
Question 8: What is an Observable in Angular/RxJS?
- A visual component for displaying data
- A lazy collection of values that can emit multiple items over time and be subscribed to (Correct answer)
- A database query result set
- A CSS animation sequence
Correct answer: A lazy collection of values that can emit multiple items over time and be subscribed to
An Observable represents a stream of values over time, producing data only when subscribed to (lazy evaluation), and can emit zero or more values before completing or erroring.
Question 9: What methods would you use to test your NativeScript Angular app?
- Call it from a JSP
- Use a custom Eclipse plugin
- Run it in an Android emulator
- Run it in a web-browser (Correct answer)
Correct answer: Run it in a web-browser
The correct answer: <br> Run it in a web-browser
Question 10: Which Angular Router guard interface should you implement to prevent a user from leaving a form with unsaved changes?
- CanDeactivate (Correct answer)
- CanLoad
- Resolve
- CanActivate
Correct answer: CanDeactivate
CanDeactivate is called before leaving a route and can prompt the user to confirm navigation away from unsaved data.
Question 11: In Angular route configuration, what is the difference between 'children' and 'loadChildren'?
- children loads routes eagerly at app startup; loadChildren defers module loading until the route is first visited (Correct answer)
- children is for components; loadChildren is only for directives
- children supports guards while loadChildren does not
- loadChildren creates a new router instance; children reuses the current one
Correct answer: children loads routes eagerly at app startup; loadChildren defers module loading until the route is first visited
children defines eagerly loaded child routes inline, while loadChildren enables lazy loading by deferring the import of a feature module until needed.
Question 12: What is the difference between a service and a component in Angular?
- Components are only used on the server side
- There is no difference
- Components manage UI and views; services contain reusable business logic and data access (Correct answer)
- Services render HTML; components do not
Correct answer: Components manage UI and views; services contain reusable business logic and data access
Components are responsible for presenting the user interface and handling user interactions, while services encapsulate reusable logic, data access, and cross-cutting concerns shared across components.
Question 13: What ethical standards guide Angular professionals in their work?
- Maximizing personal profit is the primary ethical obligation
- Integrity, objectivity, confidentiality, and professional competence in all engagements (Correct answer)
- Ethics only apply when clients are watching
- Ethical standards are suggestions, not requirements
Correct answer: Integrity, objectivity, confidentiality, and professional competence in all engagements
Professional ethics require maintaining the highest standards of integrity, objectivity, and confidentiality while continuously developing competence.
Question 14: Which observable on a FormControl emits only when the control's validation status changes?
- stateChanges
- valueChanges
- validityChanges
- statusChanges (Correct answer)
Correct answer: statusChanges
`statusChanges` emits the new status string ('VALID', 'INVALID', 'PENDING', 'DISABLED') whenever it changes.
Question 15: What is the main benefit of immutable state updates in NgRx reducers?
- Allows direct DOM manipulation
- Reduces bundle size
- Faster HTTP requests
- Enables time-travel debugging and predictable state history (Correct answer)
Correct answer: Enables time-travel debugging and predictable state history
Immutable updates preserve previous state snapshots, enabling DevTools time-travel, replay, and deterministic state transitions.
Question 16: Which Angular injector level sits above the root (AppModule) injector?
- Platform injector (Correct answer)
- Environment injector
- Module injector
- Element injector
Correct answer: Platform injector
The platform injector is created by platformBrowserDynamic() and sits above the root injector; it holds platform-wide services shared across multiple Angular apps on the same page.
Question 17: Which property of ActivatedRoute gives you a snapshot of the route params without subscribing to an Observable?
- route.params
- route.snapshot.paramMap (Correct answer)
- route.queryParams
- route.paramMap
Correct answer: route.snapshot.paramMap
ActivatedRoute.snapshot provides a static snapshot of the current route state, avoiding the need for an Observable subscription.
Question 18: Which Angular feature delays loading a module until a user navigates to its associated route?
- Pre-fetching
- Tree-shaking
- Ahead-of-Time compilation
- Lazy loading (Correct answer)
Correct answer: Lazy loading
Lazy loading uses the loadChildren property in routing config to split a module into a separate chunk downloaded on demand.
Question 19: Why is it important to unsubscribe from Observables?
- To improve the speed of the Observable
- To reset the Observable to its initial value
- To prevent memory leaks by cleaning up subscriptions that are no longer needed (Correct answer)
- Unsubscribing is never necessary in Angular
Correct answer: To prevent memory leaks by cleaning up subscriptions that are no longer needed
Failing to unsubscribe from Observables (especially those that don't complete naturally) creates memory leaks, as the subscription continues holding references and processing emissions.
Question 20: What is tree-shaking in the context of Angular builds?
- Removing CSS from the bundle
- Splitting routes into chunks
- Compressing images at build time
- Eliminating unused JavaScript code from the final bundle (Correct answer)
Correct answer: Eliminating unused JavaScript code from the final bundle
Tree-shaking statically analyzes import/export chains and removes code that is never referenced, shrinking the final bundle.
Question 21: What is a standalone component in Angular?
- A component that uses shadow DOM encapsulation
- A component that declares its own dependencies without an NgModule (Correct answer)
- A component that cannot be lazy-loaded
- A component with no child components
Correct answer: A component that declares its own dependencies without an NgModule
Standalone components use `standalone: true` and list their own imports, removing the requirement to be declared in an NgModule.
Question 22: What does the pipe() method do in RxJS?
- Sends data through a physical pipe system
- Connects to a Unix pipe for command-line operations
- Chains multiple operators together to transform, filter, or combine Observable streams (Correct answer)
- Creates a new subscription to an Observable
Correct answer: Chains multiple operators together to transform, filter, or combine Observable streams
The pipe() method allows composing multiple RxJS operators (map, filter, switchMap, etc.) into a processing pipeline that transforms the Observable stream.
Question 23: Which hook would you use to clean up subscriptions or timers before a component is removed from the DOM?
- ngOnDestroy (Correct answer)
- ngDoCheck
- ngAfterViewChecked
- ngOnChanges
Correct answer: ngOnDestroy
ngOnDestroy is called just before Angular destroys the component, making it the correct place to cancel subscriptions and clear intervals.
Question 24: What value does `formControl.value` return when the control is disabled?
- The current value is still returned (Correct answer)
- null
- undefined
- An empty string
Correct answer: The current value is still returned
A disabled control retains its value; `formControl.value` still returns the current value even when disabled.
Question 25: Which class-level `providers` option in @Component creates a new service instance for every component instance?
- providedIn: 'component'
- viewProviders: [] with useClass
- providers: [MyService] inside @Component metadata (Correct answer)
- providedIn: 'any'
Correct answer: providers: [MyService] inside @Component metadata
Adding a service to a component's providers array causes Angular to create a fresh instance scoped to that component and its subtree.
Question 26: What career advancement paths exist for Angular certified professionals?
- No advancement is possible beyond initial certification
- Leadership roles, specialized consulting, education and training, and executive management positions (Correct answer)
- Only changing careers provides advancement
- Advancement requires leaving the field entirely
Correct answer: Leadership roles, specialized consulting, education and training, and executive management positions
Certified professionals can advance through specialization, leadership roles, consulting, academic/training positions, and executive management within their field.
Question 27: How does continuing education benefit Angular professionals?
- Continuing education is not needed after certification
- Continuing education is purely optional with no benefits
- Only beginners benefit from additional training
- It ensures practitioners stay current with evolving standards, technologies, and best practices (Correct answer)
Correct answer: It ensures practitioners stay current with evolving standards, technologies, and best practices
Professional fields evolve constantly — continuing education ensures practitioners maintain competence and stay current with industry developments.
Question 28: How do Angular professionals contribute to organizational success?
- Only executives contribute to organizational success
- They only perform routine tasks with no strategic impact
- Professional expertise has minimal organizational value
- By applying specialized knowledge to solve problems, reduce risks, improve processes, and drive strategic outcomes (Correct answer)
Correct answer: By applying specialized knowledge to solve problems, reduce risks, improve processes, and drive strategic outcomes
Certified professionals bring specialized expertise that directly contributes to organizational goals through problem-solving, risk reduction, process improvement, and strategic decision support.
Question 29: Which Angular directive efficiently re-renders only changed items in a list by tracking identity?
- async pipe
- *ngIf
- *ngFor with trackBy (Correct answer)
- *ngSwitch
Correct answer: *ngFor with trackBy
*ngFor with a trackBy function lets Angular identify which list items changed, avoiding full DOM re-creation on each update.
Question 30: How do you inject a service into an Angular component using the modern inject() function (Angular 14+)?
- private service = inject(MyService); (Correct answer)
- this.service = new MyService();
- providers: [MyService] inside @Component
- @Inject(MyService) service: MyService;
Correct answer: private service = inject(MyService);
The inject() function, called in an injection context (constructor or field initializer), retrieves the service from the current injector without constructor parameter syntax.
Question 31: When using `nonNullable: true` in a FormControl, what happens when `reset()` is called?
- An error is thrown
- The control cannot be reset at all
- The control resets to an empty string
- The control resets to its initial value instead of null (Correct answer)
Correct answer: The control resets to its initial value instead of null
A non-nullable FormControl stores its initial value and restores it on `reset()` rather than defaulting to null.
Question 32: In Angular, when is it appropriate to call `Injector.create()` to build a child injector manually?
- To register application-wide services at startup
- To register services after the app has bootstrapped using NgZone
- When you need a scoped injector outside the normal component tree, such as in a dynamic component scenario (Correct answer)
- To replace TestBed in unit tests
Correct answer: When you need a scoped injector outside the normal component tree, such as in a dynamic component scenario
Injector.create() is used to build ad-hoc child injectors with custom providers, useful when dynamically creating components or services outside Angular's normal hierarchy.
Question 33: What is the role of the Angular CLI's esbuild-based builder introduced in Angular 17?
- Provides significantly faster build and rebuild times replacing Webpack (Correct answer)
- Lints TypeScript files
- Runs Karma tests faster
- Generates API documentation
Correct answer: Provides significantly faster build and rebuild times replacing Webpack
Angular 17's application builder uses esbuild for up to 72% faster production builds and near-instant incremental rebuilds during development.
Question 34: What is the async pipe in Angular templates?
- A pipe for asynchronous CSS rendering
- A pipe for connecting to async database queries
- A pipe that automatically subscribes to an Observable, displays the latest value, and unsubscribes on destroy (Correct answer)
- A pipe for processing files uploaded asynchronously
Correct answer: A pipe that automatically subscribes to an Observable, displays the latest value, and unsubscribes on destroy
The async pipe subscribes to an Observable or Promise in the template, renders the latest emitted value, and automatically unsubscribes when the component is destroyed, preventing memory leaks.
Question 35: What is the switchMap operator used for?
- To map values from one data type to another
- To cancel the previous inner Observable and subscribe to a new one when the source emits (Correct answer)
- To toggle a boolean value in the stream
- To switch between different programming languages
Correct answer: To cancel the previous inner Observable and subscribe to a new one when the source emits
switchMap maps each source value to an inner Observable, automatically unsubscribing from the previous inner Observable when a new source value arrives, preventing stale requests.
Question 36: In a lazy-loaded module, where is a service provided if it is listed in that module's `providers` array?
- The root injector, shared with all modules
- A child injector created specifically for that lazy module (Correct answer)
- A platform injector shared across all apps on the page
- The component injector of the module's root component
Correct answer: A child injector created specifically for that lazy module
Lazy-loaded modules get their own child injector, so services provided there are isolated to that module and not shared with the rest of the application.
Question 37: What does calling markForCheck() on a component using OnPush change detection do?
- Detaches the component from the tree
- Reattaches a detached component
- Immediately runs change detection
- Marks the component and its ancestors to be checked on the next cycle (Correct answer)
Correct answer: Marks the component and its ancestors to be checked on the next cycle
markForCheck() flags the component and its ancestors so Angular includes them in the next change detection run.
Question 38: What NgRx operator is used inside createEffect() to handle errors without killing the effect stream?
- throwError()
- finalize()
- catchError with EMPTY or of() (Correct answer)
- retry()
Correct answer: catchError with EMPTY or of()
Using catchError inside the inner Observable (not the outer stream) and returning EMPTY or a fallback action keeps the effect alive after an error.
Question 39: What does the router's NavigationExtras.replaceUrl option do?
- It replaces the entire Angular route configuration at runtime
- It strips query parameters from the URL during navigation
- It changes the base URL of the application
- It updates the current URL without adding a new entry to the browser history stack (Correct answer)
Correct answer: It updates the current URL without adding a new entry to the browser history stack
Setting replaceUrl: true in NavigationExtras causes the router to replace the current browser history entry instead of pushing a new one.
Question 40: Which Angular SSR strategy pre-renders pages at build time for immediate static HTML delivery?
- Server-side rendering on request
- Client-side rendering
- Deferred loading
- Static site generation (prerendering) (Correct answer)
Correct answer: Static site generation (prerendering)
Angular's prerender feature (ng-universal or Angular 17+ built-in) generates static HTML files at build time for instant first-paint.
Question 41: What Angular decorator is used to mark a class as a route guard implementing CanActivate?
- @Guard()
- @Injectable() (Correct answer)
- @Component()
- @Directive()
Correct answer: @Injectable()
Route guards are Angular services decorated with @Injectable(), allowing them to be injected into the router's DI system.
Question 42: Which Angular testing utility configures providers for dependency injection in unit tests?
- TestBed.overrideProvider()
- TestBed.createComponent()
- TestBed.configureTestingModule() (Correct answer)
- TestBed.inject()
Correct answer: TestBed.configureTestingModule()
TestBed.configureTestingModule() sets up the testing module, including the providers array where you register real or mock services.
Question 43: What documentation best practices should Angular professionals follow?
- Documentation is only needed for billing purposes
- Maintain thorough, accurate, timely records that support findings, decisions, and compliance requirements (Correct answer)
- Documentation can be completed months after the work
- Brief notes are always sufficient
Correct answer: Maintain thorough, accurate, timely records that support findings, decisions, and compliance requirements
Comprehensive documentation provides an audit trail, supports decision-making, facilitates knowledge transfer, and demonstrates compliance with professional standards.
Question 44: How should Angular professionals handle conflicts of interest?
- Keep conflicts hidden to avoid complications
- Disclose potential conflicts, recuse when appropriate, and always prioritize the client's best interests (Correct answer)
- Only financial conflicts matter
- Conflicts of interest are normal and need not be addressed
Correct answer: Disclose potential conflicts, recuse when appropriate, and always prioritize the client's best interests
Conflicts of interest must be identified, disclosed, and managed transparently to maintain professional integrity and client trust.
Question 45: What is the difference between a Subject and an Observable?
- Observables can push values while Subjects cannot
- Subjects can only emit one value
- They are identical in every way
- A Subject is both an Observable and an Observer — it can emit values and be subscribed to (Correct answer)
Correct answer: A Subject is both an Observable and an Observer — it can emit values and be subscribed to
A Subject is multicast (multiple subscribers), can manually emit values using next(), and acts as both an Observable (can be subscribed to) and an Observer (can receive values).
Question 46: What is the return type of a valid (passing) custom validator function?
- false
- undefined
- null (Correct answer)
- { valid: true }
Correct answer: null
A validator must return `null` when the control is valid; any non-null object signals an error.
Question 47: What Angular pipe should you use to avoid repeated heavy computations in templates?
- Impure custom pipe
- Pure custom pipe (Correct answer)
- json
- async
Correct answer: Pure custom pipe
A pure pipe is only re-executed when its input reference changes, caching the result and skipping recomputation on every change detection cycle.
Question 48: What is the most critical compliance requirement in Angular development?
- Compliance is optional for certified professionals
- Only following regulations when audited
- Ignoring regulations to save time
- Following all applicable federal and state regulations while maintaining detailed documentation (Correct answer)
Correct answer: Following all applicable federal and state regulations while maintaining detailed documentation
Compliance with applicable regulations is fundamental to professional practice, requiring knowledge of current requirements and meticulous documentation.
Question 49: Which Angular strategy checks only the current component and its ancestors when an input reference changes?
- Manual
- Default
- Detached
- OnPush (Correct answer)
Correct answer: OnPush
OnPush change detection only runs for a component when its input references change, an event originates from it, or an async pipe resolves.
Question 50: Which Angular Signals API schedules a side effect that reruns whenever its dependent signals change?
- toSignal()
- computed()
- signal()
- effect() (Correct answer)
Correct answer: effect()
effect() registers a reactive side effect that Angular automatically re-executes whenever any signal it reads changes.
Angular Developer Certification Exam
The Angular Developer Certification, created by Google Developer Experts via certificates.dev, validates proficiency in building Angular applications including components, services, routing, forms, RxJS, state management, and testing.
Exam Rules
- You can skip questions and return to them later
- Flag questions for review before submitting
- No feedback shown until you submit the entire exam
- Unanswered questions count as wrong — answer everything
- 10 pretest questions are mixed in and don't affect your score
- Timer auto-submits when time runs out
- Your progress is auto-saved every 30 seconds
These practice questions were written with AI tools. They are not real exam questions. We have not yet matched this exam's facts to an official source, so confirm fees, dates and rules with the exam body. Not reviewed by a subject-matter expert. Editorial policy