مشهد مقابلات ML واستراتيجيتها

خطتك الدراسية لمدة 90 يوماً

5 دقيقة للقراءة

لماذا 90 يوماً؟

تُظهر الأبحاث أن 90 يوماً (12-13 أسبوعاً) هي فترة الاستعداد المثلى لمقابلات هندسة ML:

  • قصير جداً (<60 يوماً): استعداد متسرع، ثغرات في المعرفة
  • مناسب تماماً (90 يوماً): وقت كافٍ لبناء فهم عميق والممارسة
  • طويل جداً (>120 يوماً): خطر الإرهاق، تلاشي المعرفة، فقدان الحافز

تقييمك الأساسي

قبل البدء، قيّم مستواك الحالي بصدق:

Python والخوارزميات

  • يمكن حل مشاكل LeetCode السهلة في <15 دقيقة
  • فهم تحليل التعقيد الزمني/المكاني
  • مريح مع هياكل البيانات (المصفوفات، الأشجار، الرسوم البيانية)
  • يمكن تطبيق الخوارزميات من الصفر

أساسيات ML

  • فهم التعلم الموجه مقابل غير الموجه
  • يمكن شرح الخوارزميات الشائعة (الانحدار الخطي، أشجار القرار، الشبكات العصبية)
  • معرفة مقاييس التقييم (الدقة، الضبط، الاستدعاء، F1)
  • مألوف مع overfitting وregularization

ML الإنتاجي

  • نشرت على الأقل نموذج ML واحد
  • فهم خدمة النموذج (دفعي مقابل الوقت الفعلي)
  • مألوف مع اختبار A/B
  • معرفة مفاهيم MLOps الأساسية

عد علاماتك:

  • 0-4: مبتدئ (ركّز على الأساسيات)
  • 5-8: متوسط (استعداد متوازن)
  • 9-12: متقدم (ركّز على تصميم الأنظمة والعمق)

إطار عمل 90 يوماً

الشهر 1: ابنِ أساسك (الأسابيع 1-4)

الأسبوع 1: Python وهياكل البيانات الالتزام الزمني: 10-12 ساعة

التركيز اليومي (2 ساعة/يوم):

  • اليوم 1-2: المصفوفات والسلاسل (5 مشاكل LeetCode سهلة)
  • اليوم 3-4: جداول التجزئة والمجموعات (5 مشاكل LeetCode سهلة)
  • اليوم 5-6: المكدسات والطوابير (5 مشاكل LeetCode سهلة)
  • اليوم 7: مراجعة وممارسة (10 مشاكل سهلة مختلطة)

الموارد الرئيسية:

  • LeetCode: Explore > Arrays, Hash Table, Stack/Queue
  • Python Docs: List comprehensions, dictionaries, collections module
  • YouTube: NeetCode "Blind 75" series

مقياس النجاح: حل 30 مشكلة سهلة بدقة 80%+


الأسبوع 2: أساسيات الخوارزميات الالتزام الزمني: 12-15 ساعة

التركيز اليومي (2-3 ساعات/يوم):

  • اليوم 1-2: خوارزميات الفرز (طبّق quicksort، mergesort من الصفر)
  • اليوم 3-4: تنويعات البحث الثنائي (5 مشاكل)
  • اليوم 5-6: مؤشران ونافذة منزلقة (5 مشاكل)
  • اليوم 7: أساسيات التكرار (5 مشاكل)

مشاكل الممارسة:

# مثال: تطبيق البحث الثنائي
def binary_search(arr, target):
    """
    التمرين: طبّق البحث الثنائي
    ثم جرّب: البحث في مصفوفة مدورة، إيجاد عنصر الذروة
    """
    left, right = 0, len(arr) - 1
    while left <= right:
        mid = (left + right) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

مقياس النجاح: حل 25 مشكلة سهلة/متوسطة، فهم تعقيد O(n log n)


الأسبوع 3: أساسيات ML - التعلم الموجه الالتزام الزمني: 15-18 ساعة

التركيز اليومي (3 ساعات/يوم):

  • اليوم 1: الانحدار الخطي (النظرية + التطبيق من الصفر)
  • اليوم 2: الانحدار اللوجستي (النظرية + التطبيق)
  • اليوم 3: أشجار القرار (خوارزمية CART، معايير التقسيم)
  • اليوم 4: الغابات العشوائية (التجميع، أهمية الميزة)
  • اليوم 5: تعزيز التدرج (XGBoost، LightGBM)
  • اليوم 6: SVMs (حيلة النواة، تحسين الهامش)
  • اليوم 7: تمرن على أسئلة المقابلة على جميع الخوارزميات

مشروع عملي: ابنِ نموذج تصنيف من الصفر:

# طبّق gradient descent للانحدار اللوجستي
class LogisticRegression:
    def __init__(self, lr=0.01, epochs=1000):
        self.lr = lr
        self.epochs = epochs
        self.weights = None
        self.bias = None

    def fit(self, X, y):
        """طبّق منطق التدريب"""
        # تطبيقك
        pass

    def predict(self, X):
        """طبّق منطق التنبؤ"""
        # تطبيقك
        pass

مقياس النجاح: طبّق 3 خوارزميات من الصفر، اشرح المقايضات


الأسبوع 4: أساسيات ML - التعلم غير الموجه والشبكات العصبية الالتزام الزمني: 15-18 ساعة

التركيز اليومي (3 ساعات/يوم):

  • اليوم 1: تجميع K-Means (التطبيق، طريقة الكوع)
  • اليوم 2: تقليل الأبعاد (PCA، t-SNE)
  • اليوم 3: أساسيات الشبكات العصبية (forward prop، backprop)
  • اليوم 4: دوال التنشيط ودوال الخسارة
  • اليوم 5: التحسين (SGD، Adam، جدولة معدل التعلم)
  • اليوم 6: Regularization (L1/L2، dropout، batch normalization)
  • اليوم 7: مشروع صغير: ابنِ شبكة عصبية بسيطة من الصفر

أسئلة المقابلة للممارسة:

  • "اشرح backpropagation كأنني مهندس برمجيات"
  • "متى تستخدم ReLU مقابل sigmoid؟"
  • "كيف تمنع overfitting؟"
  • "ما مشكلة التدرج المتلاشي؟"

مقياس النجاح: طبّق شبكة عصبية من طبقتين من الصفر


الشهر 2: عمّق المهارات وتمرن (الأسابيع 5-8)

الأسبوع 5: خوارزميات متقدمة الالتزام الزمني: 15-18 ساعة

التركيز اليومي (3 ساعات/يوم):

  • اليوم 1-2: مشاكل الأشجار (DFS، BFS، 10 مشاكل)
  • اليوم 3-4: البرمجة الديناميكية (5 مشاكل كلاسيكية: fibonacci، knapsack، LCS)
  • اليوم 5-6: خوارزميات الرسوم البيانية (Dijkstra، الترتيب الطوبولوجي، 5 مشاكل)
  • اليوم 7: مقابلة برمجة تجريبية (45 دقيقة، سجل نفسك)

ركّز على مشاكل بنكهة ML:

  • معالجة المصفوفات (بأسلوب NumPy)
  • تحليل السلاسل (معالجة البيانات المسبقة)
  • اجتياز الرسوم البيانية (أنظمة التوصيات)

مقياس النجاح: حل 30 مشكلة متوسطة، 2 مشكلة صعبة


الأسبوع 6: تقييم النموذج والتصحيح الالتزام الزمني: 12-15 ساعة

التركيز اليومي (2-3 ساعات/يوم):

  • اليوم 1: مقاييس التصنيف (precision، recall، F1، ROC-AUC)
  • اليوم 2: مقاييس الانحدار (MSE، MAE، R²)
  • اليوم 3: استراتيجيات التحقق المتقاطع (k-fold، stratified، time-series)
  • اليوم 4: Bias-variance tradeoff (حدس بصري)
  • اليوم 5: سيناريوهات التصحيح (overfitting، underfitting، تسرب البيانات)
  • اليوم 6: هندسة الميزات واختيارها
  • اليوم 7: تمرن على أسئلة التصحيح في المقابلة

سيناريوهات التصحيح للإتقان:

العرض السبب المحتمل الحل
تدريب عالي، اختبار منخفض Overfitting Regularization، بيانات أكثر، نموذج أبسط
تدريب منخفض، اختبار منخفض Underfitting ميزات أكثر، نموذج معقد، regularization أقل
الخسارة لا تنخفض معدل تعلم، تهيئة سيئة ضبط LR، تحقق من التدرجات، طبّع البيانات
ارتفاع مفاجئ في خسارة التدريب تدرجات منفجرة، دفعة سيئة قص التدرج، تحقق من البيانات، خفض LR

مقياس النجاح: شخّص وحل 20 سيناريو تصحيح


الأسبوع 7: التعلم العميق الالتزام الزمني: 15-18 ساعة

التركيز اليومي (3 ساعات/يوم):

  • اليوم 1: CNNs (الالتفاف، التجميع، البنى)
  • اليوم 2: RNNs وLSTMs (نمذجة التسلسل)
  • اليوم 3: Transformers (آلية الانتباه، BERT، GPT)
  • اليوم 4: التعلم بالنقل والضبط الدقيق
  • اليوم 5: تدريب نماذج كبيرة (تدريب موزع، دقة مختلطة)
  • اليوم 6: البنى الشائعة (ResNet، VGG، BERT، T5)
  • اليوم 7: أسئلة المقابلة عن التعلم العميق

أسئلة المقابلة للممارسة:

  • "اشرح آلية الانتباه"
  • "لماذا تعمل transformers أفضل من RNNs لـ NLP؟"
  • "كيف ستضبط BERT بدقة لحالتك؟"
  • "ما الفرق بين BERT وGPT؟"

مقياس النجاح: اشرح 5 بنى ومقايضاتها


الأسبوع 8: ML التطبيقي ودراسات الحالة الالتزام الزمني: 18-20 ساعة

التركيز اليومي (3-4 ساعات/يوم):

  • اليوم 1: أنظمة التوصيات (التصفية التعاونية، القائمة على المحتوى)
  • اليوم 2: تطبيقات NLP (تحليل المشاعر، التعرف على الكيانات المسماة)
  • اليوم 3: رؤية الكمبيوتر (كشف الأشياء، تصنيف الصور)
  • اليوم 4: التنبؤ بالسلاسل الزمنية (ARIMA، Prophet، LSTMs)
  • اليوم 5: كشف الحالات الشاذة (isolation forest، autoencoders)
  • اليوم 6: الترتيب والبحث (learning to rank، BM25)
  • اليوم 7: محاكاة مشروع منزلي (مشروع 4 ساعات)

ممارسة دراسة الحالة: "ابنِ نظام كشف البريد العشوائي"

  1. البيانات: نص البريد الإلكتروني، البيانات الوصفية (المرسل، الوقت، المرفقات)
  2. الميزات: TF-IDF، سمعة المرسل، عدد الروابط
  3. النموذج: ابدأ بالانحدار اللوجستي، جرّب naive Bayes
  4. التقييم: Precision (قلل الإيجابيات الخاطئة)، Recall (امسك البريد العشوائي)
  5. النشر: استدلال في الوقت الفعلي، تحديثات النموذج

مقياس النجاح: أكمل 5 دراسات حالة شاملة


الشهر 3: تصميم الأنظمة ومقابلات تجريبية (الأسابيع 9-12)

الأسبوع 9: أساسيات تصميم أنظمة ML الالتزام الزمني: 15-18 ساعة

التركيز اليومي (3 ساعات/يوم):

  • اليوم 1: مسارات البيانات (الاستيعاب، التخزين، المعالجة المسبقة)
  • اليوم 2: مخازن الميزات (ميزات غير متصلة مقابل متصلة)
  • اليوم 3: خدمة النموذج (دفعي مقابل الوقت الفعلي، متطلبات الكمون)
  • اليوم 4: المراقبة والتنبيه (كشف الانجراف، مقاييس الأداء)
  • اليوم 5: اختبار A/B والتجريب
  • اليوم 6: استراتيجيات إعادة تدريب النموذج
  • اليوم 7: ممارسة تصميم الأنظمة الشاملة

قالب لتصميم الأنظمة:

1. المتطلبات (5 دقائق)
   - الحجم (المستخدمون، الطلبات، حجم البيانات)
   - الكمون (الوقت الفعلي مقابل الدفعي)
   - متطلبات الدقة

2. مسار البيانات (10 دقائق)
   - مصادر البيانات
   - التخزين (بحيرة بيانات، مستودع بيانات)
   - المعالجة المسبقة

3. النموذج (15 دقيقة)
   - اختيار الخوارزمية
   - مسار التدريب
   - هندسة الميزات

4. الخدمة (10 دقائق)
   - بنية الاستدلال
   - استراتيجية التخزين المؤقت
   - آليات الاحتياطية

5. المراقبة والتكرار (10 دقائق)
   - المقاييس لتتبع
   - قواعد التنبيه
   - محفزات إعادة التدريب

6. المقايضات (10 دقائق)
   - ناقش البدائل
   - التكلفة مقابل الأداء
   - التعقيد مقابل الصيانة

مقياس النجاح: صمم 3 أنظمة ML كاملة


الأسبوع 10: الاستعداد الخاص بالشركة الالتزام الزمني: 12-15 ساعة

التركيز اليومي (2-3 ساعات/يوم):

  • اليوم 1-2: ابحث عن الشركات المستهدفة (اقرأ مدونات هندسية)
  • اليوم 3-4: راجع تجارب المقابلة في Glassdoor
  • اليوم 5: تمرن على أسئلة خاصة بالشركة
  • اليوم 6: جهّز قصص سلوكية باستخدام طريقة STAR
  • اليوم 7: أسئلة لطرحها على المحاورين

قصص STAR للتحضير:

  1. تحدي تقني: "أخبرني عن مشكلة ML صعبة حللتها"
  2. فشل: "صف نموذجاً فشل في الإنتاج"
  3. تعاون: "أخبرني عن العمل مع فرق متعددة الوظائف"
  4. غموض: "صف مشروعاً بمتطلبات غير واضحة"
  5. تأثير: "ما أكثر أعمال ML تأثيراً لديك؟"
  6. خلاف: "أخبرني عن وقت اختلفت فيه مع قرار تقني"
  7. تعلم: "صف تقنية جديدة تعلمتها بسرعة"

مقياس النجاح: 7 قصص STAR مصقولة، 10 أسئلة للمحاورين


الأسبوع 11: مقابلات تجريبية الالتزام الزمني: 10-15 ساعة

الجدول:

  • الاثنين: مقابلة برمجة (45 دقيقة مع زميل أو Pramp)
  • الثلاثاء: راجع وحسّن
  • الأربعاء: مقابلة أساسيات ML (60 دقيقة)
  • الخميس: راجع وحسّن
  • الجمعة: مقابلة تصميم أنظمة (60 دقيقة)
  • السبت: مقابلة سلوكية (30 دقيقة)
  • الأحد: راجع جميع الملاحظات، حدد المناطق الضعيفة

منصات المقابلات التجريبية:

  • Pramp (مقابلات نظير مجانية)
  • Interviewing.io (مدفوعة، مع مهندسي FAANG)
  • LeetCode Mock Interviews
  • الأصدقاء أو الزملاء

مقياس النجاح: أكمل 4 مقابلات تجريبية كاملة، عالج جميع الملاحظات


الأسبوع 12: المراجعة النهائية والتلميع الالتزام الزمني: 15-20 ساعة

التركيز اليومي (3-4 ساعات/يوم):

  • اليوم 1: راجع نقاط ضعف الخوارزمية (أعد المشاكل الفاشلة)
  • اليوم 2: راجع نقاط ضعف مفهوم ML
  • اليوم 3: ممارسة تصميم الأنظمة (تصميمان كاملان)
  • اليوم 4: ممارسة سلوكية (سجل نفسك)
  • اليوم 5: بحث الشركة والأسئلة النهائية
  • اليوم 6: مراجعة خفيفة، بناء الثقة
  • اليوم 7: راحة وإعداد عقلي

قائمة التحقق قبل المقابلة:

  • اختبرت إعداد الفيديو/الصوت
  • جهّزت أسئلة لكل محاور
  • راجعت مشاريع سيرتك الذاتية بعمق
  • طبعت أو فتحت ملاحظات الدراسة للإشارة السريعة
  • أعددت مساحة مقابلة هادئة واحترافية
  • جهّزت قلم، ورقة، ماء للمقابلات الافتراضية
  • راجعت قيم الشركة والأخبار الأخيرة
  • تمرنت على شرح خلفيتك في دقيقتين

مقياس النجاح: اشعر بالثقة والراحة والاستعداد


الالتزام الزمني الأسبوعي

الأسبوع منطقة التركيز الساعات الكثافة
1 Python وهياكل البيانات 10-12 خفيف
2 الخوارزميات 12-15 متوسط
3 ML الموجه 15-18 ثقيل
4 ML غير الموجه والشبكات العصبية 15-18 ثقيل
5 خوارزميات متقدمة 15-18 ثقيل
6 التقييم والتصحيح 12-15 متوسط
7 التعلم العميق 15-18 ثقيل
8 ML التطبيقي 18-20 ثقيل جداً
9 تصميم الأنظمة 15-18 ثقيل
10 إعداد الشركة 12-15 متوسط
11 مقابلات تجريبية 10-15 ثقيل
12 مراجعة نهائية 15-20 متوسط

المتوسط: 14-16 ساعة في الأسبوع

التخصيص لموقفك

إذا كان لديك وقت أقل (6-8 ساعات/أسبوع):

  • مدد إلى 120 يوماً (16-17 أسبوعاً)
  • تخطّ بعض المواضيع المتقدمة
  • ركّز على الأساسيات والبرمجة
  • أعط الأولوية للجودة على الكمية

إذا كان لديك وقت أكثر (20-25 ساعة/أسبوع):

  • اضغط إلى 60 يوماً (8-9 أسابيع)
  • أضف مقابلات تجريبية أكثر
  • غص عميقاً في الأوراق البحثية
  • ابنِ مشاريع إضافية

إذا كنت تستهدف فئة شركة محددة:

  • FAANG+: +20% وقت على الخوارزميات، +30% على تصميم الأنظمة
  • الشركات الناشئة: +40% وقت على المشاريع، -30% على LeetCode
  • مختبرات الأبحاث: +50% وقت على نظرية ML، اقرأ الأوراق يومياً

تتبع التقدم

استخدم جدول بيانات لتتبع:

  • مشاكل LeetCode المحلولة (سهل/متوسط/صعب)
  • مفاهيم ML المتقنة (تقييم ذاتي 1-5)
  • درجات المقابلة التجريبية
  • الساعات الأسبوعية الملتزم بها
  • مستويات الطاقة والحافز

الإشارات الحمراء للمراقبة:

  • عدم تحقيق أهداف الساعات الأسبوعية
  • معدل قبول LeetCode <60%
  • تخطي المقابلات التجريبية
  • أعراض الإرهاق (الإنهاك، الخوف)

التعديلات:

  • إذا كنت متأخراً: ركّز على مواضيع أقل بعمق
  • إذا كنت تحترق: خذ استراحة 2-3 أيام، قلل الساعات
  • إذا كنت تتقدم جيداً: أضف مشاكل أصعب، مقابلات تجريبية أكثر

النقاط الرئيسية

  1. الاتساق يتغلب على الكثافة: ساعتان يومياً أفضل من 14 ساعة يوم الأحد
  2. التعلم النشط: طبّق من الصفر، لا تشاهد مقاطع فيديو فقط
  3. المقابلات التجريبية حاسمة: إنها أقرب شيء للمقابلات الحقيقية
  4. تتبع كل شيء: البيانات تساعدك على تعديل الاستراتيجية
  5. الراحة مهمة: النوم والرياضة والاستراحات تمنع الإرهاق

ما التالي؟

في الوحدة 2، سنغوص بعمق في البرمجة بـ Python وأنماط الخوارزميات المصممة خصيصاً لمقابلات هندسة ML.

:::