Learning tracks
Every topic you need, with explanations, visuals, and practice. Pick a track or use ⌘K to jump anywhere.
⚡ Quick Wins
Close your known interview gaps first — blind spots, not deep gaps.
Start here: close your known gaps
The exact blind spots from your recent interviews — knock these out in the first 3–4 days for an instant confidence boost.
Two Pointers: Move Zeroes
Compact an array in place with a read/write two-pointer — the pattern behind half of all easy/medium array problems.
🟨 JavaScript & TypeScript Core
The language internals interviewers probe to test depth beyond framework usage.
Closures, Scope & Hoisting
Why a function remembers variables from where it was defined — and how scope, hoisting, and the TDZ actually work.
this, call/apply/bind & arrow functions
The four rules that decide what `this` is at call time — and why arrow functions ignore them.
The Prototype Chain & Inheritance
How property lookup walks [[Prototype]] up to null, and why class is just sugar over it.
The Event Loop: microtasks vs macrotasks
Why the output is A, D, C, B — how the call stack, microtask queue, and macrotask queue decide async ordering.
Promises & async/await
States, chaining, error handling, and the concurrency helpers — plus how await maps back to the event loop.
Type Coercion & Equality
Why == is dangerous, how JS coerces types automatically, and the truthy/falsy rules that trip up even experienced devs.
Debounce & Throttle — implement from scratch
Two patterns every frontend engineer must be able to implement cold: what they do, when each fits, and the code.
Functional JS: Currying, Composition & Pure Functions
Pure functions, immutability, currying, partial application, and function composition — the functional toolkit asked at mid-senior interviews.
Generators & Iterators
Symbol.iterator, the iterator protocol, generator functions, lazy sequences, and async generators — the machinery behind for...of and spread.
ES Modules vs CommonJS
Static vs dynamic, live bindings vs copies, tree shaking, circular dependencies — what every senior JS dev must know about the module system.
TypeScript: Generics, Utility Types & Type Narrowing
The TS features that separate shallow knowledge from real depth: generics, the built-in utility types, type narrowing, and mapped/conditional types.
Error Handling Patterns
Error types, try/catch/finally semantics, async error propagation, custom error classes, and the patterns that prevent silent failures.
Design Patterns in JavaScript
Observer, Module, Singleton, Factory, and Strategy — the classic patterns reframed for modern JS/TS, with real-world React/Node parallels.
Immutability, WeakRefs & Memory Management
Shallow vs deep clone, Object.freeze, structuredClone, WeakMap/WeakSet for memory-safe caching, and how the garbage collector works.
⚛️ React & React Native
Know the internals, not just the API — rendering, refs, perf, architecture.
Rendering, Reconciliation & Re-renders
What triggers a re-render, how reconciliation and keys work, and where memoization actually helps.
RN Architecture: Bridge vs JSI / Fabric
The three threads, why the old bridge was slow, and what JSI, Fabric, and TurboModules changed.
Hooks Deep Dive: refs, effects & memo
useRef's dual role, useEffect vs useLayoutEffect timing, the rules of hooks, and custom hooks.
useImperativeHandle + forwardRef
Expose a controlled set of imperative methods from a child to its parent via a ref — the right way.
useCallback vs useMemo — when they actually help
The precise difference between the two hooks, what 'referential stability' means, and the honest truth about when memoization helps vs when it's just noise.
State Management: Redux Toolkit vs Zustand vs Context
When to reach for each solution, how Redux Toolkit modernizes Redux, how Zustand works, and the real performance gotchas with Context API.
List Performance: FlatList, FlashList & Virtualization
Why ScrollView kills long lists, how virtualization works, FlatList props that matter, and when to upgrade to FlashList.
Animations: Animated API vs Reanimated 3
Why the JS thread causes animation jank, how the Animated API works, and what Reanimated's worklets change — with practical patterns for both.
React Navigation: Stacks, Tabs, Deep Links
How React Navigation's navigator types work, how to pass params type-safely, nested navigators, and wiring up deep linking.
React 18: Concurrent Rendering & New Hooks
What concurrent rendering actually means, how useTransition and useDeferredValue let you keep UIs responsive, and where Suspense now fits.
App Lifecycle & Background Tasks
AppState transitions, what happens when your app backgrounds, foreground/background detection, and handling tasks that must complete when the app isn't active.
Storage, Networking & Offline Patterns
AsyncStorage vs MMKV for persistence, React Query for server state, and offline-first patterns with optimistic updates.
Error Boundaries & Crash Handling
What error boundaries catch (and don't), how to implement one, RN-specific crash reporting, and the React 18 updates to error handling.
Testing React Native: RNTL, Jest & Detox
The testing pyramid for RN apps — unit tests with Jest, component tests with React Native Testing Library, and E2E with Detox.
Platform APIs, Native Modules & Platform-Specific Code
How to write platform-specific UI and logic, when and how to create a native module, and the Platform API patterns every RN dev must know.
Expo, EAS Build & OTA Updates
Managed vs bare workflow, when to use Expo, EAS Build for production apps, and how CodePush/OTA updates work and what they can't update.
🧩 Data Structures & Algorithms
The 18 patterns that cover ~90% of startup SDE-2 DSA. Quality over grind.
Arrays & Hashing
Frequency counting, seen-sets, and prefix products — the warm-up category that unlocks O(1) lookups and turns quadratic scans into linear.
Two Pointers
Opposite-end and read/write pointers — clean, optimal, O(n)/O(1) solutions and a startup favorite. Your move-zeros gap lives here.
Sliding Window
Fixed and variable windows over a sequence — turn O(n·k) substring/subarray scans into O(n).
Binary Search
The template that kills off-by-one bugs, plus 'search on the answer' — the variant that trips people up.
Trees & BSTs
DFS (pre/in/post) as recursion, BFS as a queue, and the BST invariant — recursion fluency, tested constantly.
Graphs
BFS/DFS on grids and adjacency lists, connected components, topological sort, and union-find — the startup staples.
Dynamic Programming
Spot overlapping subproblems, define the state, write the recurrence — then memoize or tabulate. Templates for 1D, 2D, knapsack, LIS, and grids.
Heaps & Priority Queues
Top-K, streaming medians, and merge-k-sorted with a heap — O(log n) access to the smallest/largest, and the two-heap balance trick.
Linked Lists
The dummy-head technique, fast/slow pointers for cycles and middles, and clean in-place reversal — pointer fluency under pressure.
Stack & Queue
LIFO/FIFO mechanics, the monotonic stack for next-greater problems, min-stack, and sliding-window-max via a deque.
Backtracking
The choose / explore / un-choose template, decision-tree thinking, and pruning — the engine behind subsets, permutations, combinations, and N-Queens.
Intervals
The sort-by-start trick, merging overlaps, insert interval, non-overlapping removal, and meeting-rooms scheduling with a heap.
🏗️ System Design
Frontend and backend design — a repeatable framework and the core building blocks.
System Design: the framework
A repeatable 6-step structure, capacity math, latency numbers, CAP/PACELC, and consistency models so you never freeze on an open-ended design question.
The building blocks of a scalable service
Load balancers, gateways, caching, CDN, queues vs pub/sub vs streams, databases, object storage, search, rate limiters, service discovery — each with when to reach for it and the tradeoff.
Databases: SQL vs NoSQL, indexing, transactions
The NoSQL families and when to use each, B-tree vs LSM indexing, ACID vs BASE and isolation levels, sharding & rebalancing, replication topologies, and access-patterns-drive-the-schema.
Node.js internals: event loop, streams, scaling
How Node stays fast on one thread — libuv loop phases, the thread pool, CPU vs IO-bound work, clustering & worker_threads, streams/backpressure, GC, and production pitfalls.
Classic designs & recurring patterns
Two warm-up designs (URL shortener, rate limiter) plus the reusable patterns interviewers probe: fan-out, CQRS, event sourcing, idempotency, outbox, consistent hashing, replication, sharding, hot keys, backpressure.
Frontend system design framework
A repeatable method for frontend design rounds: requirements → API/data → component architecture → state → rendering (CSR/SSR/SSG/ISR) → performance budget → network/caching → a11y → offline.
The feed problem: applying the framework
A deep concept walkthrough of the feed: fan-out on write vs read, the hybrid for celebrities, ranking, cursor pagination, caching, and the client-side concerns (virtualization, optimistic UI).
Caching & CDN deep dive
Caching layers, write strategies (aside/through/back), eviction, the three big failure modes (stampede, penetration, avalanche), invalidation & consistency, CDN internals, and Redis data structures.
APIs & communication: REST, gRPC, GraphQL, WebSockets
API styles and when to choose each, REST done right (status codes, idempotency, pagination, versioning), real-time options, sync vs async, and resilience: retries, timeouts, circuit breakers, rate limiting.
🎯 Behavioral & Job Search
The non-coding half that decides offers and pay. Do not skip it.
STAR stories that land
Build 6–8 reusable stories with the STAR structure so any behavioral question has a crisp, specific answer.
"Tell me about yourself"
A tight 90-second pitch that frames the whole interview in your favor.
Mock interviews & interview-day strategy
How to run effective mocks, think out loud, simulate pressure, and structure the 45 minutes of a real round.
Salary negotiation
How to anchor, use leverage, and avoid the mistakes that leave money on the table — with exact scripts.
The behavioral question bank
40+ common behavioral questions by theme, each with what it's really testing and a strong answer skeleton.
What interviewers actually evaluate
Decode the behavioral round — the signals they grade, the red flags that sink candidates, and how leveling works.
🤖 AI Engineering Roadmap
A 6-phase path to become an AI engineer — built on your existing backend skills, hosted on your LeetCode clone.
The framing (read this first)
What an AI engineer actually does in 2026, the three rules that save months, and why your backend skills are an unfair advantage.
Phase 0 — Position yourself
≈1 week. Reuse the production skills you already have; close the one real gap (enough Python to read notebooks).
Phase 1 — LLM APIs & Prompting Engineering
Call LLM APIs correctly, treat tokens as money, implement streaming, and make structured outputs reliable with tool use.
Phase 2 — Embeddings, Vector Search & RAG
Build a production RAG pipeline — chunking, embedding, pgvector retrieval, reranking, and the quality levers that actually matter.
Phase 3 — Tool Use, Agents & the ReAct Loop
Build production agents — tool use patterns, the ReAct loop, parallel tool calls, error recovery, and when to use deterministic workflows instead.
Phase 4 — Evals, Observability & Production
Ship AI to production — evaluation frameworks, LLM-as-judge, tracing, latency optimization, cost dashboards, and A/B testing prompts.
Phase 5 — Fine-Tuning, Specialize & Ship
Know when fine-tuning beats RAG, implement LoRA with real code, pick a specialization depth, and ship one polished AI product publicly.
Stack cheat-sheet (2026)
Your default pick per layer — and the alternatives worth knowing — for the current AI-engineering stack.
🔮 JS Output Questions
72 predict-the-output questions — the category that trips up even experienced JS devs in real interviews.
Output Questions: Hoisting & Scope
Predict the output — var/let/const hoisting, TDZ, function declaration vs expression, and block scope gotchas.
Output Questions: Closures & Loops
Predict the output — closure capture, stale closures, IIFE patterns, loop bugs, and memoization gotchas.
Output Questions: Event Loop & Async
Predict execution order — setTimeout vs Promise vs queueMicrotask, async/await unwrapping, and nested async patterns.
Output Questions: this & Prototype Chain
Predict the output — implicit/explicit/new binding, arrow functions, prototype lookup, class inheritance, and the classic this-loss traps.
Output Questions: Coercion, Operators & Equality
Predict the output — type coercion puzzles, == vs ===, + operator surprises, typeof edge cases, and bitwise/logical traps.
Output Questions: Mixed & Advanced
Predict the output — generators, class edge cases, Array methods, Object tricks, Symbol, and multi-concept combinations.
🧱 Low-Level Design (LLD)
Design real UI systems from scratch — EventEmitter, Modal, Autocomplete, Toast, and Form Validation with full TypeScript implementations.
LLD Framework: How to Approach Any Design Problem
A repeatable 5-step process for frontend LLD interviews — requirements, API design, data model, class structure, and edge cases.
SOLID Principles in JavaScript & TypeScript
All five SOLID principles with real JS/TS examples — what each one means, how to violate it, and how to fix the violation.
LLD: Design an EventEmitter / Pub-Sub
Full implementation of a typed EventEmitter with on, off, emit, once, and removeAll — one of the most common LLD coding questions.
LLD: Design a Modal / Dialog Component
Design a production-quality Modal — focus trap, scroll lock, portal rendering, accessibility, animation, and composable API.
LLD: Design a Typeahead / Autocomplete
Design a production autocomplete — debounced remote search, keyboard navigation, accessibility, caching, and cancellation.
LLD: Design a Toast / Notification System
Design a global toast system — imperative API, auto-dismiss, stacking, progress bar, and the singleton pattern in React via context.
LLD: Design a Form Validation Library
Design a composable, schema-based form validation library — validator functions, chaining, async validators, and a React hook integration.
🖥️ Frontend System Design
Architect production-scale frontend systems — feeds, chat, video, Kanban — using the 6-step framework.
Frontend System Design Framework
A 6-step framework for frontend system design interviews — requirements, architecture, component tree, data flow, performance, and trade-offs.
FSD: Design a Social News Feed
Design the frontend of a social news feed — infinite scroll, virtualization, optimistic likes, real-time updates, and performance at scale.
FSD: Design a Real-Time Chat Widget
Design a real-time chat widget — WebSocket architecture, message state, optimistic sending, read receipts, reconnection, and accessibility.
FSD: Design a Kanban / Drag-and-Drop Board
Design a Kanban board — column/card data model, drag-and-drop with optimistic reorder, virtualized columns, and undo/redo.
FSD: Design a Video Player
Design a custom video player — controls, buffering, adaptive streaming (HLS), keyboard shortcuts, accessibility, and performance.
🏗️ High-Level Design (HLD)
Design scalable backend systems — URL shortener, rate limiter, Twitter feed, notifications, and search autocomplete.
HLD Interview Framework
A 6-step framework for backend system design interviews — requirements, estimation, API, data model, architecture, and deep-dives.
HLD Building Blocks
The core components of every scalable system — load balancers, caches, queues, CDN, databases, and how they connect.
HLD: Design a URL Shortener
Design bit.ly — hash generation, redirect performance, custom aliases, analytics, and storage at scale.
HLD: Design a Rate Limiter
Design a distributed rate limiter — token bucket, sliding window counter, Redis implementation, and where to enforce limits.
HLD: Design a Twitter/X Feed
Design the Twitter timeline — fanout-on-write vs fanout-on-read, hybrid strategy for celebrities, sharding, and real-time delivery.
HLD: Design a Notification System
Design a multi-channel notification system — push, email, SMS — with priority queues, fan-out, delivery guarantees, and user preferences.
HLD: Design a Search Autocomplete System
Design Google-scale typeahead — trie vs prefix hash, top-K ranking, distributed storage, and < 100ms end-to-end latency.