Remoteria
RemoteriaBook a 15-min intro call
500+ successful placements4.9 (50+ reviews)30-day replacement guarantee

Interview guide

Node.js Developer Interview Questions & Answers Guide (2026)

A hiring-manager’s interview kit for node.js developers — with specific “what to look for” notes on every answer, red flags to watch, and a practical test.

Key facts

Role
Node.js Developer
Technical questions
15
Behavioral
7
Role-fit
5
Red flags
8
Practical test
Included

How to use this guide

Pick 4-6 technical questions across difficulties, 2-3 behavioral, and 1-2 role-fit for a 45-minute interview. For senior roles, weight harder technical and role-fit higher. Always close with the practical test so you are hiring on evidence, not impressions. The “what to look for” notes are a scoring rubric: strong answers touch most points, weak answers miss them or replace them with platitudes.

Technical questions — Easy

1. What is a floating promise, why is it dangerous, and how do you prevent them codebase-wide?

Easy

What to look for: Unawaited promise with no .catch — errors are lost or crash the process (unhandledRejection). Fix: @typescript-eslint/no-floating-promises, explicit void operator, strict awaiting, try/catch on every await in handlers.

2. When would you pick Fastify over Express or NestJS?

Easy

What to look for: Fastify for raw throughput and built-in schema validation; NestJS for large team structure + DI; Express for tiny services or when you need a specific middleware. Has shipped production on at least two of them.

3. How do you evaluate an npm package before adding it as a dependency?

Easy

What to look for: Maintenance activity, install size, number of transitive deps, security advisories, TypeScript support, whether you could just write the 20 lines yourself. Allergic to left-pad-style deps.

4. What is the difference between Promise.all, Promise.allSettled, and Promise.race? When have you actually needed each?

Easy

What to look for: all rejects fast (fail-fast parallel); allSettled waits for all and returns status array (batch work tolerant to partial failure); race returns first settled (timeouts). Real examples, not textbook.

Technical questions — Medium

1. Walk me through a single iteration of the Node.js event loop. Where do promises, setTimeout, and setImmediate run?

Medium

What to look for: Timers → Pending → Poll → Check → Close phases; microtasks (Promises, queueMicrotask) run between each phase and after nextTick. Can explain why Promise.resolve().then() fires before setImmediate(0).

2. Explain streams and backpressure in Node. When would you use pipeline() vs manual piping?

Medium

What to look for: Readable buffers data until consumer is ready; pipeline() handles error propagation and cleanup that manual .pipe() chains miss. Backpressure via return value of write() and drain event.

3. You need to CPU-hash 10,000 passwords on startup. What is wrong with doing it in the main thread, and what is the fix?

Medium

What to look for: Blocks the event loop → no requests served during hashing. Fix: Worker threads, a worker pool, or piscina. Bonus: acknowledges argon2/bcrypt C bindings release the libuv thread.

4. Walk me through implementing an idempotent job in BullMQ that sends an email. What can go wrong?

Medium

What to look for: At-least-once delivery means retries; dedupe on jobId or idempotency token stored in Redis/DB; SMTP timeout retries cause double-sends without that. Handles job stalled / visibility timeout.

5. How do you use AbortController to cancel a long-running fetch or DB query?

Medium

What to look for: Pass signal into fetch/undici or to query layer that respects it, cancel on client disconnect (req.signal in Fastify/Node 18), timeouts via AbortSignal.timeout. Not everyone threads signals through.

6. Tell me about a gnarly Node production bug you fixed. What tool finally surfaced the cause?

Medium

What to look for: Real story with a real tool (clinic.js, 0x, heap snapshot, Datadog profiler). Shows narrative depth and Node-specific instincts, not generic debugging.

Technical questions — Hard

1. A production Node service has p99 latency spiking to 5 seconds even though CPU and memory look fine. Walk me through diagnosis.

Hard

What to look for: Event loop delay metric (perf_hooks.monitorEventLoopDelay), clinic.js doctor/flame, check for sync crypto or JSON.parse on giant payloads, a blocked libuv thread pool. Not just "add more pods".

2. A service is slowly leaking memory. How do you confirm and diagnose it?

Hard

What to look for: Heap snapshot with --inspect in Chrome DevTools, compare three snapshots, look at retained size and constructor counts, check for event listener leaks, closure references, caches with no eviction.

3. What is the difference between process.nextTick and queueMicrotask, and when does it matter?

Hard

What to look for: nextTick runs before other microtasks; starving the event loop with recursive nextTick is a known trap. queueMicrotask is the standard platform API and should usually be preferred.

4. Your Node container has a 512 MB memory limit but Node keeps getting OOM-killed around 400 MB. What is happening?

Hard

What to look for: Default V8 heap is ~1.7 GB regardless of container limit; set --max-old-space-size to ~75% of container, or use NODE_OPTIONS. Also off-heap allocations (Buffers, native modules) count against the container limit.

5. Design a WebSocket service that supports 50,000 concurrent connections behind a load balancer. What are the Node-specific concerns?

Hard

What to look for: Sticky sessions or centralized state (Redis pub/sub), per-connection memory (Buffers, listeners), heartbeat/ping to detect dead conns, scale horizontally (Node is single-threaded per process; use cluster or multiple pods).

Behavioral questions

1. Tell me about pushing back on adding a new dependency because it was not worth the cost.

What to look for: Brought data (bundle size, transitive count, maintenance status), proposed an alternative. Has killed someone else’s PR politely.

2. Describe the worst Node.js incident you led response on. What guardrail did you ship after?

What to look for: Owns it, describes causal chain through event loop or async issue, ships a concrete guardrail (lint rule, alert, runbook).

3. Walk me through how you onboard into an unfamiliar Node service.

What to look for: Reads README, runs locally with --inspect, traces a request through middleware + handler + DB, opens a small PR early.

4. When have you said no to a design that would have blocked the event loop?

What to look for: Offered an async/queue alternative, explained cost in RPS terms, kept the conversation productive.

5. What is the most technically ambitious Node service you have shipped?

What to look for: Real scale or complexity dimensions: RPS, concurrent WebSocket counts, streaming throughput. Specific, not handwavy.

6. How do you review a PR that adds 15 new npm packages for a small feature?

What to look for: Pushes back constructively, asks for a single dep or vendored code, evaluates transitive tree. Not reflexively hostile.

7. Tell me about a time you replaced a heavy dependency with ~50 lines of your own code. What did you gain and lose?

What to look for: Clear trade-off reasoning. Gained: control, install size, fewer audits. Lost: bug fixes upstream, edge case coverage. Honest about both sides.

Role-fit questions

1. Why Node specifically? Would you pick it for a new greenfield service today?

What to look for: Has an opinion. Knows where Node shines (IO-bound, real-time, shared language with frontend) and where it does not (heavy CPU, type-strict domains where Go/Rust win).

2. How do you feel about carrying a pager for a Node service you ship?

What to look for: Accepts it as ownership. Has opinions on event-loop-delay alerts, memory growth alerts, and avoiding alert fatigue.

3. Our stack is NestJS + Prisma + Postgres + BullMQ on Fly.io. Anything unfamiliar, and how would you ramp?

What to look for: Honest ramp plan. Admits gaps.

4. How do you operate with 4 hours of overlap with a US team?

What to look for: Long-form PR descriptions, Looms for tricky debugging, protects overlap for blocking discussions.

5. Bun and Deno — do you use them? Would you migrate to either?

What to look for: Informed opinion. Pragmatic — knows Bun has real speedups but Node’s ecosystem and stability are hard to walk away from. Not dogmatic either way.

Red flags

Any one of these alone is usually reason to pass, especially combined with weak answers elsewhere.

Practical test

4-hour take-home: build a Node/TypeScript API in NestJS or Fastify that accepts file uploads (up to 500 MB) streamed directly to disk or S3, enqueues a BullMQ job to process each file (word count, size report), and exposes a GET endpoint to poll job status. Requirements: must not buffer the entire file in memory, handle client disconnect, idempotent job processing, and include Supertest integration tests. We grade on: streaming correctness (30%), async/queue design (25%), tests (20%), Node-specific hygiene like lint rules and no-floating-promises config (25%).

Scoring rubric

Score each answer 1-4: (1) Misses most of the rubric or gives platitudes; (2) Hits some points but cannot go deep when pressed; (3) Covers the rubric and can defend the answer under follow-ups; (4) Adds unprompted nuance, trade-offs, or real examples beyond the rubric. Hire at an average of 3.0+ across technical, behavioral, and role-fit, with zero red flags, and a pass on the practical test.

Related

Written by Syed Ali

Founder, Remoteria

Syed Ali founded Remoteria after a decade building distributed teams across 4 continents. He has helped 500+ companies source, vet, onboard, and scale pre-vetted offshore talent in engineering, design, marketing, and operations.

  • 10+ years building distributed remote teams
  • 500+ successful offshore placements across US, UK, EU, and APAC
  • Specialist in offshore vetting and cross-timezone team integration
Connect on LinkedIn

Last updated: April 12, 2026