Node.js rewards developers who respect its single-threaded event loop and punishes everyone else with mysterious latency. These questions concentrate on the runtime model, streaming, and production operations β where Node hires actually succeed or fail β with notes on what strong answers cover.
What a strong answer covers
Phases at a working level, one thread executing JavaScript, and real blockers: synchronous crypto or compression, JSON.parse on huge payloads, unindexed regex catastrophes, sync filesystem calls. The production example is mandatory β event-loop-lag monitoring as evidence is the senior extra.
What a strong answer covers
Worker threads for CPU-bound tasks inside the process with message-passing costs understood; separate services or queues when the work scales independently or needs different runtimes. A rule of thumb tied to event-loop latency budgets shows they measure rather than guess.
What a strong answer covers
Producers outpacing consumers, highWaterMark buffering, pause/resume mechanics handled automatically by pipe/pipeline, and pipeline() for error propagation over naked pipe(). Real examples: CSV import, file uploads to object storage, transforming large exports. Memory-blowout stories from ignoring backpressure are the badge of experience.
What a strong answer covers
Both crash modern Node by default; policy: log with context, fail fast, restart via the process manager rather than limping on in unknown state, with graceful shutdown draining connections. Blanket catch-and-continue handlers are the anti-pattern they should call out unprompted.
What a strong answer covers
Event-loop lag measurement first, then connection-pool exhaustion to databases, DNS or downstream latency, GC pauses from allocation churn, and blocked I/O concurrency limits. Tools: clinic.js, --prof, flame graphs, APM. An ordered hypothesis-driven method is what you are grading.
What a strong answer covers
Heap snapshots compared across time under load, allocation timelines, usual suspects: caches without eviction, listeners accumulating on shared emitters, closures pinning request data, module-level arrays. Naming heapdump/inspector workflow and confirming the fix by re-measuring closes the loop.
What a strong answer covers
Route/controller thinness, service and data layers, schema validation at the boundary (zod, Fastify schemas), centralized error middleware mapping errors to status codes, request-scoped logging with correlation IDs. Framework choice matters less than the discipline; Fastify's schema-first performance story is a nice current touch.
What a strong answer covers
Cluster forking to use multiple cores versus the container-era pattern of one process per container scaled horizontally, with the scheduler doing what cluster did. Either answer defended by deployment context passes; blank confusion about why the question exists does not.
What a strong answer covers
Environment-driven config validated at startup (fail fast on missing vars), secrets from the platform not the repo, SIGTERM handlers closing servers, draining keep-alive connections, and finishing in-flight work within the termination grace period. The keep-alive draining detail separates operators from tutorial followers.
What a strong answer covers
Lockfiles committed, automated audit and update tooling, minimal dependency philosophy, pinning and provenance awareness after the ecosystem's high-profile incidents, and CI gates. A candidate who has replaced a 50-dependency utility with 20 lines of code understands the real cost model.
What a strong answer covers
Current state fluency: ESM as the direction, dual-package hazards, dynamic import as the bridge from CJS, tooling and Jest friction, and pragmatic per-project decisions. This question doubles as a currency check on whether they still track the platform.
What a strong answer covers
Shared state in Redis with token-bucket or sliding-window algorithms, atomic operations or Lua to avoid races, per-key granularity, fail-open versus fail-closed reasoning, and headers communicating limits. In-memory-only answers miss the multi-instance requirement β that is the trap the question sets.
Skip the interviews entirely β get matched with pre-vetted Node.js 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 βUse a subset β the event loop, error policy, and service-structure questions β alongside our JavaScript and React sets. Reserve streams, memory hunting, and the rate-limiter design for candidates who will own backend services in production.
Assume TypeScript for professional backend work in 2026 and let candidates opt out with justification. Type-safety at API boundaries pairs directly with the validation question here; a candidate hostile to typing is a fit question worth resolving early.
A small streaming task: read a large file or mock stream, transform records, write results with correct backpressure and error handling. It is twenty minutes, impossible to fake with memorized answers, and exercises the exact runtime model these questions probe.
Hire directly
Hire vetted Node.js 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