العودة للدورة|إتقان مقابلات تصميم الأنظمة: بنية قابلة للتوسع من التقدير إلى الإنتاج
معمل

ابنِ أداة تقدير وتخطيط السعة

30 دقيقة
متقدم
محاولات مجانية غير محدودة

التعليمات

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

نظرة عامة على البنية

main.py (نقطة دخول CLI)
  ├── estimator/qps_calculator.py      — تحويل DAU إلى QPS
  ├── estimator/storage_calculator.py   — توقعات التخزين
  ├── estimator/bandwidth_calculator.py — تقدير عرض النطاق
  ├── estimator/infrastructure_planner.py — تحجيم الخوادم/الذاكرة/الأقسام
  ├── estimator/latency_analyzer.py     — تحليل ميزانية زمن الاستجابة
  ├── estimator/cost_estimator.py       — توقع تكاليف السحابة
  └── estimator/__init__.py             — تصدير الوحدة

تعليمات خطوة بخطوة

FILE 1: estimator/qps_calculator.py

ابنِ حاسبة QPS (استعلامات في الثانية) تحوّل نشاط المستخدم إلى معدلات طلبات.

  • استقبل DAU (المستخدمين النشطين يومياً) وعدد الإجراءات لكل مستخدم يومياً كمدخلات
  • احسب QPS المتوسط: DAU × الإجراءات / 86400
  • طبّق مضاعف ذروة قابل للتعديل (افتراضي 3x) لـ QPS الذروة
  • قسّم إلى QPS قراءة وQPS كتابة باستخدام نسبة القراءة للكتابة
  • أرجع نتيجة مُنظمة بجميع القيم المحسوبة

FILE 2: estimator/storage_calculator.py

قدّر متطلبات التخزين عبر الزمن.

  • استقبل حجم كل كائن بالبايت وعدد الكتابات اليومية وفترة الاحتفاظ بالأيام
  • احسب التخزين اليومي: الكتابات_يومياً × حجم_الكائن
  • اعرض نمو التخزين خلال فترة الاحتفاظ
  • طبّق عامل نمو لعبء البيانات الوصفية (افتراضي 1.2x)
  • أرجع أرقام التخزين اليومية والشهرية وإجمالي الاحتفاظ

FILE 3: estimator/bandwidth_calculator.py

احسب عرض نطاق الوارد والصادر.

  • احسب الوارد: write_QPS × حجم_حمولة_الكتابة
  • احسب الصادر: read_QPS × حجم_حمولة_القراءة
  • حوّل إلى وحدات مقروءة (KB/s، MB/s، GB/s)
  • أرجع كلاً من البايت/ثانية الخام والنصوص المنسقة

FILE 4: estimator/infrastructure_planner.py

حجّم البنية التحتية بناءً على الحمل.

  • احسب عدد الخوادم: peak_QPS / استعلامات_لكل_خادم (تقريب لأعلى)
  • احسب حجم الذاكرة المؤقتة: بناءً على قاعدة 80/20 (تخزين مؤقت لـ 20% من القراءات اليومية)
  • احسب عدد أقسام قاعدة البيانات: باستخدام إجمالي التخزين والحد الأقصى لحجم القسم (افتراضي 500 GB)
  • استخدم التجزئة المتسقة مع عقد افتراضية قابلة للتعديل لتوزيع الأقسام
  • أرجع عدد الخوادم وحجم الذاكرة المؤقتة بـ GB وعدد الأقسام

FILE 5: estimator/latency_analyzer.py

حلّل ميزانية زمن استجابة الطلب.

  • عرّف مكونات زمن الاستجابة: قفزة الشبكة، موازن الحمل، معالجة خادم التطبيق، بحث الذاكرة المؤقتة، استعلام DB، التسلسل
  • احسب زمن الاستجابة P50 وP99 لكل مكون
  • حدد المكون المهيمن (أعلى مساهم في زمن الاستجابة)
  • تحقق مما إذا كان إجمالي زمن الاستجابة يناسب SLA المستهدف
  • أرجع جدول تحليل ونتيجة نجاح/فشل لـ SLA

FILE 6: estimator/cost_estimator.py

قدّر تكاليف البنية التحتية السحابية الشهرية.

  • احسب تكاليف الحوسبة: عدد_الخوادم × تكلفة_الخادم_بالساعة × 730 ساعة/شهر
  • تكاليف التخزين: إجمالي TB × تكلفة TB شهرياً
  • تكاليف عرض النطاق (صادر): GB صادر × تكلفة GB (تسعير متدرج)
  • تكاليف الذاكرة المؤقتة: عقد_الذاكرة المؤقتة × تكلفة_العقدة شهرياً
  • أرجع تكاليف مفصلة وإجمالية شهرية

FILE 7: estimator/__init__.py

صدّر جميع فئات الحاسبة لاستيراد نظيف.

FILE 8: main.py

ابنِ CLI يُشغّل سيناريو تقدير كامل.

  • عرّف سيناريو (مثال: "خلاصة شبيهة بـ Twitter: 300 مليون DAU، 2 تغريدة/مستخدم/يوم، نسبة قراءة-كتابة 100:1")
  • شغّل جميع المقدرات بالتسلسل: QPS → التخزين → عرض النطاق → البنية التحتية → زمن الاستجابة → التكلفة
  • اطبع تقريراً منسقاً بجميع النتائج
  • يجب أن يكون التقرير واضحاً بما يكفي لتقديمه في مقابلة

تلميحات

  • استخدم Python dataclasses أو TypedDict لأنواع الإرجاع المُهيكلة
  • للتنسيق المقروء: 1_073_741_824 bytes"1.00 GB"
  • للتجزئة المتسقة: استخدم hashlib.md5 لتجزئة المفاتيح على حلقة
  • تذكر: 1 يوم = 86,400 ثانية، 1 شهر ≈ 730 ساعة، 1 سنة ≈ 365 يوم
  • مرجع تكاليف السحابة (تقريبي): حوسبة ~$0.05/ساعة لكل vCPU، تخزين ~$0.023/GB/شهر، صادر ~$0.09/GB

ما يجب تقديمه

يحتوي المحرر على 8 أقسام ملفات مع تعليقات TODO. استبدل كل TODO بتنفيذك.

قبل التقديم، تأكد من اكتمال كل قسم ملف في المحرر:

  • FILE 1 — حاسبة QPS مع تحويل DAU ومضاعف الذروة وتقسيم القراءة/الكتابة
  • FILE 2 — حاسبة التخزين مع تحجيم لكل كائن والاحتفاظ وتوقع النمو
  • FILE 3 — حاسبة عرض النطاق مع حساب الوارد/الصادر والتنسيق المقروء
  • FILE 4 — مخطط البنية التحتية مع عدد الخوادم وتحجيم الذاكرة المؤقتة وعدد أقسام DB
  • FILE 5 — محلل زمن الاستجابة مع تحليل المكونات وP50/P99 وفحص SLA
  • FILE 6 — مقدر التكلفة مع عناصر تكلفة الحوسبة والتخزين وعرض النطاق والذاكرة المؤقتة
  • FILE 7 — تصدير الوحدة لجميع الحاسبات
  • FILE 8 — CLI main.py يُشغّل سيناريو كامل مع تقرير منسق

معايير التقييم

حاسبة QPS تحوّل DAU بشكل صحيح إلى QPS متوسط وتطبق مضاعف الذروة وتقسم إلى QPS قراءة/كتابة باستخدام نسبة القراءة للكتابة15 نقاط
حاسبة التخزين تحسب التخزين اليومي من الكتابات وحجم الكائن وتطبق عبء البيانات الوصفية وتعرض إجماليات شهرية واحتفاظية مع تنسيق مقروء15 نقاط
حاسبة عرض النطاق تحسب الوارد من write QPS والصادر من read QPS مع تنسيق معدل مقروء (KB/s، MB/s، GB/s)10 نقاط
مخطط البنية التحتية يحسب عدد الخوادم من peak QPS وحجم الذاكرة المؤقتة باستخدام قاعدة 80/20 وعدد أقسام DB من إجمالي التخزين مع تنفيذ التجزئة المتسقة20 نقاط
محلل زمن الاستجابة يفكك زمن استجابة الطلب إلى مكونات مع قيم P50 وP99 ويحدد المكون المهيمن ويتحقق مقابل هدف SLA15 نقاط
مقدر التكلفة يحسب التكاليف الشهرية للحوسبة والتخزين وعرض نطاق الصادر والذاكرة المؤقتة مع تفصيل مفصل وتوقع سنوي15 نقاط
CLI main.py يُشغّل سيناريو كامل شبيه بـ Twitter عبر جميع المقدرات الستة ويطبع تقريراً منسقاً واضحاً مناسباً لعرض في مقابلة10 نقاط

قائمة التحقق

0/8

حلك

محاولات مجانية غير محدودة
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.