JavaScript has the deepest talent pool and the widest skill variance of any language, which makes screening design the whole game. These questions test the mental model β event loop, closures, async β through practical scenarios rather than trick trivia, with notes on what strong answers cover.
What a strong answer covers
The call stack, task (macrotask) queue, and microtask queue β promises drain before the next task, timers are minimum delays not guarantees, and long synchronous work blocks everything. A candidate who can predict ordering in a small example owns the model; one who recites 'JavaScript is single-threaded' without consequences does not.
What a strong answer covers
Functions capturing their lexical scope; deliberate uses like private state, memoization, or event-handler factories. The bug side is the differentiator: stale values captured in loops or hooks, or listeners holding references that leak memory. Both directions confirm working knowledge.
What a strong answer covers
try/catch around awaited code with awareness that a missing await silently detaches errors, .catch placement semantics in chains, and unhandled-rejection consequences. Strong candidates mention Promise.all versus allSettled for aggregate error behavior and knowing when parallelism is safe.
What a strong answer covers
Objects delegating property lookup up the prototype chain; class syntax as sugar over the same mechanism. Practical grounding β method sharing, instanceof behavior, why patching prototypes of built-ins is dangerous β beats textbook diagrams.
What a strong answer covers
Call-site binding for regular functions, lexical this for arrows, undefined (or global) in loose standalone calls, and the classic lost-this bug when extracting methods β fixed via arrows, bind, or restructuring. The extracted-callback case is where real bugs live, so weight it.
What a strong answer covers
Performance profiling to find long tasks, suspects like huge synchronous loops, layout thrashing from interleaved reads and writes, oversized JSON parsing, or synchronous storage access. Fixes: chunking work, web workers, debouncing, virtualization. Tool-first methodology is the grade.
What a strong answer covers
Forgotten event listeners and intervals, detached DOM retained by references, ever-growing caches and maps, closures pinning large structures. Hunting via heap snapshots and comparing allocations over interactions. WeakMap/WeakRef awareness for cache design is a bonus.
What a strong answer covers
Function versus block scoping, hoisting and the temporal dead zone, const as binding-immutability not value-immutability. The loop-variable capture problem is the practical consequence worth demanding β it connects scoping to real bugs.
What a strong answer covers
Static imports enabling tree shaking versus dynamic require, live bindings, and interop pain: dual-package hazards, default-export mismatches, config files and older tooling forcing CommonJS. Anyone shipping libraries or maintaining build tooling has scars here.
What a strong answer covers
Debounce delays until quiet; throttle guarantees a maximum rate. The implementation exposes closure and timer fluency in ten lines β watch for correct timer clearing, argument forwarding, and this handling. A trailing/leading-edge discussion is senior polish.
What a strong answer covers
Code splitting and lazy loading, caching layers (HTTP, service worker, in-memory), optimistic UI, list virtualization, skeletons over spinners, and measuring with Core Web Vitals. Prioritizing by measurement rather than applying everything blindly is the judgment component.
What a strong answer covers
Compile-time safety on contracts, refactoring confidence, editor leverage; no runtime protection β unvalidated API responses and any-typed escape hatches still bite, so runtime validation at boundaries (zod-style) complements it. Framing TypeScript as standard professional practice is expected in 2026.
Skip the interviews entirely β get matched with pre-vetted JavaScript developers in 48 hours, $0 until you hire.
Need a custom question set?
Our free interview question generator builds a tailored list for any role, seniority, and focus area.
Try the interview question generator βBoth, in that order. Framework skills date quickly; the event-loop, closure, and async questions here predict how fast someone masters any framework. Add a focused React, Vue, or Angular section from our other question sets for your stack.
Use two or three of these as a short first-round filter β the event loop ordering question eliminates a surprising share of applicants cheaply. Save the debugging scenarios and live implementation for the shortlist.
A short one, yes β the debounce implementation in this list doubles as it. Ten minutes of watching someone handle timers, closures, and arguments live is the most forgery-proof signal in this entire interview.
Hire directly
Hire vetted JavaScript developers in the USA βOther interview guides
Vetted talent ready for US teams. No recruitment fees. Zero risk.
πΊπΈ Trusted by companies across the United States