Node.js is an open-source, cross-platform runtime environment that allows developers to execute JavaScript code outside of a web browser. It is built on Chrome's V8 JavaScript engine, which compiles JavaScript directly to native machine code for high performance.
Asynchronous and Event-Driven: Node.js uses non-blocking, event-driven architecture, making it lightweight and efficient for real-time applications.
Single-Threaded with Event Loop: It operates on a single-threaded model with event looping, enabling it to handle multiple connections simultaneously without creating new threads.
NPM (Node Package Manager): Node.js comes with npm, the largest ecosystem of open-source libraries and tools, making it easy to integrate third-party modules.
Cross-Platform: It can run on various platforms like Windows, macOS, and Linux.
Scalable: Ideal for building scalable network applications due to its non-blocking I/O model.
If you need to read a file and then send its contents over HTTP in a Node.js service, how would you implement that without blocking the event loop?
What happens if you call a synchronous, CPU‑intensive function inside an Express route handler? How would the server behave?
We added a new third‑party library that uses many callbacks, and the request latency spiked. How would you investigate whether Node's event loop is the bottleneck?
When deploying a Node.js microservice behind a load balancer, why might you choose the cluster module versus running multiple container instances? What trade‑offs are involved?
Our Node app started throwing 'ERR_MAX_CALL_STACK_SIZE' after a recent refactor. Walk me through how you'd debug it.
Design a high‑throughput logging pipeline in Node.js that must handle millions of events per second while preserving order. What architectural patterns would you use and why?
Explain how you would mitigate memory leaks in a long‑running Node.js service that processes user uploads, and how you'd monitor it in production.
If you need to support both CPU‑bound image processing and I/O‑bound API calls in the same Node.js service, how would you structure the code to avoid blocking?
Our organization is migrating a legacy monolithic Java API to a Node.js based platform. What considerations would you raise regarding performance, observability, and team ownership?
When scaling a Node.js backend to serve billions of requests daily across multiple regions, how would you decide between using serverless functions, container orchestration, or a hybrid approach?
Describe how you would establish a cross‑team standard for handling async errors and unhandled promise rejections in a large codebase, and how you'd enforce it.