logo

34 أسئلة للمقابلة مع مجموعات Java

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


1) ما هو إطار المجموعة في جافا؟

Collection Framework عبارة عن مزيج من الفئات والواجهة، والتي تُستخدم لتخزين البيانات ومعالجتها في شكل كائنات. يوفر فئات مختلفة مثل ArrayList وVector وStack وHashSet وما إلى ذلك وواجهات مثل List وQueue وSet وما إلى ذلك لهذا الغرض.


2) ما هي الاختلافات الرئيسية بين المصفوفة والمجموعة؟

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

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

3) اشرح الواجهات المختلفة المستخدمة في إطار المجموعة؟

ينفذ إطار عمل المجموعة واجهات مختلفة، وواجهة المجموعة وواجهة الخريطة (java.util.Map) هي الواجهات المستخدمة بشكل أساسي في Java Collection Framework. قائمة واجهات Collection Framework موضحة أدناه:

1. واجهة التجميع: المجموعة (java.util.Collection) هي الواجهة الأساسية، ويجب على كل مجموعة تنفيذ هذه الواجهة.

بناء الجملة:

 public interface Collectionextends Iterable 

حيث يمثل أن هذه الواجهة من النوع العام

2. واجهة القائمة: تعمل واجهة القائمة على توسيع واجهة المجموعة، وهي عبارة عن مجموعة مرتبة من الكائنات. أنه يحتوي على عناصر مكررة. كما يسمح بالوصول العشوائي للعناصر.

بناء الجملة:

 public interface List extends Collection 

3. تعيين الواجهة: واجهة Set (java.util.Set) هي مجموعة لا يمكن أن تحتوي على عناصر مكررة. يمكن أن يتضمن فقط الطرق الموروثة لواجهة المجموعة

بناء الجملة:

 public interface Set extends Collection 

واجهة قائمة الانتظار: تحدد واجهة قائمة الانتظار (java.util.Queue) بنية بيانات قائمة الانتظار، التي تقوم بتخزين العناصر في النموذج FIFO (أولاً يخرج أولاً).

بناء الجملة:

 public interface Queue extends Collection 

4. واجهة الانتظار: إنها قائمة انتظار مزدوجة النهاية. يسمح بإدخال وإزالة العناصر من كلا الطرفين. إنه يزرع خصائص كل من المكدس وقائمة الانتظار حتى يتمكن من إجراء عمليات مكدس LIFO (آخر ما يخرج أولاً) وقائمة انتظار FIFO (أول ما يخرج أولاً).

بناء الجملة:

 public interface Dequeue extends Queue 

5. واجهة الخريطة: تمثل الخريطة (java.util.Map) مفتاحًا لتخزين العناصر. واجهة الخريطة لا تنفذ واجهة المجموعة. يمكن أن يحتوي فقط على مفتاح فريد ولكن يمكن أن يحتوي على عناصر مكررة. هناك واجهتان تقومان بتنفيذ Map في Java وهما واجهة Map وSorted Map.

إدخال جافا

4) ما الفرق بين ArrayList و Vector؟

لا.ArrayListالمتجه
1)لم تتم مزامنة ArrayList.تتم مزامنة المتجهات.
2)ArrayList ليس فئة قديمة.المتجهات هي فئة قديمة.
3)تعمل ArrayList على زيادة حجمها بنسبة 50% من حجم المصفوفة.يزيد Vector من حجمه عن طريق مضاعفة حجم المصفوفة.
4)ArrayList ليس آمنًا؟ لأنه غير متزامن.قائمة المتجهات آمنة للخيط؟ لأنه تتم مزامنة كل طريقة.

5) ما الفرق بين ArrayList و LinkedList؟

لا.ArrayListقائمة مرتبطة
1)يستخدم ArrayList مصفوفة ديناميكية.يستخدم LinkedList قائمة مرتبطة بشكل مضاعف.
2)ArrayList ليس فعالاً في المعالجة لأن هناك حاجة إلى الكثير.LinkedList فعال في التلاعب.
3)ArrayList هو الأفضل لتخزين البيانات وجلبها.LinkedList هو الأفضل لمعالجة البيانات.
4)يوفر ArrayList الوصول العشوائي.LinkedList لا يوفر وصولاً عشوائيًا.
5)يأخذ ArrayList مقدارًا أقل من الذاكرة لأنه يخزن الكائن فقطيستهلك LinkedList قدرًا أكبر من الذاكرة، حيث يقوم بتخزين الكائن بالإضافة إلى عنوان ذلك الكائن.

6) ما الفرق بين Iterator و ListIterator؟

يجتاز التكرار العناصر في الاتجاه الأمامي فقط بينما يجتاز ListIterator العناصر في الاتجاه الأمامي والخلفي.

لا.مكررListIterator
1)يجتاز التكرار العناصر في الاتجاه الأمامي فقط.يقوم ListIterator باجتياز العناصر في الاتجاهين الخلفي والأمامي.
2)يمكن استخدام Iterator في القائمة، والمجموعة، وقائمة الانتظار.يمكن استخدام ListIterator في القائمة فقط.
3)يمكن لـ Iterator تنفيذ عملية الإزالة فقط أثناء اجتياز المجموعة.يمكن لـ ListIterator تنفيذ 'إضافة'؟ ؟يزيل،؟ وحدد؟ العملية أثناء اجتياز المجموعة.

7) ما الفرق بين التكرار والتعداد؟

لا.مكررتعداد
1)يمكن لـ Iterator اجتياز العناصر القديمة وغير القديمة.يمكن للتعداد اجتياز العناصر القديمة فقط.
2)التكرار سريع الفشل.التعداد ليس سريع الفشل.
3)التكرار أبطأ من التعداد.التعداد أسرع من Iterator.
4)يمكن لـ Iterator تنفيذ عملية الإزالة أثناء اجتياز المجموعة.يمكن للتعداد إجراء عملية اجتياز فقط على المجموعة.

8) ما الفرق بين القائمة والمجموعة؟

تقوم كل من القائمة والتعيين بتوسيع واجهة المجموعة. ومع ذلك، هناك بعض الاختلافات بين كلاهما المذكورة أدناه.

  • يمكن أن تحتوي القائمة على عناصر مكررة بينما تتضمن المجموعة عناصر فريدة.
  • القائمة عبارة عن مجموعة مرتبة تحافظ على ترتيب الإدراج بينما Set عبارة عن مجموعة غير مرتبة ولا تحافظ على ترتيب الإدراج.
  • تحتوي واجهة القائمة على فئة قديمة واحدة وهي فئة Vector بينما لا تحتوي واجهة Set على أي فئة قديمة.
  • يمكن أن تسمح واجهة القائمة بعدد n من القيم الخالية بينما تسمح واجهة Set فقط بقيمة فارغة واحدة.

9) ما الفرق بين HashSet وTreeSet؟

تقوم كلا الفئتين HashSet وTreeSet بتنفيذ واجهة Set. الاختلافات بين كلاهما مذكورة أدناه.

  • لا يحتفظ HashSet بأي ترتيب، بينما يحتفظ TreeSet بترتيب تصاعدي.
  • يتم تنفيذ HashSet بواسطة جدول التجزئة بينما يتم تنفيذ TreeSet بواسطة بنية شجرة.
  • أداء HashSet أسرع من TreeSet.
  • يتم دعم HashSet بواسطة HashMap بينما يتم دعم TreeSet بواسطة TreeMap.

10) ما الفرق بين المجموعة والخريطة؟

الاختلافات بين المجموعة والخريطة موضحة أدناه.

جافا الرياضيات عشوائية
  • تحتوي المجموعة على قيم فقط بينما تحتوي الخريطة على المفتاح والقيم معًا.
  • تحتوي المجموعة على قيم فريدة بينما يمكن أن تحتوي الخريطة على مفاتيح فريدة ذات قيم مكررة.
  • تحتوي المجموعة على رقم واحد من القيمة الخالية بينما يمكن أن تتضمن الخريطة مفتاحًا فارغًا واحدًا بعدد n من القيم الخالية.

11) ما الفرق بين HashSet وHashMap؟

الاختلافات بين HashSet وHashMap مذكورة أدناه.

  • يحتوي HashSet على قيم فقط بينما يتضمن HashMap الإدخال (المفتاح، القيمة). يمكن تكرار HashSet، ولكن يحتاج HashMap إلى التحويل إلى Set ليتم تكراره.
  • تقوم HashSet بتنفيذ واجهة Set بينما تقوم HashMap بتنفيذ واجهة Map
  • لا يمكن أن تحتوي HashSet على أي قيمة مكررة بينما يمكن أن تحتوي HashMap على قيم مكررة بمفاتيح فريدة.
  • يحتوي HashSet على الرقم الفردي الوحيد للقيمة الخالية بينما يمكن لـ HashMap الاحتفاظ بمفتاح فارغ واحد بعدد n من القيم الخالية.

12) ما الفرق بين HashMap وTreeMap؟

الاختلافات بين HashMap وTreeMap موضحة أدناه.

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

13) ما الفرق بين HashMap وHashtable؟

لا.خريطة التجزئةجدول التجزئة
1)لم تتم مزامنة HashMap.تمت مزامنة جدول التجزئة.
2)يمكن أن يحتوي HashMap على مفتاح فارغ واحد وقيم فارغة متعددة.لا يمكن أن يحتوي Hashtable على أي مفتاح فارغ أو قيمة فارغة.
3)HashMap ليس آمنًا لمؤشر الترابط؟ لذلك فهو مفيد للتطبيقات غير المترابطة.يعد Hashtable آمنًا للخيوط ويمكن مشاركته بين سلاسل الرسائل المختلفة.
4)4) يرث HashMap فئة AbstractMapيرث Hashtable فئة القاموس.

14) ما الفرق بين التحصيل والتحصيل؟

الاختلافات بين المجموعة والمجموعات موضحة أدناه.

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

15) ما الفرق بين المقارن والمقارن؟

لا.قابلة للمقارنةالمقارنة
1)يوفر Comparable نوعًا واحدًا فقط من التسلسل.يوفر المقارن أنواعًا متعددة من التسلسلات.
2)يوفر طريقة واحدة تسمى CompareTo().يوفر طريقة واحدة تسمى المقارنة ().
3)تم العثور عليه في حزمة Java.lang.وهو موجود في حزمة java.util.
4)إذا قمنا بتطبيق الواجهة القابلة للمقارنة، فسيتم تعديل الفئة الفعلية.لم يتم تغيير الطبقة الفعلية.

16) ماذا تفهم من BlockingQueue؟

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

بناء الجملة:

 public interface BlockingQueue extends Queue 

17) ما هي فائدة ملف الخصائص؟

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

 import java.util.*; import java.io.*; public class Test { public static void main(String[] args)throws Exception{ FileReader reader=new FileReader('db.properties'); Properties p=new Properties(); p.load(reader); System.out.println(p.getProperty('user')); System.out.println(p.getProperty('password')); } } 

انتاج |

 system oracle 

18) ماذا تفعل طريقة hashCode ()؟

تقوم طريقة hashCode() بإرجاع قيمة رمز التجزئة (رقم صحيح).

تقوم طريقة hashCode() بإرجاع نفس الرقم الصحيح إذا كان هناك مفتاحين (عن طريق استدعاء طريقة يساوي()) متطابقين.

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

إذا لم ينتج عن كائنين نتيجة متساوية باستخدام طريقة يساوي ()، فإن طريقة hashcode () ستوفر نتيجة عددية مختلفة لكلا الكائنين.


19) لماذا نتجاوز طريقة يساوي ()؟

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

على سبيل المثال، الموظف عبارة عن فئة تحتوي على 3 أعضاء بيانات: المعرف والاسم والراتب. ومع ذلك، نريد التحقق من مساواة الموظف بالراتب. بعد ذلك، نحتاج إلى تجاوز طريقة يساوي ().


20) كيفية مزامنة عناصر القائمة والتعيين والخريطة؟

نعم، توفر فئة Collections طرقًا لجعل عناصر القائمة أو المجموعة أو الخريطة متزامنة:

قائمة ثابتة عامة متزامنة (قائمة l){}
مجموعة ثابتة عامة متزامنة (مجموعة s) {}
مجموعة SortedSet العامة المتزامنةSortedSet(SortedSet s){}
خريطة ثابتة عامة متزامنةMap(Map m){}
SortedMap العام الثابت المتزامنSortedMap(SortedMap m){}

21) ما فائدة المجموعة العامة؟

هناك ثلاث مزايا رئيسية لاستخدام المجموعة العامة.

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

22) ما هو تصادم التجزئة في Hashtable وكيف يتم التعامل معه في Java؟

يُعرف مفتاحان مختلفان لهما نفس قيمة التجزئة باسم تصادم التجزئة. سيتم الاحتفاظ بإدخالين منفصلين في مجموعة تجزئة واحدة لتجنب الاصطدام. هناك طريقتان لتجنب تصادم التجزئة.

  • تسلسل منفصل
  • فتح العنونة

23) ما هو فئة القاموس؟

توفر فئة القاموس القدرة على تخزين أزواج القيمة الرئيسية.


24) ما هو الحجم الافتراضي لعامل التحميل في المجموعة القائمة على التجزئة؟

الحجم الافتراضي لعامل التحميل هو 0.75 . يتم حساب السعة الافتراضية على أنها السعة الأولية * عامل الحمولة. على سبيل المثال، 16 * 0.75 = 12. إذن، 12 هي السعة الافتراضية للخريطة.


25) ماذا تفهم من الفشل السريع؟

يُطلق على Iterator في Java والذي يقوم فورًا بطرح ConcurrentmodificationException، في حالة حدوث أي تعديل هيكلي، اسم مكرر Fail-Fast. لا يتطلب مكرر الدهون الفاشلة أي مساحة إضافية في الذاكرة.


26) ما هو الفرق بين Array و ArrayList؟

الاختلافات الرئيسية بين Array وArrayList موضحة أدناه.

SNمجموعة مصفوفةArrayList
1المصفوفة ذات حجم ثابت، مما يعني أنه لا يمكننا تغيير حجم المصفوفة حسب الحاجة.ArrayList ليس بالحجم الثابت ويمكننا تغيير الحجم ديناميكيًا.
2المصفوفات من النوع الثابت.ArrayList ذو حجم ديناميكي.
3يمكن للمصفوفات تخزين أنواع البيانات البدائية بالإضافة إلى الكائنات.لا يمكن لـ ArrayList تخزين أنواع البيانات البدائية، بل يمكنه فقط تخزين الكائنات.

27) ما الفرق بين طول المصفوفة وحجم ArrayList؟

يمكن الحصول على طول المصفوفة باستخدام خاصية الطول بينما لا يدعم ArrayList خاصية الطول، ولكن يمكننا استخدام طريقة size() للحصول على عدد الكائنات في القائمة.

العثور على طول المصفوفة

 Int [] array = new int[4]; System.out.println('The size of the array is ' + array.length); 

العثور على حجم ArrayList

 ArrayList list=new ArrayList(); list.add('ankit');�� list.add('nippun'); System.out.println(list.size()); 

28) كيفية تحويل ArrayList إلى Array وArray إلى ArrayList؟

يمكننا تحويل Array إلى ArrayList باستخدام طريقة asList() لفئة Arrays. طريقة asList() هي الطريقة الثابتة لفئة Arrays وتقبل كائن القائمة. خذ بعين الاعتبار بناء الجملة التالي:

 Arrays.asList(item) 

يمكننا تحويل ArrayList إلى Array باستخدام طريقة toArray() لفئة ArrayList. خذ بعين الاعتبار بناء الجملة التالي لتحويل ArrayList إلى كائن القائمة.

 List_object.toArray(new�String[List_object.size()]) 

29) كيفية جعل Java ArrayList للقراءة فقط؟

يمكننا الحصول على Java ArrayList للقراءة فقط عن طريق استدعاء الأسلوب Collections.unmodifiableCollection() . عندما نحدد ArrayList على أنه للقراءة فقط، فلن نتمكن من إجراء أي تعديل في المجموعة من خلال طريقة �add() أو Remove() أو set().


30) كيفية إزالة التكرارات من ArrayList؟

هناك طريقتان لإزالة التكرارات من ArrayList.

    باستخدام HashSet:باستخدام HashSet يمكننا إزالة العنصر المكرر من ArrayList، لكنه لن يحافظ على ترتيب الإدراج.باستخدام LinkedHashSet:يمكننا أيضًا الحفاظ على ترتيب الإدراج باستخدام LinkedHashSet بدلاً من HashSet.

عملية إزالة العناصر المكررة من ArrayList باستخدام LinkedHashSet:

  • انسخ جميع عناصر ArrayList إلى LinkedHashSet.
  • قم بإفراغ ArrayList باستخدام طريقة Clear()، والتي ستؤدي إلى إزالة جميع العناصر من القائمة.
  • الآن انسخ جميع عناصر LinkedHashset إلى ArrayList.

31) كيفية عكس ArrayList؟

لعكس قائمة ArrayList، يمكننا استخدام الأسلوب العكسي () لفئة Collections. النظر في المثال التالي.

 import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Iterator i2 = list.iterator(); Collections.reverse(list); System.out.println('printing list in reverse order....'); while(i2.hasNext()) { System.out.println(i2.next()); } } } 

انتاج |

 printing the list.... 10 50 30 printing list in reverse order.... 30 50 10 

32) كيفية فرز ArrayList بترتيب تنازلي؟

لفرز قائمة ArrayList بترتيب تنازلي، يمكننا استخدام طريقة الترتيب العكسي لفئة Collections. النظر في المثال التالي.

 import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); list.add(60); list.add(20); list.add(90); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Comparator cmp = Collections.reverseOrder(); Collections.sort(list,cmp); System.out.println('printing list in descending order....'); Iterator i2 = list.iterator(); while(i2.hasNext()) { System.out.println(i2.next()); } } } 

انتاج |

 printing the list.... 10 50 30 60 20 90 printing list in descending order.... 90 60 50 30 20 10 

33) كيفية مزامنة ArrayList؟

يمكننا مزامنة ArrayList بطريقتين.

  • باستخدام طريقة Collections.synchronizedList()
  • باستخدام CopyOnWriteArrayList

3. 4) متى يجب استخدام ArrayList وLinkedList؟

من الأفضل استخدام LinkedLists لعمليات التحديث بينما من الأفضل استخدام ArrayLists لعمليات البحث.

تعديل السعة