أسئلة مقابلات Node.js مع الإجابات
100 سؤال من أسئلة مقابلات العمل في Node.js، مقسمة على 10 موضوعات: Node.js Core & Event Loop وAsync Programming & Timers وBuffers & Streams وModules, ESM & Package Management وHTTP, Fastify & Web Frameworks وDatabases, ORMs & Transactions وSecurity & Best Practices وPerformance & Memory Profiling وTesting & Quality Assurance وMicroservices & Distributed Systems. تغطي الأسئلة المستويات متوسط ومتقدم ومبتدئ، ولكل سؤال إجابة مختصرة تقولها في الانترفيو، وشرح أعمق، وأخطاء شائعة، وروابط للمصادر الرسمية مع تاريخ آخر مراجعة.
الموضوعات
Node.js Core & Event Loop
10 سؤال
Async Programming & Timers
10 سؤال
Buffers & Streams
10 سؤال
Modules, ESM & Package Management
10 سؤال
HTTP, Fastify & Web Frameworks
10 سؤال
Databases, ORMs & Transactions
10 سؤال
Security & Best Practices
10 سؤال
Performance & Memory Profiling
10 سؤال
Testing & Quality Assurance
10 سؤال
Microservices & Distributed Systems
10 سؤال
أسئلة مقابلات Node.js Core & Event Loop في Node.js
- ما هي المراحل الأساسية للـ Event Loop في Node.js وكيف تعالج المهام المختلفة؟
- ما الفرق الجوهري بين process.nextTick() و setImmediate() في Node.js؟
- ما هو دور مكتبة libuv والـ Thread Pool الداخلي في Node.js ومتى يتم استخدامه؟
- كيف يدير محرك V8 الذاكرة بين الـ Stack والـ Heap في Node.js؟
- ماذا يعني أن Node.js أحادية الخيط (Single-Threaded) وكيف تتعامل مع آلاف الاتصالات المتزامنة؟
- ما الفرق بين uncaughtException و unhandledRejection في Node.js وما التصرف الصحيح عند حدوثهما؟
- كيف تصمم آلية Graceful Shutdown في تطبيق Node.js عند استقبال إشارات SIGTERM أو SIGINT؟
- كيف يعمل EventEmitter في Node.js وما أسباب تحذير MaxListenersExceededWarning؟
- كيف يتم استخدام AbortController لإلغاء العمليات غير المتزامنة في Node.js الحديثة؟
- ما هي الـ Native Addons وNode-API (N-API) ومتى يلجأ المطور لبنائها؟
أسئلة مقابلات Async Programming & Timers في Node.js
- ما الفرق العملي بين استخدام async/await والتعامل المباشر مع Promises في Node.js؟
- قارن بين Promise.all و Promise.allSettled و Promise.race في Node.js من حيث السلوك والتعامل مع الأخطاء.
- لماذا يعد تشغيل مئات الوعود عبر Promise.all خطيراً وكيف تطبق تحديد التزامن (Concurrency Limiting)؟
- ما هي تقنية AsyncLocalStorage في Node.js وما المشاكل التي تحلها في تتبع الطلبات (Tracing)؟
- كيف تختلف أولوية الـ Microtasks عن الـ Macrotasks في معالجة المهام بـ Node.js؟
- كيف تنتقل الأخطاء في الكود غير المتزامن وما خطورة الأخطاء داخل الـ callbacks التقليدية؟
- ما هي ظاهرة تجويع الـ Event Loop (Starvation) بسبب مهام الـ CPU المكثفة وكيف تتجنبها؟
- ما هي ميزة Top-Level Await في وحدات ES Modules بـ Node.js وما هي محاذير استخدامها؟
- كيف تفيد الـ Async Iterators وحلقة for await...of في استهلاك تدفقات البيانات في Node.js؟
- ما هو مفهوم الموارد القابلة للإتلاف (Async Disposable Resources) ورمز Symbol.asyncDispose؟
أسئلة مقابلات Buffers & Streams في Node.js
- ما هي الأنواع الأربعة للـ Streams في Node.js وما وظيفة كل منها؟
- ما هي ظاهرة الـ Backpressure في Node.js Streams وكيف تتم معالجتها هندسياً؟
- لماذا يوصى دائماً باستخدام stream.pipeline بدلاً من التوصيل التقليدي عبر .pipe()؟
- ما هو كائن Buffer في Node.js وكيف يختلف تخصيص Buffer.alloc عن Buffer.allocUnsafe؟
- ما هو دور خيار highWaterMark في الـ Streams وكيف يؤثر على كفاءة الذاكرة والأداء؟
- كيف تصمم معالجة رفع الملفات الضخمة (Streaming Uploads) في خادم HTTP دون تخزينها في الذاكرة؟
- كيف تقوم بإنشاء وتخصيص Transform Stream لمعالجة البيانات أثناء تدفقها في Node.js؟
- متى تستخدم fs.readFile ومتى تفضل fs.createReadStream للتعامل مع الملفات؟
- ما هو وضع الـ Object Mode في Node.js Streams ومتى يلزم تفعيله؟
- كيف يتم إغلاق الـ Streams يدوياً عبر .destroy() وما أهمية التقاط أحداث الـ error؟
أسئلة مقابلات Modules, ESM & Package Management في Node.js
- قارن بين نظامي CommonJS (CJS) و ES Modules (ESM) في Node.js وكيف يتعامل المحرك معهما؟
- ما هي حقول 'exports' في package.json وكيف تفوقت على حقل 'main' القديم؟
- كيف تتعامل Node.js مع مشكلة التبعيات الدائرية (Circular Dependencies) بين CJS و ESM؟
- ما الفرق بين npm install و npm ci وما أهمية ملف package-lock.json؟
- كيف تعمل ميزة npm/pnpm Workspaces في إدارة مشاريع الـ Monorepo وما فوائدها؟
- ما هو خطر الـ Dual Package Hazard عند نشر مكتبة تدعم CJS و ESM معاً في Node.js؟
- كيف تستخدم مشغل الاختبارات الأصيل (node:test) في Node.js دون الحاجة لمكتبات خارجية؟
- ما الفرق بين العلامات ^ و ~ والإصدار الصريح في ملف package.json؟
- ما هي أهمية استخدام بادئة node: عند استيراد الوحدات الأساسية مثل node:fs و node:path؟
- كيف تدعم Node.js الحديثة تشغيل ملفات TypeScript مباشرة عبر ميزة Type Stripping؟
أسئلة مقابلات HTTP, Fastify & Web Frameworks في Node.js
- كيف يعمل خادم HTTP الأصيل (node:http) وما هي دورة حياة كائن IncomingMessage و ServerResponse؟
- كيف تعمل الـ Middlewares في Express وما الفرق بين الـ Regular Middleware والـ Error-Handling Middleware؟
- لماذا يتفوق Fastify في الأداء على أطر العمل التقليدية وكيف تعمل آلية Schema-Based Compilation؟
- كيف يطبق إطار عمل NestJS مبادئ الـ Dependency Injection وتنظيم الـ Modules؟
- ما أهمية التحقق من صحة المدخلات (Input Validation) باستخدام مكتبات المخططات مثل Zod في Node.js؟
- ما هو مفهوم الـ Content Negotiation وكيف تتعامل مع ترويسات Accept و Content-Type؟
- كيف تصمم خادم WebSockets عالي الكفاءة باستخدام مكتبة ws وكيف تطبق آلية الـ Heartbeat (Ping/Pong)؟
- كيف تتعامل مع طلبات multipart/form-data ورفع الملفات بأمان في خوادم Node.js؟
- كيف تحمي خادم Node.js من هجمات Slowloris وكيف تطبق تحديد معدل الطلبات (Rate Limiting)؟
- متى تفضل استخدام Server-Sent Events (SSE) على WebSockets وكيف تنفذها في Node.js؟
أسئلة مقابلات Databases, ORMs & Transactions في Node.js
- كيف تعمل حمامات الاتصال (Connection Pools) في قواعد البيانات وما مخاطر تشبعها في Node.js؟
- كيف يعمل Prisma ORM في Node.js وما دور محرك الاستعلام (Query Engine / Query Compiler) فيه؟
- قارن بين Drizzle ORM و TypeORM من حيث الفلسفة المعمارية وسرعة الأداء في Node.js.
- كيف يدير Mongoose الاتصال بقواعد بيانات MongoDB وما دور الـ Buffering للأوامر؟
- كيف تحمي تطبيقات Node.js من ثغرات SQL Injection باستخدام الاستعلامات المجهزة (Parameterized Queries)؟
- كيف تنفذ المعاملات المترابطة (Database Transactions) ومستويات العزل بأمان في Node.js؟
- ما هي مشكلة N+1 في استعلامات قواعد البيانات وكيف تحلها مكتبة DataLoader في Node.js؟
- كيف تصمم معمارية توجيه الاستعلامات بين قاعدة البيانات الأساسية (Primary) والنسخ الثانوية (Read Replicas)؟
- كيف تدير ترحيل قواعد البيانات (Database Migrations) دون توقف الخدمة (Zero-Downtime)؟
- كيف تطبق الأقفال الموزعة (Distributed Locks) باستخدام Redis في بيئة خوادم Node.js متعددة؟
أسئلة مقابلات Security & Best Practices في Node.js
- ما الفرق بين خوارزميات التوقيع المتناظرة (HS256) وغير المتناظرة (RS256) في رموز JWT بـ Node.js؟
- كيف تطبق استراتيجية تدوير رموز التحديث (Refresh Token Rotation) والتخزين الآمن في ملفات تعريف الارتباط؟
- لماذا لا يجب أبداً استخدام دوال SHA-256 لتشفير كلمات المرور ولماذا يفضل Argon2 أو bcrypt؟
- كيف تحدث هجمات تزوير الطلبات عبر المواقع (CSRF) وكيف تحمي تطبيقات Node.js منها؟
- ما هي سياسة تقاسم الموارد عبر الأصول (CORS) وما هي طلبات الفحص المسبق (Preflight Requests)؟
- ما هي حزمة Helmet وما الترويسات الأمنية الأساسية التي تضيفها لتطبيق Node.js؟
- ما هي ثغرة تلوث النموذج الأولي (Prototype Pollution) في JavaScript وكيف تتجنبها في Node.js؟
- كيف تدير المتغيرات البيئية والأسرار (Secrets) بأمان في مشاريع Node.js؟
- ما هي هجمات التوقيت (Timing Attacks) ولماذا يجب استخدام crypto.timingSafeEqual لمقارنة الرموز الحساسة؟
- كيف تحمي مشروع Node.js من هجمات سلاسل التوريد (Supply Chain Attacks) في منظومة npm؟
أسئلة مقابلات Performance & Memory Profiling في Node.js
- كيف تستغل معالجات السيرفر متعددة الأنوية (Multi-Core CPUs) باستخدام وحدة node:cluster؟
- ما الفرق بين خيوط العمل (Worker Threads) والعمليات الفرعية (Child Processes) في Node.js؟
- كيف تكتشف وتشخص تسريبات الذاكرة (Memory Leaks) باستخدام لقطات الـ Heap Snapshots في Node.js؟
- كيف تستخدم الرسوم البيانية اللهبية (Flamegraphs) لتشخيص اختناقات الأداء والـ CPU في Node.js؟
- ما أهمية تفعيل keepAlive في عملاء HTTP (node:http Agent) عند استدعاء الخدمات الخارجية؟
- كيف تطبق نمط Cache-Aside واستراتيجيات إبطال التخزين المؤقت (Cache Invalidation)؟
- كيف تضبط راية --max-old-space-size ومتى يلزم تعديل خيارات الـ Garbage Collector لمحرك V8؟
- لماذا تعد عملية JSON.stringify عنق زجاجة للأداء في الخدمات الضخمة وما بدائلها المحسنة؟
- ما هي ظاهرة تشبع الـ Threadpool (Starvation) وكيف تضبط UV_THREADPOOL_SIZE لتفاديها؟
- كيف يسهل مدير العمليات PM2 إدارة خوادم Node.js في بيئات الإنتاج وما هو الـ Zero-Downtime Reload؟
أسئلة مقابلات Testing & Quality Assurance في Node.js
- كيف تكتب اختبارات وحدة متينة للدوال غير المتزامنة ومراقبة رفض الوعود في Node.js؟
- كيف تستخدم مكتبة Supertest لاختبار نقاط نهاية الـ HTTP دون الحاجة لربط السيرفر بمنفذ شبكة حقيقي؟
- كيف تعزل الخدمات الخارجية في الاختبارات التكاملية باستخدام مكتبات مثل nock أو MSW؟
- ما هي ميزة استخدام Testcontainers لاختبار قواعد البيانات الحقيقية في مشاريع Node.js؟
- كيف تصمم اختبارات للتحقق من سلامة العمليات ضد ظروف التسابق (Race Conditions) وتضارب الأرصدة؟
- ما هو اختبار العقود (Contract Testing) بأداة Pact بين خدمات Node.js الدقيقة؟
- ما هو دور اختبارات النهاية إلى النهاية (E2E) في الأنظمة الخلفية ومتى تكون مفيدة؟
- لماذا لا تعد نسبة تغطية الكود (Code Coverage) 100% دليلاً كافياً على جودة الاختبارات وما هو الـ Mutation Testing؟
- كيف تختبر الـ Streams ومطلقات الأحداث (EventEmitters) بشكل موثوق في اختبارات Node.js؟
- ما هي أسباب الاختبارات المتقلبة (Flaky Tests) وكيف تحقق الحتمية (Determinism) في الاختبارات؟
أسئلة مقابلات Microservices & Distributed Systems في Node.js
- كيف تطبق مبادئ المعمارية النظيفة (Clean Architecture) وفصل الاهتمامات في تطبيق Node.js؟
- كيف تساعد طوابير الرسائل (Message Queues) مثل BullMQ في معالجة المهام الخلفية المعقدة؟
- كيف تعمل مجموعات المستهلكين (Consumer Groups) في Apache Kafka مع خوادم Node.js؟
- قارن بين استخدام gRPC و REST في التواصل الداخلي بين خدمات Node.js الدقيقة (Microservices).
- ما هو نمط قاطع الدائرة (Circuit Breaker) وكيف يمنع الانهيارات المتتالية (Cascading Failures)؟
- كيف تطبق التتبع الموزع (Distributed Tracing) باستخدام معيار OpenTelemetry في Node.js؟
- لماذا يفضل استخدام التسجيل المهيكل (Structured JSON Logging) بمكتبات مثل Pino على console.log؟
- ما الفرق الجوهري بين Liveness Probe و Readiness Probe في Kubernetes لتطبيقات Node.js؟
- ما هي أفضل الممارسات الأمنية والأدائية لبناء حاويات Docker لتطبيقات Node.js؟
- كيف تصمم مستهلكات أحداث آمنة للتكرار (Idempotent Consumers) في الأنظمة الموزعة بـ Node.js؟