اولین مصاحبه Node.js خودم را خوب یادم است. با اعتمادبهنفس وارد اتاق شدم… تا زمانی که مصاحبهکننده یک سؤال به ظاهر ساده پرسید:
«دقیقاً Event Loop چیست؟»
همانجا قفل کردم. نه به این دلیل که Node.js بلد نبودم — بلکه چون هیچوقت این مفاهیم را با صدای بلند توضیح نداده بودم.
واقعیت این است که در مصاحبههای Node.js، تعداد پکیجهایی که میشناسی مهم نیست؛ عمق درک تو از چراییِ رفتار Node مهم است.
بعد از سالها ساخت API، سیستمهای real-time و مربیگری برنامهنویسان تازهکار، این ۱۰ سؤال تقریباً در همه مصاحبههای جدی Node.js تکرار میشوند.
بیایید آنها را ساده و کاربردی توضیح دهیم.
۱. Node.js چیست و چرا از آن استفاده میکنیم؟
Node.js یک runtime برای اجرای جاوااسکریپت روی موتور V8 کروم است. اما مصاحبهکنندهها بیشتر دنبال «چرا» هستند:
توانایی مدیریت هزاران درخواست با I/O غیرمسدودکننده
مناسب برای اپلیکیشنهای real-time مثل چت و نوتیفیکیشن
استفاده از یک زبان در فرانتاند و بکاند
اکوسیستم بزرگ NPM
جواب مورد انتظار: Node.js سریع، مقیاسپذیر و عالی برای مدیریت اتصالات همزمان است.
۲. Event Loop چیست؟ (پرسش شماره ۱ اکثر مصاحبهها)
Node.js تک شاخه (single threads) هست ؛ اما به لطف Event Loop، رفتار آن شبیه (multi threads) به نظر میرسد.
Event Loop تعیین میکند که callbackها، promiseها، تایمرها و کارهای async چه زمانی اجرا شوند.
مثال :
console.log("Start");
setTimeout(() => console.log("Timeout"), 0);
console.log("End");خروجی؛
Start
End
Timeoutچون Event Loop همیشه اول stack اصلی را خالی میکند، سپس سراغ کارهای async میرود.
چرا این سؤال مهم است؟ چون اگر Event Loop را بفهمی، عملاً Node را فهمیدهای.
۳. تفاوت synchronous و asynchronous در Node
Synchronous
کد را مسدود میکند.
خط بعدی منتظر میماند.
Asynchronous
غیرمسدودکننده
کدهای دیگر در حین اجرای عملیات ادامه مییابند.
مثال:
const fs = require("fs");
// Blocking
const data = fs.readFileSync("file.txt");
// Non-blocking
fs.readFile("file.txt", (err, data) => {});
۴. استریمها در Node.js چیستند؟
Streams اجازه میدهند داده را تکهتکه پردازش کنید، نه یکباره.
مناسب برای:
آپلود فایلها
پخش ویدئو
پردازش لاگهای بزرگ
فایلهای JSON حجیم
مثال:
const fs = require("fs");
const stream = fs.createReadStream("bigfile.txt");
stream.on("data", (chunk) => {
console.log("Chunk received:", chunk.length);
});این کار از مصرف بالای RAM و کرشکردن سرور جلوگیری میکند.
۵. Middleware چیست؟ (مخصوص Express)
Middleware تابعی است که قبل از رسیدن درخواست به هندلر اصلی اجرا میشود.
مثال:
app.use((req, res, next) => {
console.log("Request:", req.url);
next();
});مصاحبهکننده انتظار دارد موارد زیر را بشنود:
لاگگیری
اعتبارسنجی
احراز هویت
مدیریت خطا
پردازش بدنه درخواست
همه اینها با middleware انجام میشود.
۶. تفاوت require و import چیست؟
require()
CommonJS
همزمان
مناسب نسخههای قدیمی Node
import
ES Modules
غیرهمزمان
روش استاندارد و مدرن
مثال:
import express from "express";
const app = express();۷. Clustering در Node.js چیست؟
Node تکریسمانی است؛ اما clustering اجازه میدهد از همه هستههای CPU استفاده کنید.
const cluster = require("cluster");
if (cluster.isMaster) {
cluster.fork();
cluster.fork();
}هر worker درخواستهای خودش را مدیریت میکند.
استفاده: افزایش کارایی در سیستمهای پرترافیک.
۸. process.nextTick() چیست؟
یکی از گیجکنندهترین مفاهیم برای توسعهدهندگان.
این تابع callback را قبل از ادامه حلقه Event Loop اجرا میکند.
مثال:
console.log("A");
process.nextTick(() => console.log("B"));
console.log("C");خروجی:
A
C
Bزمان استفاده:
وقتی میخواهید عملیاتی دقیقاً بعد از اجرای تابع فعلی انجام شود، قبل از کارهای async دیگر.
۹. Node چگونه خطاها را مدیریت میکند؟
دو نوع خطا:
۱. خطاهای synchronous
try {
throw new Error("Failed");
} catch (err) {}۲. خطاهای asynchronous
app.get("/", async (req, res) => {
try {
const data = await fetchData();
} catch (err) {
res.status(500).send("Error");
}
});Middleware مخصوص مدیریت خطا
app.use((err, req, res, next) => {
res.status(500).send(err.message);
});مصاحبهکننده میخواهد مطمئن شود میدانید چگونه از کرشکردن سرور جلوگیری کنید.
۱۰. رایجترین مشکلات امنیتی در Node.js چیست؟
پرسش محبوب توسعهدهندگان ارشد.
حتماً این موارد را نام ببرید:
SQL Injection
NoSQL Injection
XSS
CSRF
Rate limiting
ربودهشدن JWT
پیکربندی نادرست CORS
مثال rate limiting:
import rateLimit from "express-rate-limit";
const limiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 100,
});
app.use(limiter);نشان میدهد که مثل یک توسعهدهنده backend باتجربه فکر میکنید.
نکات حرفهای برای موفقیت در مصاحبه Node.js
۱. همیشه با یک مثال واقعی جواب بده
مصاحبهکنندگان دنبال توضیح کتابی نیستند.
۲. پاسخها را کوتاه، ساختارمند و کاربردی نگه دار
مثلاً پاسخ سؤال Event Loop باید ۲۰–۳۰ ثانیه باشد.
۳. جوابها را به پروژههایی که ساختی وصل کن
حتی یک پروژه کوچک هم کافی است.
جمعبندی
مصاحبههای Node.js دربارهی حفظکردن پکیجها یا متدها نیستند. موضوع اصلی درک عمیق از نحوه کار Node.js در پشت صحنه است — و توانایی توضیح ساده و روان آن.
اگر این ۱۰ سؤال را کامل بفهمی، با اعتماد و آرامش وارد هر مصاحبهای میشوی.





