Skip to content

Detailed Scoring System (Keyword-Based)

👉 Rule: Each answer has key concepts (keywords).

  • Candidate gets 1 point per keyword (unless noted otherwise).
  • If they cover all keywords → full score.
  • Partial answers get proportional points.
  • Some questions will have a point for I don't know

JavaScript Core & Event Loop (25 points)

QuestionMax PointsKeywords (1 point each)
== vs ===2== does type coercion, === strict equality, no coercion
Data types3Primitive, Non-primitive, Examples (string/number/object etc.)
var / let / const2Scope difference, Reassignment/Hoisting difference
null vs undefined2null = intentional empty, undefined = uninitialized
Arrow vs Normal function (this)3Normal = dynamic this, Arrow = lexical this, Example
Hoisting & Closures3Hoisting = declarations move up, Closure = inner function keeps outer scope, Example
ES6 updates2let/const, Arrow functions, Destructuring/Modules
Array cloning2slice(), [...arr], Array.from()
Looping objects2for...in, Object.keys/values/entries
Map vs forEach2map returns new array, forEach returns undefined
Event Loop example2Sync first, Microtasks (Promise), then Macrotasks (setTimeout)

What is the difference between == & ===2
does type coercion1
strict equality, no coercion1

Senior-Level JavaScript (15 points)

Walk me through a scenario where you optimized a complex grid with thousands of rows.10
Virtual scrolling / infinite scroll1
Pagination (client-side or server-side)1
Server-side filtering and sorting1
Column virtualization (render only visible columns)1
Lazy loading of data chunks1
OnPush change detection strategy1
TrackBy in *ngFor for stable DOM reuse1
Debouncing search/filter inputs1
Caching frequently accessed data1
Preloading lightweight summaries before full detail load1
What is the difference between Default and OnPush change detection strategies?8
Runs change detection for the entire component tree whenever any event occurs (click, HTTP response, timer, input, etc.)1
Checks all components, even if their inputs didn’t change.1
Easier for beginners, but less performant in large apps.1
Runs change detection when : Component input reference changes1
Runs change detection when : An event originates from inside the component1
Runs change detection when : Or you manually trigger it (e.g., using `ChangeDetectorRef.markForCheck()`)1
Skips re-checking components unnecessarily1
More performant and predictable for ERP-scale applications.1
QuestionMax PointsKeywords
Browser request flow4DNS Lookup, TCP/HTTPS request, Server sends HTML/CSS/JS, Parsing & Rendering, JS executed (event loop)
Remove duplicates from array2Set, Filter + indexOf
call vs apply vs bind3call(args list), apply(args array), bind returns new function
Tree shaking3Remove unused code, ES modules, Reduce bundle size
Web Vitals3LCP, FID, CLS, Measure performance & UX

Angular (35 points)

QuestionMax PointsKeywords
Angular & building blocks3Modules, Components, Services, Templates, Metadata
Lifecycle hooks3ngOnInit, ngOnChanges, ngOnDestroy
Directives & Pipes3Structural, Attribute, Built-in Pipes, Custom
Promise vs Observable3Promise = single value, Observable = stream/multiple, cancellable
Change Detection (deep)5Zone.js triggers, Component tree re-check, Default strategy, OnPush strategy
Signals & difference5Fine-grained reactivity, No Zone.js, Automatic change tracking, More performant
Encapsulation2Emulated, ShadowDom, None
Dependency Injection3Injector provides, Singleton pattern, Hierarchical injectors
Service vs Class2Service managed by DI, Class instantiated manually
Provided in root vs module2Root = singleton app-wide, Module = new instance per module
Interceptor2Intercept HTTP requests/responses, Auth/logging/error handling
Guard2CanActivate/Deactivate, Route protection
Resolver2Pre-fetch data before routing
Compilation types2JIT (runtime), AOT (build time)
Authentication vs Authorization2Auth = identity, Authorization = permissions

Performance Optimization (10 points)

QuestionMax PointsKeywords
Angular optimization strategies10OnPush, trackBy, Lazy Loading, Preloading, Signals, Tree Shaking, Build Optimizer, Lazy loading images, Web Workers, Caching, SSR

Live Coding (15 points)

ExerciseMax PointsKeywords
Reverse string2split, reverse, join
Remove duplicates2Set, filter
Find max number2Math.max, Spread operator
FizzBuzz2%3, %5, Output "Fizz", "Buzz", "FizzBuzz"
Debounce function3Clear timeout, Set timeout, Return wrapper function
Deep clone object2structuredClone, JSON.parse(JSON.stringify(obj))
Angular trackBy2trackByFn, Return unique id, Performance benefit

Scoring Guidelines

  • ✅ Mention all keywords → full score.
  • ⚠️ Mention some keywords → partial score.
  • ❌ No relevant keywords → 0 score.

Rating Scale

  • 85–100: Strong Senior
  • 70–84: Mid-Senior
  • 50–69: Mid-Level
  • <50: Junior

Internal Documentation — Microtec