راجع هذه الأسئلة الخمسين لاختراق مقابلة برمجة Java الخاصة بك

قائمة بأسئلة Java المتداولة من مقابلات العمل البرمجية.

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

تحتوي هذه المقالة على أكثر من 50 سؤالًا لمقابلة Java تغطي جميع الموضوعات المهمة مثل أساسيات Java الأساسية ، وإطار مجموعة Java ، و Java Multithreading and Concurrency ، و Java IO ، و JDBC ، و JVM Internals ، ومشاكل الترميز ، والبرمجة الموجهة للكائنات ، إلخ.

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

الأسئلة مفيدة أيضًا لمراجعة الموضوعات المهمة مثل تعدد مؤشرات الترابط والمجموعات. لقد قمت أيضًا بمشاركة بعض الموارد المفيدة لمزيد من التعلم والتحسين مثل The Complete Java MasterClass لتنقيح وسد الفجوات في مهارات Java الخاصة بك.

فما الذي ننتظره؟ فيما يلي قائمة ببعض أسئلة Java الأكثر شيوعًا في المقابلات لكل من مطوري Java المبتدئين وذوي الخبرة.

50+ أسئلة مقابلة جافا لمدة 2 إلى 3 سنوات من المبرمجين ذوي الخبرة

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

1) كيف تحقق Java استقلالية النظام الأساسي؟ (إجابة)

تلميح: bytecode و Java Virtual Machine

2) ما هي ClassLoaderلغة جافا؟ (إجابة)

تلميح: جزء من JVM يقوم بتحميل أكواد بايت للفئات. يمكنك كتابة ما يخصك.

3) اكتب برنامج Java للتحقق مما إذا كان الرقم زوجيًا أم فرديًا؟ (إجابة)

تلميح: يمكنك استخدام عامل تشغيل أحادي ، مثل "AND" أحاديًا ، تذكر أنه حتى الرقم يحتوي على صفر في نهايته بتنسيق ثنائي والرقم الفردي به 1 في النهاية.

4) الفرق بين ArrayListو HashSetJava؟ (إجابة)

تلميح: جميع الاختلافات بين Listو Setقابلة للتطبيق هنا ، على سبيل المثال ، الطلبات ، التكرارات ، البحث العشوائي ، إلخ. راجع أساسيات Java: المجموعات بواسطة Richard Warburton لمعرفة المزيد حول ArrayList و HashSet والمجموعات الهامة الأخرى في Java.

5) ما هو القفل المزدوج في Singleton؟ (إجابة)

تلميح: تحقق مرتين مما إذا كانت المثيلات قد تمت تهيئتها أم لا ، أولاً بدون قفل وثانيًا مع قفل.

6) كيف يمكنك إنشاء Singleton الخيط الآمن في Java؟ (إجابة)

تلميح: عدة طرق ، مثل استخدام Enum أو باستخدام نمط قفل مزدوج التحقق أو استخدام فئة ثابتة متداخلة.

7) متى تستخدم المتغير المتغير في جافا؟ (إجابة)

تلميح: عندما تحتاج إلى إرشاد JVM إلى أنه يمكن تعديل متغير بواسطة سلاسل عمليات متعددة وإعطاء تلميح لـ JVM لا يقوم بتخزين قيمته مؤقتًا.

8) متى تستخدم متغير عابر في جافا؟ (إجابة)

تلميح: عندما تريد جعل متغير غير قابل للتسلسل في فئة ، والذي يقوم بتنفيذ واجهة Serializable. بمعنى آخر ، يمكنك استخدامه لمتغير لا تريد حفظ قيمته. راجع فئة Java MasterClass الكاملة للتعرف على المتغيرات العابرة في Java.

9) الفرق بين المتغير العابر والمتغير المتغير في جافا؟ (إجابة)

تلميح: مختلف تمامًا ، أحدهما يستخدم في سياق التسلسل بينما الآخر يستخدم في التزامن.

10) الفرق بين Serializable و Externalizable في Java؟ (إجابة)

تلميح: يمنحك Externalizable مزيدًا من التحكم في عملية Serialization.

11) هل يمكننا تجاوز الطريقة الخاصة في جافا؟ (إجابة)

تلميح: لا ، لأنه غير مرئي في الفئة الفرعية ، وهو مطلب أساسي لتجاوز طريقة في Java.

12) الفرق بين Hashtableو HashMapJava؟ (إجابة)

تلميح: عدة لكن الأهم هو Hashtableالذي تتم مزامنته بينما HashMapلا يكون كذلك. إنه أيضًا إرث وبطيء مقارنةً بـ HashMap.

13) الفرق بين Listو Set Java؟ (إجابة)

تلميح: Listتم طلبه ويسمح بالتكرار. Setغير مرتب ولا يسمح بالعناصر المكررة.

14) الفرق بين ArrayListو VectorJava (إجابة)

تلميح: كثير ، ولكن الأهم هو أنه ArrayListغير متزامن وسريع بينما Vectorمتزامن وبطيء. إنها أيضًا فئة قديمة مثل Hashtable.

15) الفرق بين Hashtableو ConcurrentHashMapJava؟ (إجابة)

تلميح: أكثر قابلية للتوسع. راجع أساسيات Java: المجموعات بواسطة Richard Warburton لمعرفة المزيد.

16) كيف ConcurrentHashMapتحقق قابلية التوسع؟ (إجابة)

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

17) ما الطريقتان اللتان سوف تتخطيانهما Objectلاستخدامهما كما Keyفي HashMap؟ (إجابة)

تلميح: يساوي وشفرة التجزئة

18) الفرق بين الانتظار والنوم في جافا؟ (إجابة)

تلميح: تقوم wait()الطريقة بإطلاق القفل أو الشاشة ، بينما لا يحدث ذلك أثناء النوم.

19) الفرق بين notifyو notifyAllJava؟ (إجابة)

تلميح: notifyيخطر خيطًا عشوائيًا واحدًا بانتظار هذا القفل أثناء notifyAllإبلاغ جميع مؤشرات الترابط التي تنتظر الشاشة. إذا كنت متأكدًا من أن مؤشر ترابط واحد فقط ينتظر notify، فاستخدم ، وإلا سيكون notifyAllأفضل. انظر الدورة التدريبية المصغرة لأساسيات الخيوطبواسطة Java Champion Heinz Kabutz لمعرفة المزيد حول أساسيات الخيوط.

20) لماذا تجاوزت رمز التجزئة ، جنبًا إلى جنب مع equals()جافا؟ (إجابة)

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

21) ما هو عامل الحمولة من HashMapالوسائل؟ (إجابة)

تلميح: الحد الأدنى الذي يؤدي إلى تغيير الحجم HashMapبشكل عام هو 0.75 ، مما يعني HashMapتغيير حجم نفسه إذا كان ممتلئًا بنسبة 75 بالمائة.

22) الفرق بين ArrayListو LinkedListJava؟ (إجابة)

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

23) الفرق بين CountDownLatchو CyclicBarrierJava؟ (إجابة)

تلميح: يمكنك إعادة الاستخدام CyclicBarrierبعد كسر الحاجز ولكن لا يمكنك إعادة استخدامه CountDownLatchبعد أن يصل العد إلى الصفر.

24) متى تستخدم Runnableمقابل Threadجافا؟ (إجابة)

تلميح: دائما

25) ما معنى أن يكون Enum من النوع الآمن في Java؟ (إجابة)

تلميح: هذا يعني أنه لا يمكنك تعيين مثيل من نوع Enum مختلف لمتغير Enum. على سبيل المثال ، إذا كان لديك متغير مثل DayOfWeekاليوم فلا يمكنك تعيين قيمته من DayOfMonthالتعداد.

26) كيف يعمل Autoboxing of Integer في Java؟ (إجابة)

تلميح: باستخدام valueOf()الطريقة في Java.

27) الفرق بين PATHو ClasspathJava؟ (إجابة)

تلميح: PATHيتم استخدامه بواسطة نظام التشغيل بينما Classpathيستخدمه JVM لتحديد موقع Java الثنائي ، مثل ملفات JAR أو ملفات الفئة. راجع أساسيات Java: النظام الأساسي الأساسي لمعرفة المزيد حول PATH، Classpathومتغيرات بيئة Java الأخرى.

28) الفرق بين أسلوب التحميل الزائد والتجاوز في Java؟ (إجابة)

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

29) كيف تمنع تصنيف فئة فرعية في Java؟ (إجابة)

تلميح: فقط اجعل منشئه خاصًا

30) كيف تقيد استخدام فصلك من قبل عميلك؟ (إجابة)

تلميح: اجعل المنشئ خاصًا أو قم بإلقاء استثناء من المنشئ

31) الفرق بين StringBuilderو StringBufferJava؟ (إجابة)

تلميح: StringBuilderغير متزامن أثناء StringBufferالمزامنة.

32) الفرق بين تعدد الأشكال والوراثة في جافا؟ (إجابة)

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

33) هل يمكننا تجاوز الطريقة الثابتة في جافا؟ (إجابة)

تلميح: لا ، لأن التجاوز يحل في وقت التشغيل بينما يتم حل استدعاء الطريقة الثابتة في وقت الترجمة.

34) هل يمكننا الوصول إلى الطريقة الخاصة في جافا؟ (إجابة)

تلميح: نعم ، في نفس الفصل ولكن ليس خارج الفصل

35) الفرق بين الواجهة والفئة المجردة في Java؟ (إجابة)

تلميح: من Java 8 ، الفرق غير واضح. ومع ذلك ، لا يزال بإمكان فئة Java تنفيذ واجهات متعددة ولكن يمكنها فقط توسيع فئة واحدة.

36) الفرق بين محلل DOM و SAX في Java؟ (إجابة)

تلميح: يقوم DOM بتحميل ملف XML بالكامل في الذاكرة بينما لا يقوم SAX بذلك. إنه محلل قائم على الأحداث ويمكن استخدامه لتحليل ملف كبير ، لكن DOM سريع ويجب أن يكون مفضلاً للملفات الصغيرة.

37) الفرق بين كلمة رمي و رميات في جافا؟ (إجابة)

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

38) الفرق بين التكرارات الآمنة من الفشل والسريعة من الفشل في Java؟ (إجابة)

تلميح: آمنة من الفشل لا رمي ConcurrentModificationExceptionحين fail-fastيفعل كلما الكشف عن التغيير من الخارج على جمع الكامن في حين بالتكرار أكثر من ذلك.

39) الفرق بين التكرار والتعداد في جافا؟ (إجابة)

تلميح: يمنحك التكرار أيضًا القدرة على إزالة عنصر أثناء التكرار بينما لا يسمح التعداد بذلك.

40) ما هو IdentityHashMapفي جافا؟ (إجابة)

تلميح: أ Map، والذي يستخدم ==عامل المساواة للتحقق من المساواة بدلاً من equals()الطريقة.

41) ما هو Stringالتجمع في جافا؟ (إجابة)

تلميح: مجموعة Stringحرفية. تذكر أنه تم نقله إلى كومة من مساحة بيرم جين في JDK 7.

42) هل يمكن Serializableللفئة أن تحتوي على مجال غير قابل للتسلسل في Java؟ (إجابة)

تلميح: نعم ، ولكن عليك أن تجعله إما ثابتًا أو عابرًا.

43) الفرق بين هذا وسوبر في جافا؟ (إجابة)

تلميح: يشير هذا إلى المثال الحالي بينما يشير super إلى مثيل من الفئة superclass.

44) الفرق بين Comparatorو ComparableJava؟ (إجابة)

تلميح: Comparatorيحدد الترتيب المخصص بينما Comparableيحدد الترتيب الطبيعي للكائنات ، مثل الترتيب الأبجدي لـ String. راجع فئة Java MasterClass الكاملة لمعرفة المزيد حول الفرز في Java.

45) الفرق بين java.util.Dateو java.sql.DateJava؟ (إجابة)

تلميح: يحتوي السابق على كل من التاريخ والوقت بينما يحتوي لاحقًا على جزء التاريخ فقط.

46) لماذا يتم الإعلان عن طريقة الانتظار والإخطار في Objectالفصل في Java؟ (إجابة)

تلميح: لأنها تتطلب قفلًا متاحًا فقط للكائن.

47) لماذا لا تدعم Java الموروثات المتعددة؟ (إجابة)

تلميح: إنه لا يدعم بسبب التجربة السيئة مع C ++ ، ولكن مع Java 8 ، فإنه يعمل بشكل ما - فقط الوراثة المتعددة لـ TypeJava غير مدعومة الآن.

48) الفرق بين الاستثناء المحدد وغير المحدد في Java؟ (إجابة)

تلميح: في حالة التحديد ، يجب عليك التعامل مع الاستثناء باستخدام block block ، بينما في حالة عدم التحقق ، الأمر متروك لك ؛ تجميع لن يزعجك.

49) الفرق بين الخطأ والاستثناء في جافا؟ (إجابة)

تلميح: لقد تعبت من الكتابة الرجاء التحقق من الإجابة

50) الفرق بين حالة السباق و Deadlock في Java؟ (إجابة)

تلميح: كلاهما أخطاء تحدث في تطبيق متزامن ، يحدث أحدهما بسبب جدولة مؤشر الترابط بينما يحدث الآخرون بسبب الترميز السيئ. راجع Multithreading and Parallel Computing في Java لمعرفة المزيد حول حالة الجمود وظروف السباق ومشكلات تعدد مؤشرات الترابط الأخرى.

ملاحظات ختامية

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

إذا أعجبك هذا المقال ، فيرجى مشاركته مع أصدقائك وزملائك ، ولا تنسَ متابعة javinpaul على Twitter!

مصادر إضافية

  • دليل مقابلة جافا: 200+ أسئلة وأجوبة مقابلة
  • دليل مقابلة إطار الربيع - أكثر من 200 سؤال وإجابة
  • التحضير لمقابلة عمل بواسطة John Sonmez
  • مقابلة برمجة جافا التي كشفها ماركهام
  • Cracking the Coding Interview - 189 سؤالاً وأجوبة
  • تحليل هيكل البيانات والخوارزميات لمقابلات العمل
  • 130+ أسئلة مقابلة Java في آخر 5 سنوات
ملاحظة - إذا كنت بحاجة إلى بعض الموارد المجانية لتعلم Java ، فيمكنك الاطلاع على قائمة دورات Java المجانية لبدء التحضير.

PSS - لم أقدم الإجابة على أسئلة المقابلة المشتركة في الصورة "كم عدد كائنات السلسلة التي تم إنشاؤها في الكود؟" هل يمكنك التخمين والشرح؟