I started searching for new opportunities as Mid-Senior Angular Developer from 20th May 2022. This would be my first ever switch. In span of 3 months, I have interviewed with 38 companies (mostly service based and not-so-famous product based). Here is the list of questions that were asked.
JavaScript
HTML
CSS
Design Patterns
TypeScript
Angular
Coding
-
Objects
- What and why
- compare two objects
- ways to create object
- shallow vs deep copy
- immutability (how can we achieve that)
-
Scopes and Variables
- Scope
- Hoisting
- Scope chaining
- IIFE
- Closures
-
Context
- this keyword and its behaviour in multiple scenarios
- call / bind / apply
- regular functions vs arrow function
-
Async
- async / await
- async programming using iterator / generator
- Promises
- Callbacks
-
OOPS
- Classes
- Prototypes & Inheritance
- constructor, extends, static, public, private
-
Types and Equality
- Different primitive and reference types and how are they stored in memory
- == && ===
- Auto type conversion in JavaScript
- NaN and isNaN
-
Web API
- setTimeout / setInterval
- Event Loop, Macro and Micro task queues
- Storage API: Local, Session, IndexedDB, Cookies, Caching
- Web Workers and Service Workers (steps to create service workers)
- Garbage Collection process
-
Miscellaneous
- Data Structures: Set, WeakSet, Map, WeakMap, Stack and Queue
- Recursion
- Currying
- Event bubble, capture and delegation
- Latest ECMA version with new features, ES5 vs 6 vs 7 and so on...
- How to debug: code and event breakpoints
- Browser rendering behaviour and performance
- Semantic Tags
- Pseudo Elements and pseudo selectors
- Importance of META tags
- Shadow DOM
- Importance of DOCTYPE
- AMP HTML
- Alignment properties
- Box Model
- Flexbox or Grid (I prefer Flexbox)
- Position properties
- Block vs inline vs inline-block vs flex
- display vs visibility
- specificity order
- how to debug CSS
- pixel vs em vs rem
- Steps for converting existing non-responsive site to responsive
- SCSS
- BEM
- Media Queries (with various jargons like landscape, portrait etc)
- Box model vs flex model
All of below implement with examples
- Observable
- Modular (Common / UMD / AMD / IIFE)
- Singleton
- Factory
- OOPS concepts
- SOLID principle
- When to create Interface vs Enums vs Abstract Class
- Tuples
- Any vs Unknown
- Generic functions
- Ivy working and advantages
- Ivy vs ViewEngine
- Explain Dependency Injection (explain hierarchial injector mechanism, useCalss, useValue, useFactory, Host, Self, Skipself, Optional)
- Explain Change Detection (ngZone, default, onpush, detectChanges, markforCheck, detach, reattach)
- Observables vs Promises
- Unicast vs Multicast
- Types of Subjects and use cases
- RxJs operators that you have used frequently
- Higher order mapping RxJs operators - MergeMap, ContactMat, ExhaustMap and SwitchMap
- forkJoin vs combinedLatest vs withLatesFrom vs zip
- Lazy Loading and associated strategies
- Location strategies
- Router vs ActivatedRoute
- Marble diagrams
- JIT vs AOT
- Types of Directives
- Services and multiple methods involved to provide them
- Life cycle hooks
- Router life cycle
- expressionchangedafterithasbeencheckederror - cause and fix
- other types of angular specific errors - cause and fix
- cyclic dependency - cause and fix
- NgModule vs JS Module
- Template Driven Form - focus on ngModel
- Reacive forms - ControlValueAccesor and create a custom validator function
- Security best practices
- How to avoid performance bottleneck & improve performance
- Angular Dev tools and how to use them
- Update base-href dynamically
- Route reuse strategy
- javascript expression vs angular expression
- scopes in angular
- ng-container vs ng-template vs ng-content
- view-children vs content-children
- state management
- unit testing using jasmine / jest
- importance of files generated post build (main, vendor, polyfill, styles, scripts, lazy-loaded-bundles)
- Angular CLI commands that you use frequently
- tsconfig and angular.json - importance?
- How to bootstrap multiple modules?
- App Initializer and where have you used that?
- How to upgrade angular from lower versions to latest one (explain detail procedure and stps to be taken)
- When to use onpush and when to stick with default?
- Decision between making reusable components vs dynamic components?
- Basics on SSR and Angular custom Library
- Lift (Elevator)
- Coffee Vending Machine
- Dynamic Forms (available tools - Angular, AWS and Web API)
- Dashboard (should work smoothly on lower end devices and slow n/w)
- Feature Flags
- Reusable components (accordion, modals - should be customizable and reusable by any framework / library)
-
JavaScript
- Array - questions involving map, filter, reduce, sort (custom comparator), flat, copy
- Objects - deep clone, flatten nested object, find cycles
- Polyfills - map, reduce, filter, flat (recursive and iterative), Promise.all
- Fibonacci Series (generate till n, return nth value)
- Prime Number generator (generate till n, return nth value)
- Currying: multiply(1)(2)(3)(), sum(1)(2,3), sum(1,2,3)
- 2sum
- Group anagrams, check if anagram, remove anagram
- longest substring, return len. of largest common subsequence of two strings
- Debounce and Throttling (with and without setTimeout)
- Memoize function
- Group properties from array (just to test your concept around groupby method)
- Integer to Roman and vice versa
-
Angular
- Timeout feature (logout user after inactivity) using RxJs
- delay with retry n times using RxJs
- Modal using Dynamic Components
- Reactive forms with error handling
- Create custom Observable and operator
- Custom pipes with multiple arguments and chain
- Fix broken unit test cases
- Create Auth Guard
- NgRx (create simple store, reducer, action and effect)
- Custom Attribute directive and use HostListener and HostBinder
- Various techniques of component Communication
- fetch data from dummy endpoint and display in HTML with async pipe
-
HTML / CSS / Vanilla Javascript
- Carousel
- Destroy all timeouts and intervals
- search box with debounce
- listing page like amazon
- hamburger icon
- responsive nested navigation bar
- multi select dropdown
- Accordion with customization to add icons and test dynamically
- Type ahead
- tooltip