أهم 30 بنية بيانات وخوارزمية أسئلة وأجوبة مقابلة [للمستجدين وذوي الخبرة]

نشرت: 2021-08-31

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

تقع الخوارزميات في صميم كل ما يحدث في علوم الكمبيوتر وعلوم البيانات. من التعلم الآلي إلى الذكاء الاصطناعي إلى Blockchain - تعمل جميع التقنيات على الخوارزميات. وتحتاج الخوارزميات إلى هياكل بيانات لتعمل. وبالتالي ، فإن المعرفة المجمعة لهياكل البيانات والخوارزميات يمكن أن تساعدك على التميز عن الآخرين أثناء مقابلتك.

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

جدول المحتويات

أسئلة وأجوبة حول هياكل البيانات والخوارزميات

  1. ماذا تفهم عن "هياكل البيانات"؟

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

  1. كيف يمكنك التمييز بين بنية الملف وهيكل البيانات؟

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

  1. ما هي الأنواع العريضة لهياكل البيانات؟

يمكن تقسيم هياكل البيانات على نطاق واسع إلى فئتين:

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

4. ما هي بعض مجالات الاستخدام الرئيسية لهياكل البيانات؟

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

  • تصميم نظام التشغيل
  • التحليل العددي
  • التعلم الآلي والذكاء الاصطناعي
  • تصميم وتطوير المترجم
  • إدارة قاعدة البيانات
  • التحليل المعجمي
  • البرمجة الرسومية
  • خوارزميات البحث والفرز والمزيد.
  1. اشرح بنية بيانات المكدس واذكر مناطق استخدامها.

المكدس هو ببساطة قائمة مرتبة تسمح بالإدراج والحذف فقط من أحد الأطراف - وهو ما يُعرف باسم "الجزء العلوي". إنها بنية بيانات متكررة لها مؤشر إلى عناصرها "العلوية" والتي تتيح لنا معرفة العنصر الأعلى في المكدس. استنادًا إلى استراتيجية استرداد العناصر ، يُعرف Stack أيضًا باسم Last-In-First-Out ، نظرًا لأن العنصر الأخير الذي يتم دفعه إلى المكدس سيكون في الأعلى ، وسيكون أول عنصر يتم إخراجه. فيما يلي بعض استخدامات بنية بيانات المكدس:

  • التراجع
  • إدارة الذاكرة
  • عودة الوظيفة والاستدعاء
  • تقييم التعبير
  1. ما هي العمليات التي يمكن إجراؤها على المكدس؟

تدعم بنية بيانات المكدس العمليات الثلاث التالية:

  • push () - لإدراج عنصر في الموضع العلوي للمكدس.
  • pop () - لإخراج عنصر واحد من أعلى المكدس.
  • نظرة خاطفة () - لمجرد التحقق من العنصر الموجود أعلى المكدس دون إخراجه من المكدس.
  1. ماذا تفهم عن تعبيرات Postfix؟

تعبير Postfix هو تعبير يتبع فيه المشغلون المعاملات. هذا مفيد للغاية في مصطلحات الحوسبة لأنه لا يتطلب أي تجميع للتعبيرات الفرعية في أقواس أو حتى مراعاة أسبقية المشغل. يتم تمثيل التعبير a + b ببساطة على أنه ab + في postfix.

  1. كيف يتم تخزين عناصر المصفوفة ثنائية الأبعاد في الذاكرة؟

يمكن تخزين عناصر المصفوفة ثنائية الأبعاد في الذاكرة بإحدى الطريقتين التاليتين:

  • الصف الرئيسي: في هذه الطريقة ، يتم أولاً تخزين جميع صفوف المصفوفة بشكل متواصل في الذاكرة. أولاً ، يتم تخزين الصف الأول بالكامل ، ثم الصف الثاني ، وهكذا حتى الصف الأخير.
  • Column-Major: في هذا ، يتم تخزين جميع أعمدة المصفوفة بشكل مستمر في الذاكرة. أولاً ، يتم تخزين العمود الأول بالكامل ، ثم العمود الثاني ، وهكذا.
  1. تحديد بنية بيانات القائمة المرتبطة.

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

  1. ما هي الطرق التي تعتبر بها القوائم المرتبطة أفضل من المصفوفات؟

تعتبر القوائم المرتبطة أفضل من المصفوفات بالطرق التالية:

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

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

  1. ما هي القائمة المرتبطة بشكل مضاعف؟

كما يوحي الاسم ، فإن القائمة المرتبطة Doubly Link هي قائمة مرتبطة بها عقد مرتبطة بكل من العقد التالية والسابقة. نتيجةً لذلك ، تحتوي عُقد القائمة المرتبطة Doubly Linked List على ثلاثة حقول وليس اثنين:

  • مجال البيانات
  • المؤشر التالي (للإشارة إلى العقدة التالية)
  • المؤشر السابق (للإشارة إلى العقدة السابقة)
  1. شرح هيكل بيانات قائمة الانتظار مع بعض تطبيقاته.

قائمة الانتظار هي قائمة مرتبة تسمح بإدراج وحذف عناصر ليس من طرف واحد بل طرفين - تسمى REAR و FRONT. يتم الإدراج من النهاية الأمامية بينما يتم الحذف من النهاية الخلفية. نتيجة لذلك ، يُطلق على قائمة الانتظار غالبًا اسم أول ما يرد أولاً يخرج (FIFO). فيما يلي بعض التطبيقات الواسعة الانتشار لقوائم الانتظار كهيكل بيانات:

  • لقوائم الانتظار للموارد المشتركة بشكل فردي مثل وحدة المعالجة المركزية والطابعة والقرص وما إلى ذلك.
  • لنقل البيانات غير المتزامن ، مثال ملف الإدخال / الإخراج والمآخذ والأنابيب.
  • كمخازن مؤقتة في معظم تطبيقات مشغل الوسائط.
  • في أنظمة التشغيل للتعامل مع الانقطاعات.
  1. هل يمكنك سرد بعض عيوب تنفيذ قوائم الانتظار باستخدام المصفوفات؟

هناك عيبان رئيسيان يحدثان عند تنفيذ قوائم الانتظار مع المصفوفات:

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

فيما يلي بعض الشروط ذات الصلة المتعلقة بالإدراج في قوائم الانتظار الدائرية:

  • إذا كان (خلفي + 1)٪ maxsize == أمامي -> فهذا يعني أن قائمة الانتظار ممتلئة -> لا مزيد من الإدراج ممكن.
  • إذا كان خلفي! = max - 1 ، يتم زيادة قيمة المؤخرة إلى الحجم الأقصى وسيتم إدخال قيمة جديدة في النهاية الخلفية.
  • إذا كانت الجبهة! = 0 والخلفية == max -1 -> فهذا يعني أن قائمة الانتظار ليست ممتلئة. لذلك ، يتم ضبط قيمة الخلفية على 0 ، ويتم إدخال عنصر جديد في النهاية الخلفية لقائمة الانتظار الدائرية.

16. ما هي لعبة Dequeue؟

قائمة الانتظار المزدوجة أو deque هي مجموعة مرتبة من العناصر التي تسهل الإدراج والحذف من كلا الطرفين - الخلفي والأمامي. ونتيجة لذلك ، يعد هذا أكثر مرونة من بنية بيانات قائمة الانتظار.

  1. حدد هيكل بيانات الشجرة وقم بسرد بعض أنواع الأشجار.

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

  • الأشجار العامة
  • الأشجار الثنائية
  • أشجار البحث الثنائية
  • الغابات
  • شجرة التعبير
  • شجرة البطولة
  1. كيف يعمل فرز الفقاعة؟

تعد Bubble Sort واحدة من أكثر خوارزميات الفرز استخدامًا ، وتُستخدم مع المصفوفات من خلال مقارنة العناصر المجاورة وتبادل مواقعها بناءً على قيمها. يطلق عليه فرز الفقاعات لأن تصور كيفية عمله يشبه الفقاعات العائمة من أعلى الماء وكيانات أكبر تغرق.

قراءة: هياكل البيانات في C وكيفية استخدامها؟

  1. ما هي أسرع خوارزمية الفرز المتاحة؟

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

  1. ما هي الأشجار الثنائية؟

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

  1. كيف يمكن استخدام أشجار AVL في عمليات مختلفة مقارنة بـ BST؟

أشجار AVL هي أشجار متوازنة الارتفاع ، لذا فهي لا تسمح للشجرة بالانحراف من أي جانب. الوقت المستغرق لجميع العمليات التي يتم إجراؤها على BST من الارتفاع h هو O (h). ومع ذلك ، يمكن أن يستمر هذا ليكون O (n) في أسوأ سيناريو - حيث يصبح BST منحرفًا. يساعد AVL في القضاء على هذا القيد عن طريق تقييد ارتفاع الشجرة. عند القيام بذلك ، فإنه يفرض حدًا أعلى على جميع العمليات ليكون الحد الأقصى لـ O (تسجيل الدخول n) حيث n = عدد العقد.

  1. ما هي خصائص شجرة بي؟

تحتوي شجرة B للأمر m على الخصائص التالية:

  • جميع خصائص شجرة M-way.
  • سيكون لكل عقدة في B_tree الحد الأقصى لعدد الأطفال.
  • كل عقدة باستثناء الجذر والأوراق سيكون لها على الأقل م / 2 من الأطفال.
  • يجب أن تحتوي العقدة الجذرية على عقدتين فرعيتين على الأقل.
  • يجب أن تقع جميع العقد الطرفية على نفس المستوى الأفقي.
  1. ماذا تفهم عن هيكل بيانات الرسم البياني؟

يمكن تعريف بنية بيانات الرسم البياني (G) على أنها مجموعة مرتبة G (V ، E) حيث تمثل V مجموعة الرؤوس و E هي الحواف التي تشكل الاتصالات. في الأساس ، يمكن اعتبار الرسم البياني بمثابة شجرة دورية حيث يمكن للعقد الحفاظ على العلاقات المعقدة بينها وليس فقط العلاقات بين الوالدين والطفل.

  1. ميّز بين الدورة والمسار والدائرة بالرجوع إلى بنية بيانات الرسم البياني.

الاختلافات بين الدورة والمسار والدائرة هي كما يلي:

  • التصحيح هو ترتيب من الرؤوس المجاورة المتصلة بواسطة حواف دون أي قيود.
  • الدورة عبارة عن مسار مغلق حيث يكون الرأس الأولي هو نفسه رأس النهاية. في الدورة ، لا يمكن زيارة أي فقرة معينة مرتين.
  • الدائرة ، مثل الدورة ، هي مسار مغلق مع الرأس الأولي هو نفسه رأس النهاية. ومع ذلك ، يمكن زيارة أي قمة معينة في الدائرة أكثر من مرة.
  1. كيف تعمل خوارزمية Kruskal؟

تعتبر خوارزمية Kruskal الرسم البياني بمثابة غابة وكل عقد منها عبارة عن شجرة فردية. يُقال إن الشجرة تتصل بشجرة أخرى إذا وفقط إذا كان لديها أقل تكلفة من بين جميع الخيارات ، ولا تنتهك أي خاصية لشجرة الامتداد الدنيا (MST).

ذات صلة: شجرة ثنائية في بنية البيانات

  1. كيف تجد خوارزمية Prim الشجرة الممتدة؟

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

  1. ما هو الحد الأدنى للشجرة الممتدة (MST)؟

MSTs ، في الرسوم البيانية الموزونة ، هي أشجار لها وزن أدنى ، لكنها تمتد عبر جميع القمم.

  1. ما هي وظيفة العودية؟

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

  1. ما هي تقنية الاستيفاء البحث؟

أسلوب البحث الداخلي هو تعديل على طريقة البحث الثنائي. تعمل خوارزمية بحث الاستيفاء على موضع فحص القيم المرغوبة.

  1. ما هو التجزئة؟

التجزئة هي تقنية مفيدة للغاية تُستخدم لتحويل مجموعة من أزواج القيمة الرئيسية إلى فهارس مصفوفة. تكون جداول التجزئة مفيدة أثناء إنشاء تخزين البيانات الترابطي حيث يمكن بسهولة العثور على فهرس البيانات فقط من خلال توفير زوج القيمة الرئيسية!

ختاما

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

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

المقابلات في أي دور وظيفي يطرح أسئلة عامة حول بنية البيانات والخوارزمية؟

إذا كنت تجلس على أي دور في تطوير البرمجيات أو الهندسة ، فسيتم بالتأكيد التحقق من مهارات DSA الخاصة بك. بصرف النظر عن ذلك ، إذا كنت تتقدم لوظائف في علوم البيانات أو ترغب في المغامرة في التعلم الآلي ، فمن المتوقع أن تعرف DSA.

هل أحتاج إلى معرفة البرمجة لفهم بنية البيانات والخوارزميات؟

لا ليس بالضرورة. DSA هي في الغالب مجردة ، وتتعلق بالرياضيات والتمثيلات وتدفق ما يجري وراء الكواليس لأي تطبيق أو برنامج. في حين أن الخبرة في البرمجة ستكون مفيدة عند تنفيذ الخوارزميات ، فهي ليست بأي حال من الأحوال شرطًا أساسيًا لدراسة DSA.

هل هياكل البيانات ثابتة دائمًا؟

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