Frontend System Design: Build an Autocomplete
A structured walkthrough of the autocomplete design round: requirements, architecture, race-free fetching, caching, rendering, the ARIA combobox and metrics.
The tech interview questions that come up again and again, with clear study notes for JavaScript, TypeScript, React, Angular, Java, Python, SQL, AWS and more, organized by topic and with the reasoning written in the margins. Finally, practice them like it's the real interview.
function outer() { let count = 0; return function inner() { return ++count; }; } const next = outer(); next(); // 1 next(); // 2 ← why not 1?!
Closures, hoisting, prototypes & the event loop.
Generics, narrowing, utility & mapped types.
Hooks, rendering, memoization & state.
Change detection, DI, signals & RxJS.
Semantics, the box model, layout & a11y.
Debounce, Promise.all, LRU cache… write it, run the tests.
Event loop phases, streams & modules.
OOP, collections, JVM, concurrency & streams.
IoC, auto-configuration, JPA, REST & security.
Data model, generators, decorators & the GIL.
Service design, messaging, resilience & sagas.
Loading today's question…
A structured walkthrough of the autocomplete design round: requirements, architecture, race-free fetching, caching, rendering, the ARIA combobox and metrics.
What lexical scope and closures really are, why the var + setTimeout loop prints 3 3 3, three ways to fix it, and where closures earn their keep in real code.
Ten generics questions, from constraints and keyof to infer, distributive conditional types and variance, each with a short answer and code you can reproduce.
How the call stack, task queue and microtask queue fit together, where rendering happens, how async/await schedules work, and output puzzles with answers.
Stale closures, missing cleanup, fetch races, Strict Mode's double run, infinite loops and effects you don't need, plus how useLayoutEffect differs in timing.
How JavaScript decides what this means: default, implicit, explicit and new binding, which one wins, why arrow functions ignore them, and the classic bugs.
48 must-know facts & snippets
From unknown to infer, on one page
Partial → Awaited, all of them
Rendering to Server Components, on one page
Every hook, one example each
Signals to guards, standalone-first
The 30 operators you'll actually use
Semantics to grid, cascade to stacking
Event loop to streams, checked on Node 22
OOP to virtual threads, on one page
Beans to JWT and @Transactional, one page
Core Python to asyncio, on one page
DDD to sagas, retries and tracing
Joins to MVCC, every query run on Postgres 16
BSON to sharding, with the defaults that matter
Dockerfile to Compose, layers to PID 1
Pods to Helm, plus a troubleshooting table
EC2 to IAM to DR, the services that come up
Staging area to canary deploys, on one page
GlideRecord to update sets, on one page
Big-O to DP, with Python templates
Rendering to caching, plus five mini-designs
One tricky interview question, fully explained. Takes 5 minutes to read with your coffee.