Skip to main content
AI EducademyAIEducademy
🌳

أسس الذكاء الاصطناعي

🌱
AI Seeds

إلمام بالذكاء الاصطناعي في الواقع العملي

🌿
AI Sprouts

الأسس التي تقوم عليها الأنظمة الذكية

🌳
AI Branches

ابنِ بقدرات الذكاء الاصطناعي المتاحة اليوم

🏕️
AI Canopy

هندسة أنظمة ذكاء اصطناعي توليدي موثوقة

🌲
AI Forest

أطلق منتجات ذكاء اصطناعي بمسؤولية

🔨

إتقان الذكاء الاصطناعي

✏️
AI Sketch

أسس هندسية لبُناة الذكاء الاصطناعي

🪨
AI Chisel

أنماط لحل المسائل الأصعب

⚒️
AI Craft

صمّم أنظمة تُوسّع الذكاء الاصطناعي

💎
AI Polish

تواصل وقُد في عصر الذكاء الاصطناعي

🏆
AI Masterpiece

مشروع تخرّجك الإنتاجي في الذكاء الاصطناعي

🚀

جاهز للمسيرة المهنية

🚀
منصة انطلاق المقابلات

تنقّل في سوق وظائف هندسة الذكاء الاصطناعي

🌟
إتقان المقابلات السلوكية

احكِ قصة كيف تصنع الأثر

💻
المقابلات التقنية

حُلّ وصمّم وتواصل تحت الضغط

🤖
مقابلات الذكاء الاصطناعي وتعلم الآلة

استعد لمقابلات تعلّم الآلة والذكاء الاصطناعي التوليدي الحديثة

🏆
العرض وما بعده

اتخذ خطوتك التالية بثقة واطّلاع

عرض كل البرامج→

المختبر

تم تحميل 7 تجارب
🧠ملعب الشبكة العصبية🤖ذكاء اصطناعي أم إنسان؟💬مختبر التوجيهات🎨مولّد الصور😊محلل المشاعر💡باني روبوت الدردشة⚖️محاكي الأخلاقيات
🎯مقابلة تجريبيةدخول المختبر→
الرحلةالمدونة
🎯
عن المنصة

جعل تعليم الذكاء الاصطناعي متاحاً للجميع في كل مكان

❓
الأسئلة الشائعة

إجابات على الأسئلة الشائعة

🧰
أدوات الذكاء الاصطناعي

أدوات مختارة نستخدمها ونوصي بها

✉️
تواصل

تواصل معنا

⭐
مفتوح المصدر

مبني علناً على GitHub

الأسعار
ابدأ الآن
AI EducademyAIEducademy

© 2026 AI Educademy. جميع الحقوق محفوظة.

تعلّم

  • البرامج الأكاديمية
  • الدروس
  • المختبر
  • مجموعة أدوات الذكاء الاصطناعي للمبتدئين
  • الأسعار

المجتمع

  • GitHub
  • المساهمة
  • قواعد السلوك
  • عن المنصة
  • الأسئلة الشائعة

الدعم

  • اشترِ لي قهوة ☕
  • شروط الخدمة
  • سياسة الخصوصية
  • اتصل بنا
  • Sitemap
البرامج الأكاديمية للذكاء الاصطناعي والهندسة›💻 المقابلات التقنية›الدروس›هياكل البيانات للمقابلات
📊
المقابلات التقنية • متوسط⏱️ 20 دقيقة للقراءة

هياكل البيانات للمقابلات

🤖

تُرجِمت هذه الدروس تلقائيًا إلى العربية ولم تخضع بعد لمراجعة بشرية. إذا بدت أي صياغة غريبة، فالنسخة الإنجليزية هي المرجع.

هياكل البيانات للمقابلات

إليك سرًا لن يتقاضاه كبار المدربين في المقابلات مقابل 500 دولار لتتعلمه: ما يقرب من 90٪ من مشكلات مقابلات البرمجة تدور حول سبع هياكل بيانات فقط. إذا فهمت بعمق متى ولماذا يجب عليك الوصول إلى كل هدف، فقد ربحت بالفعل نصف المعركة. النصف الآخر هو الممارسة، ولكن بدون النماذج العقلية الصحيحة، فإن الممارسة هي مجرد الحفظ. يمنحك هذا الدرس الخريطة بحيث تبدو كل مشكلة تواجهها وكأنها منطقة مألوفة.

هياكل البيانات السبعة التي يجب معرفتها

كل مقابلة فنية تستمد من نفس البئر. فيما يلي الهياكل التي ستواجهها، مرتبة حسب التردد:

| بنية البيانات | تردد المقابلة | العمليات الأساسية | عندما يتوقع القائمون على المقابلات ذلك | |---|---|---|---| | ** المصفوفات / السلاسل ** | ★★★★★ | الوصول إلى O(1)، البحث عن O(n)، إدراج O(n) | تقريبا كل مشكلة تبدأ هنا | | ** خرائط / مجموعات التجزئة ** | ★★★★★ | أدخل O(1)، ابحث عن O(1)، احذف O(1) | "تحسين هذا من O(n²) إلى O(n)" | | القوائم المرتبطة | ★★★★☆ | إدراج O(1)، حذف O(1)، الوصول إلى O(n) | معالجة المؤشر، كشف الدورة | | ** الأكوام وقوائم الانتظار ** | ★★★★☆ | ادفع/فرقعة O(1)، أدخل/فصل O(1) | إعراب، BFS، التراجع عن العمليات | | الأشجار (ثنائية، BST) | ★★★★☆ | ابحث عن O(log n)، أدخل O(log n) | البيانات الهرمية، العمليات المصنفة | | الرسوم البيانية | ★★★☆☆ | يعتمد على التمثيل | علاقات، دروب، تواصل | | أكوام | ★★★☆☆ | أدخل O(log n)، واستخرج الحد الأدنى O(log n) | "ابحث عن أكبر/أصغر k" |

💡
إذا كان لديك أسبوع واحد فقط للتحضير، فركز على المصفوفات وخرائط التجزئة والأشجار. تمثل هذه الثلاثة غالبية أسئلة المقابلة في الشركات على مستوى FAANG.

المصفوفات والسلاسل - مؤسستك

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

# Two Sum — the most classic interview problem
# "Given an array and target, find two numbers that add to target"
def two_sum(nums, target):
    seen = {}  # Hash map to store complement
    for i, num in enumerate(nums):
        complement = target - num
        if complement in seen:
            return [seen[complement], i]
        seen[num] = i
    return []

# Time: O(n), Space: O(n) — trading space for time

لاحظ كيف أن مشكلة "المصفوفة" هذه هي في الحقيقة مشكلة خريطة تجزئة. يتكرر هذا النمط باستمرار: تستخدم القوة الغاشمة حلقات متداخلة فوق مصفوفة، ويقدم الحل الأمثل خريطة تجزئة.

خرائط التجزئة - المقابلة مع سكين الجيش السويسري

إذا كنت عالقًا في أي مشكلة وكانت القوة الغاشمة هي O(n²)، فاسأل نفسك: "هل يمكن لخريطة التجزئة تقليل هذا إلى O(n)؟" الجواب هو نعم بشكل مدهش في كثير من الأحيان.

تتألق خرائط التجزئة عندما تحتاج إلى:

  • عدد التكرارات - عدد الأحرف، وعدد الكلمات، وتكرارات العناصر
الدرس 1 من 80٪ مكتمل
←العودة للبرنامج
متابعة: أنماط واستراتيجيات الخوارزمية→

النقاش

سجّل الدخول للانضمام إلى النقاش

اقترح تعديلاً على هذا الدرس
  • تتبع العناصر المرئية - اكتشاف التكرارات، ومشكلات النمط ذات المجموعتين
  • عناصر المجموعة - تجميع الجناس الناقص والتصنيف
  • حسابات ذاكرة التخزين المؤقت - الحفظ في البرمجة الديناميكية
  • // Group Anagrams — a classic hash map problem
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String, List<String>> map = new HashMap<>();
        for (String s : strs) {
            char[] chars = s.toCharArray();
            Arrays.sort(chars);
            String key = new String(chars);
            map.computeIfAbsent(key, k -> new ArrayList<>()).add(s);
        }
        return new ArrayList<>(map.values());
    }
    
    🤔
    Think about it:عندما ترى مشكلة تطلب منك "البحث" أو "العد" أو "التحقق من وجودها"، ما هي بنية البيانات التي يجب أن تتبادر إلى ذهنك على الفور؟ كيف تفسر المفاضلة بين بحث O(1) لخريطة التجزئة والبحث الثنائي O(log n) للمصفوفة المرتبة؟

    القوائم المرتبطة - إتقان المؤشر

    تختبر مشكلات القائمة المرتبطة قدرتك على التعامل مع المؤشرات دون فقدان مسار العقد. التقنيات الثلاث التي تحتاجها هي:

    1. مؤشران (سريع/بطيء) - اكتشاف الدورة، والعثور على العقدة الوسطى
    2. عقدة الرأس الوهمية - تبسط حالات الحواف التي قد يتغير فيها الرأس
    3. الانعكاس - الانعكاس التكراري هو حجر الأساس للعديد من المشكلات
    # Detect a cycle in a linked list (Floyd's Algorithm)
    def has_cycle(head):
        slow = fast = head
        while fast and fast.next:
            slow = slow.next
            fast = fast.next.next
            if slow == fast:
                return True
        return False
    
    🤯
    تم نشر خوارزمية فلويد للكشف عن الدورة، والمعروفة أيضًا باسم خوارزمية "السلحفاة والأرنب"، في عام 1967. وهي واحدة من أقدم الخوارزميات التي لا تزال شائعة في مقابلات البرمجة الحديثة - منذ أكثر من 55 عامًا وما زال العدد في ازدياد.

    الأكوام وقوائم الانتظار - الترتيب مهم

    تعد الأكوام (LIFO) وقوائم الانتظار (FIFO) من الهياكل الأكثر بساطة، ولكنها تفتح فئات كاملة من المشكلات:

    • المكدسات: الأقواس الصالحة، تقييم التعبير، مشاكل المكدس الرتيبة، التراجع/الإعادة
    • قوائم الانتظار: اجتياز BFS، الحد الأقصى للنافذة المنزلقة (مع deque)، جدولة المهام
    # Valid Parentheses — classic stack problem
    def is_valid(s: str) -> bool:
        stack = []
        matching = {')': '(', '}': '{', ']': '['}
        for char in s:
            if char in matching:
                if not stack or stack[-1] != matching[char]:
                    return False
                stack.pop()
            else:
                stack.append(char)
        return len(stack) == 0
    

    الأشجار - التفكير الهرمي

    تشتمل مشكلات الشجرة عادةً على التكرار وواحد من أوامر الاجتياز الثلاثة (بالترتيب، والترتيب المسبق، والترتيب اللاحق). النموذج العقلي الذي يجب تطويره هو: "ما الذي أحتاجه من الشجرة الفرعية اليسرى، والشجرة الفرعية اليمنى، وكيف يمكنني دمجهما في العقدة الحالية؟"

    # Maximum depth of a binary tree — the template for tree recursion
    def max_depth(root):
        if not root:
            return 0
        left_depth = max_depth(root.left)
        right_depth = max_depth(root.right)
        return 1 + max(left_depth, right_depth)
    

    تضيف مشاكل BST (شجرة البحث الثنائية) خاصية مهمة واحدة: يؤدي الاجتياز بالترتيب إلى إنتاج عناصر مرتبة. إذا رأيت "مرتبة" و"شجرة" في نفس المشكلة، فكر في BST على الفور.

    الرسوم البيانية - نمذجة العلاقات

    تبدو مشاكل الرسم البياني مخيفة ولكن معظمها يتحول إلى BFS أو DFS بمجرد إنشاء قائمة الجوار. المهارات الأساسية هي:

    • بناء الرسم البياني من قوائم الحافة أو المصفوفات
    • BFS لأقصر مسار في الرسوم البيانية غير الموزونة
    • DFS للاتصال، والكشف عن الدورة، والفرز الطوبولوجي
    # BFS shortest path in an unweighted graph
    from collections import deque
    
    def shortest_path(graph, start, end):
        queue = deque([(start, 0)])
        visited = {start}
        while queue:
            node, distance = queue.popleft()
            if node == end:
                return distance
            for neighbour in graph[node]:
                if neighbour not in visited:
                    visited.add(neighbour)
                    queue.append((neighbour, distance + 1))
        return -1  # Not reachable
    

    الأكوام - إشارة "Top K".

    عندما تقول المشكلة "ابحث عن K الأكبر" أو "K الأقرب" أو "دمج قوائم K المصنفة"، فمن المؤكد تقريبًا أن الكومة (قائمة انتظار الأولوية) هي الإجابة. في بايثون، heapq يوفر كومة صغيرة؛ بالنسبة إلى الحد الأقصى للكومة، قم بإلغاء القيم.

    import heapq
    
    # Find the K largest elements in an array
    def k_largest(nums, k):
        return heapq.nlargest(k, nums)  # Uses a min-heap of size k internally
    
    🧠فحص سريع

    تحتاج إلى العثور على الوسيط لتدفق الأرقام في O(log n) لكل عملية إدراج. ما هي مجموعة بنية البيانات الأكثر ملاءمة؟

    ورقة الغش الخاصة بتعقيد الزمان والمكان

    | الهيكل | الوصول | بحث | أدخل | حذف | الفضاء | |---|---|---|---|---|---| | صفيف | يا(1) | يا(ن) | يا(ن) | يا(ن) | يا(ن) | | خريطة التجزئة | - | س(1)* | س(1)* | س(1)* | يا(ن) | | قائمة مرتبطة | يا(ن) | يا(ن) | يا(1) | يا(1) | يا(ن) | | المكدس/قائمة الانتظار | يا(ن) | يا(ن) | يا(1) | يا(1) | يا(ن) | | BST (متوازن) | يا(سجل ن) | يا(سجل ن) | يا(سجل ن) | يا(سجل ن) | يا(ن) | | كومة | - | يا(ن) | يا(سجل ن) | يا(سجل ن) | يا(ن) |

    * حالة متوسطة؛ أسوأ الحالات هي O(n) بسبب تصادمات التجزئة.

    التعرف على الأنماط - اختيار البنية الصحيحة

    قم بتطوير قائمة المراجعة العقلية هذه عند قراءة المشكلة:

    • هل تحتاج إلى بحث سريع؟ → خريطة التجزئة
    • ** هل تحتاج إلى ترتيب مفروز؟ ** → BST أو مصفوفة مرتبة + بحث ثنائي
    • هل تحتاج إلى معالجة ما يصرف أولاً (FIFO)؟ → قائمة الانتظار (BFS)
    • هل تحتاج إلى LIFO / التراجع؟ → Stack (DFS)
    • هل تحتاج إلى أعلى K أو الأولوية؟ → الكومة
    • هل تحتاج إلى نموذج الاتصالات؟ → الرسم البياني
    • هل تحتاج إلى الوصول إلى O(1) عن طريق الفهرس؟ → Array
    💡
    في مقابلتك، اذكر بوضوح بنية البيانات التي تختارها ولماذا. إن قول "سأستخدم خريطة التجزئة هنا لأننا نحتاج إلى عمليات بحث O(1) لتجنب الحلقة المتداخلة" يوضح بالضبط التفكير الهندسي الذي يريد القائمون على المقابلات رؤيته.

    الوجبات السريعة الرئيسية

    • سبعة هياكل تغطي 90% من المقابلات: المصفوفات، وخرائط التجزئة، والقوائم المرتبطة، والمكدسات/قوائم الانتظار، والأشجار، والرسوم البيانية، والأكوام.
    • خرائط التجزئة هي أفضل صديق لك: عندما تكون في شك، من المحتمل أن تساعدك خريطة التجزئة.
    • اعرف التعقيدات التي تواجهك بهدوء: سوف يسأل القائمون على المقابلات "ما هو التعقيد الزمني؟" بعد كل حل.
    • التعرف على الأنماط يتفوق على الحفظ: تعلم كيفية تعيين إشارات المشكلة ("أعلى K" → الكومة، "أقصر مسار" → BFS) إلى البنية الصحيحة.
    • التدرب بشكل متعمد: حل 3-5 مشاكل لكل بنية بيانات، مع التركيز على الفهم بدلاً من السرعة. السرعة تأتي من الفهم.