Skip to article
Technical Interviews5 min

مقابلة تصميم الأنظمة: كيف تبني إجابتك

توقف عن التجمد عندما يُطلب منك تصميم أنظمة مباشرة. إطار مثبت لبناء إجابات مقابلة تصميم الأنظمة من المتطلبات إلى المفاضلات.

مقابلة تصميم الأنظمة: كيف تبني إجابتك


لماذا يفشل المهندسون الجيدون في مقابلات تصميم الأنظمة

بُنيت أنظمة موزعة. نقّحت انقطاعات الإنتاج. تعرف ما هو شبكة توصيل المحتوى. ومع ذلك، عندما يقول أحدهم «صمم تويتر»، ينغلق ذهنك.

المشكلة ليست المعرفة — إنها البنية. أسئلة تصميم الأنظمة مفتوحة عمدًا. دون إطار واضح، تقفز بين المكونات، وتنسى توضيح المتطلبات، وينفد وقتك قبل أن تغطي الأجزاء المهمة.

لا يصحح المقابلون رسمك النهائي. يراقبون كيف تفكر: هل تجمع المتطلبات، وتقترح تصميمًا، وتحدد عنق الزجاجة، وتستدل عن المفاضلات؟ هذا ما تختبره مقابلة تصميم الأنظمة فعلًا.


إطار الخطوات الخمس لأي مقابلة تصميم أنظمة

الخطوة 1: وضّح المتطلبات (3–5 دقائق)

قبل رسم أي شيء، اطرح أسئلة. هذا ليس تكتيك تأخير — إنه الجزء الأكثر أهمية.

المتطلبات الوظيفية — ما يجب أن يفعله النظام:

  • ما إجراءات المستخدم الأساسية؟ (نشر، قراءة، بحث، متابعة؟)
  • ما حالات الاستخدام خارج النطاق؟

المتطلبات غير الوظيفية — كيف يجب أن يتصرف النظام:

  • النطاق: كم مستخدمًا نشطًا يوميًا؟ أثقل قراءة أم كتابة؟
  • أهداف زمن الاستجابة: ما المقبول للإجراء الرئيسي للمستخدم؟
  • التوفر: ما اتفاقية مستوى الخدمة لوقت التشغيل؟ هل نتحمل انقطاعًا وجيزًا أثناء النشر؟
  • الاتساق: هل الاتساق القوي مطلوب، أم النهائي جيد؟

اكتب الأرقام. «مليون مستخدم يوميًا، ونسبة قراءة/كتابة 100:1، وp99 أقل من 200 مللي ثانية للقراءات» — يشكل هذا كل قرار معماري تتخذه.

لا تتخطَّ هذه الخطوة حتى لو بدا التلقين واضحًا. يترك المقابلون الغموض عمدًا ليروا ما إذا كنت ستسأل.

الخطوة 2: قدّر النطاق (2–3 دقائق)

أرضي رياضيات الحساب التقريبي تصميمك. لنظام ثقيل القراءة مع 10 ملايين مستخدم نشط يوميًا:

  • افترض 50 قراءة يوميًا لكل مستخدم → 500 مليون قراءة يوميًا → ~6000 قراءة/ثانية
  • التخزين: إذا كان كل سجل 1KB وتخزن 10 ملايين سجل جديد يوميًا → 10 جيجابايت يوميًا → 3.6 تيرابايت/سنة

تخبرك هذه الأرقام ما إذا كنت تحتاج قاعدة بيانات واحدة أو تقسيمًا، وما إذا كانت عقدة تخزين مؤقت واحدة تكفي، وكيف يجب أن تبدو استراتيجية شبكة توصيل المحتوى.

الخطوة 3: التصميم عالي المستوى (10–12 دقيقة)

الآن ارسم. ابدأ بأبسط تصميم يرضي متطلباتك. يتضمن التصميم عالي المستوى الجيد لمعظم الأنظمة:

  • العميل ← بوابة API ← خدمات التطبيق
  • قواعد البيانات — ما النوع ولماذا (علائقية، NoSQL، سلسلة زمنية)؟
  • التخزين المؤقت — ماذا تخزن ولماذا؟
  • المعالجة غير المتزامنة — أين يتناسب صف الرسائل؟
  • شبكة توصيل المحتوى — للمحتوى الثابت أو القراءات الموزعة جغرافيًا

مثال، مختصر عناوين URL على نطاق واسع:

  1. مسار الكتابة: العميل ← API ← خادم التطبيق ← قاعدة البيانات (كتابة تعيين قصير:طويل) + التخزين المؤقت
  2. مسار القراءة: العميل ← شبكة توصيل المحتوى ← موازن التحميل ← خادم التطبيق ← التخزين المؤقت (Redis) ← قاعدة البيانات عند خطأ التخزين المؤقت
  3. توليد عنوان قصير: استخدم معرّفًا قائمًا على العدّاد بترميز base-62 أو مولّد معرّفات موزع (Snowflake)

اذكر خياراتك بصوت عالٍ: «أستخدم PostgreSQL هنا لأن البيانات علائقية ونحتاج اتساقًا قويًا للكتابات. للقراءات، أضع Redis أمامها.»

الخطوة 4: التعميق (10–15 دقيقة)

بعد عالي المستوى، سيوجهك المقابل عادةً إلى المجالات الأكثر أهمية لديهم. مواضيع التعميق الشائعة:

  • تصميم مخطط قاعدة البيانات — ما جداولك وفهارسك واستراتيجية التقسيم؟
  • استراتيجية التخزين المؤقت — cache-aside مقابل write-through؟ فترة صلاحية؟ إبطال التخزين المؤقت؟
  • التعامل مع النقاط الساخنة — ماذا يحدث عندما تحصل منشورات مستخدم مشهور واحد على 10 ملايين زيارة؟
  • الاتساق مقابل التوفر — أين تجري تلك المفاضلة صراحةً؟
  • نشر البيانات — للخلاصات الاجتماعية، كيف تنشر الكتابات للمتابعين؟

تعمق عندما يُطلب منك. يريد المقابل رؤيتك تتجاوز «ضع تخزينًا مؤقتًا أمام قاعدة البيانات» إلى «إليك سياسة الإخلاء، وإليك كيفية التعامل مع التدافع على التخزين المؤقت، وإليك المفاضلة التي أجريها.»

الخطوة 5: المفاضلات والبدائل (5 دقائق)

اختم بالاعتراف بما استبعدته عمدًا أو بسّطته. هذا ما يفصل المرشحين الجيدين عن الرائعين.

«اخترت الاتساق النهائي هنا للحصول على إنتاجية كتابة أفضل — لكن إذا تطلبت الأعمال أن تعكس كل قراءة آخر كتابة، فسأحتاج إلى إعادة التفكير بتكرار متزامن، الذي يضيف زمن استجابة.»

يشير هذا إلى النضج الهندسي: تفهم أن كل قرار معماري مفاضلة، وليس إجابة صحيحة.


أسئلة مقابلة تصميم الأنظمة الشائعة وما تختبره فعلًا

السؤال ما تختبره فعلًا
صمم مختصر عناوين URL التجزئة والتخزين وإنتاجية القراءة العالية والتخزين المؤقت
صمم خلاصة تويتر/إنستغرام استراتيجيات نشر البيانات والاتساق النهائي وشبكة توصيل المحتوى
صمم محدد معدل دلو الرموز مقابل الدلو المتسرب والعدادات الموزعة
صمم نظام إشعارات المعالجة غير المتزامنة وصفوف الرسائل ومنطق إعادة المحاولة
صمم تخزينًا مؤقتًا موزعًا التجزئة المتسقة والتكرار وسياسات الإخلاء

أكبر أخطاء في مقابلات تصميم الأنظمة

القفز مباشرة إلى الكود أو الرسوم البيانية. ابدأ بالمتطلبات دائمًا، حتى لو بدت المشكلة واضحة.

تصميم النظام المثالي. لا يوجد نظام مثالي. يريد المقابل استدلال المفاضلات، وليس مخططًا كتابيًا.

الصمت. اروِ تفكيرك بصوت عالٍ. إذا كنت تفكر بين نهجين، قل ذلك. «أختار بين س وص — س يعطينا أداء كتابة أفضل لكن ص أسهل في توسيع القراءات. بالنظر إلى نسبة القراءة 100:1، سأختار ص.»

تجاهل النطاق. يجب أن يرتبط كل قرار بأرقامك. «يعمل هذا عند 1000 طلب/ثانية، لكن عند 100 ألف طلب/ثانية سنحتاج إلى التقسيم — إليك كيف سأتعامل مع ذلك.»


تدرب على هذا الآن

معرفة الإطار وتطبيقه مباشرة تحت ضغط المقابل شيئان مختلفان جدًا.

جرّب جلسة مجانية على Interview Sparring ←