+100 Java أسئلة وأجوبة المقابلة (2024)
Java برمجة أسئلة وأجوبة المقابلة للطلاب الجدد
1) ما الفرق بين الطبقة الداخلية والفئة الفرعية؟
الفئة الداخلية هي فئة متداخلة داخل فئة أخرى. تتمتع الفئة الداخلية بحقوق الوصول للفئة التي تتداخل معها ويمكنها الوصول إلى جميع المتغيرات والأساليب المحددة في الفئة الخارجية.
الفئة الفرعية هي فئة ترث من فئة أخرى تسمى الفئة الفائقة. يمكن للفئة الفرعية الوصول إلى جميع الأساليب والحقول العامة والمحمية لفئتها الفائقة.
👉 تنزيل مجاني بصيغة PDF: Java مقابلة أسئلة وأجوبة المقابلة >>
2) ما هي محددات الوصول المختلفة؟ Java الطبقات؟
In Javaمحددات الوصول هي الكلمات الأساسية المستخدمة قبل اسم الفئة الذي يحدد نطاق الوصول. أنواع محددات الوصول للفئات هي:
1) العامة: يمكن الوصول إلى الفصل والطريقة والميدان من أي مكان.
2) المحمية: الطريقة،يمكن الوصول إلى الحقل من نفس الفئة التي ينتمون إليها أو من الفئات الفرعية ومن فئة نفس الحزمة، ولكن ليس من الخارج.
3) الافتراضي: يمكن الوصول إلى الطريقة والحقل والفئة فقط من نفس الحزمة وليس من خارج الحزمة الأصلية الخاصة بها.
4) خاص: الطريقة، يمكن الوصول إلى الحقل من نفس الفئة التي ينتمون إليها.
3) ما هو الغرض من الأساليب الثابتة والمتغيرات الثابتة؟
عندما تكون هناك حاجة لمشاركة طريقة أو متغير بين كائنات متعددة من فئة ما بدلاً من إنشاء نسخ منفصلة لكل كائن، فإننا نستخدم كلمة أساسية ثابتة لإنشاء طريقة أو متغير مشترك لجميع الكائنات.
4) ما هو تغليف البيانات وما أهميته؟
التغليف هو مفهوم في البرمجة الشيئية لدمج الخصائص والأساليب في وحدة واحدة.
يساعد التغليف المبرمجين على اتباع نهج معياري لتطوير البرمجيات حيث أن كل كائن لديه مجموعة خاصة به من الأساليب والمتغيرات ويخدم وظائفه بشكل مستقل عن الكائنات الأخرى. يخدم التغليف أيضًا غرض إخفاء البيانات.
5) ما هو الفصل المفرد؟ أعط مثالاً عمليًا لاستخدامه.
يمكن أن تحتوي الفئة المفردة في Java على مثيل واحد فقط، وبالتالي تنتمي جميع أساليبها ومتغيراتها إلى مثيل واحد فقط. يعد مفهوم الفئة المفردة مفيدًا في المواقف التي تكون فيها الحاجة إلى تحديد عدد الكائنات الخاصة بالفئة.
أفضل مثال على سيناريو الاستخدام المفرد هو عندما يكون هناك حد لوجود اتصال واحد فقط بقاعدة البيانات بسبب بعض قيود برنامج التشغيل أو بسبب أي مشكلات تتعلق بالترخيص.
6) ما هي الحلقات في Java؟ ما هي ثلاثة أنواع من الحلقات؟
يتم استخدام الحلقات في البرمجة لتنفيذ عبارة أو كتلة من العبارة بشكل متكرر. هناك ثلاثة أنواع الحلقات في Java:
1) للحلقات
تُستخدم حلقات For في لغة Java لتنفيذ العبارات بشكل متكرر لعدد معين من المرات. يتم استخدام حلقات For عندما يكون عدد مرات تنفيذ العبارات معروفًا للمبرمج.
2) أثناء الحلقات
يتم استخدام حلقة while عند الحاجة إلى تنفيذ عبارات معينة بشكل متكرر حتى يتم استيفاء الشرط. في أثناء الحلقات، يتم التحقق من الحالة أولاً قبل تنفيذ العبارات.
3) افعل أثناء الحلقات
Do while Loop هو نفس حلقة while مع الاختلاف الوحيد الذي يتم التحقق من الشرط بعد تنفيذ مجموعة من البيانات. ومن ثم، في حالة تنفيذ حلقة do while، يتم تنفيذ البيانات مرة واحدة على الأقل.
7) ما هي الحلقة اللانهائية؟ كيف يتم الإعلان عن حلقة لا نهاية لها؟
تعمل الحلقة اللانهائية دون أي شرط وتعمل إلى ما لا نهاية. يمكن كسر الحلقة اللانهائية عن طريق تحديد أي منطق فاصل في نص كتل البيانات.
يتم تعريف الحلقة اللانهائية على النحو التالي:
for (;;) { // Statements to execute // Add any loop breaking logic }
8) ما الفرق بين بيان المتابعة والكسر؟
يعد Break و continue كلمتين رئيسيتين مهمتين مستخدمتين في الحلقات. عند استخدام الكلمة الأساسية "break" في حلقة ما، يتم كسر الحلقة على الفور بينما عند استخدام الكلمة الأساسية "متابعة"، يتم كسر التكرار الحالي وتستمر الحلقة مع التكرار التالي.
في المثال أدناه، يتم كسر الحلقة عندما يصل العداد إلى 4.
for (counter = 0; counter & lt; 10; counter++) system.out.println(counter); if (counter == 4) { break; } }
في المثال أدناه عندما يصل العداد إلى 4، تنتقل الحلقة إلى التكرار التالي ويتم تخطي أي عبارات بعد الكلمة الأساسية continue للتكرار الحالي.
for (counter = 0; counter < 10; counter++) system.out.println(counter); if (counter == 4) { continue; } system.out.println("This will not get printed when counter is 4"); }
9) ما هو الفرق بين المتغيرات المزدوجة والعائمة في Java?
في جافا، يأخذ الطفو 4 بايت في الذاكرة بينما Double يأخذ 8 بايت في الذاكرة. التعويم هو رقم عشري ذو نقطة عائمة ذات دقة واحدة Double هو عدد عشري ذو دقة مزدوجة.
10) ما هي الكلمة الرئيسية النهائية في Java؟ أعط مثالا.
في جافا، يتم الإعلان عن ثابت باستخدام الكلمة الأساسية Final. يمكن تعيين القيمة مرة واحدة فقط وبعد التعيين، لا يمكن تغيير قيمة الثابت.
في المثال أدناه، تم الإعلان عن ثابت بالاسم const_val وتعيين قيمة له:
النهائي الخاص int const_val=100
عندما يتم الإعلان عن طريقة ما على أنها نهائية، لا يمكن تجاوزها بواسطة الفئات الفرعية. تعد هذه الطريقة أسرع من أي طريقة أخرى، حيث يتم حلها في وقت الالتزام.
عندما يتم إعلان فئة على أنها نهائية، لا يمكن تصنيفها كفئة فرعية. مثال على ذلك: String وInteger وفئات الغلاف الأخرى.
11) ما هو المؤثر الثلاثي؟ أعط مثالاً.
يستخدم عامل ثلاثي، ويسمى أيضًا عامل شرطي، لتحديد القيمة التي سيتم تعيينها لمتغير بناءً على تقييم القيمة المنطقية. يتم الإشارة إليه بـ ؟
في المثال أدناه، إذا كانت المرتبة 1، فسيتم تعيين قيمة الحالة "تم" وإلا "في انتظار المراجعة".
public class conditionTest { public static void main(String args[]) { String status; int rank = 3; status = (rank == 1) ? "Done" : "Pending"; System.out.println(status); } }
12) كيف يمكنك توليد أرقام عشوائية في Java?
- باستخدام Math.random() يمكنك إنشاء أرقام عشوائية في نطاق أكبر من أو يساوي 0.1 وأقل من 1.0
- استخدام فئة عشوائية في الحزمة java.util
13) ما هي حالة التبديل الافتراضية؟ اعط مثال.
في باقة بيان التبديل، يتم تنفيذ الحالة الافتراضية عندما لا يتطابق أي شرط تبديل آخر. الحالة الافتراضية هي حالة اختيارية. ولا يمكن الإعلان عنها إلا بعد ترميز كافة حالات التبديل الأخرى.
في المثال أدناه، عندما لا تكون النتيجة 1 أو 2، يتم استخدام الحالة الافتراضية.
public class SwitchExample { public static void main(String args[]) { int score = 4; // Declare the score variable inside the main method switch (score) { case 1: System.out.println("Score is 1"); break; case 2: System.out.println("Score is 2"); break; default: System.out.println("Default Case"); } } }
14) ما هي الطبقة الأساسية في Java ومن الذي تستمد جميع الطبقات؟
java.lang.object
15) يمكن استخدام الطريقة الرئيسية (). Java يمكن إرجاع أي بيانات؟
في جافا، لا يمكن للطريقة الرئيسية () إرجاع أي بيانات، وبالتالي، يتم الإعلان عنها دائمًا بنوع إرجاع فارغ.
16) ما هي Java الحزم؟ ما أهمية الحزم؟
In Java، الحزمة عبارة عن مجموعة من الفئات والواجهات المجمعة معًا لأنها مرتبطة ببعضها البعض. يساعد استخدام الحزم المطورين على توحيد التعليمات البرمجية وتجميع التعليمات البرمجية لإعادة استخدامها بشكل صحيح. بمجرد تعبئة الكود في الحزم، يمكن استيراده في فئات أخرى واستخدامه.
17) هل يمكننا أن نعلن عن فئة مجردة دون وجود أي طريقة مجردة؟
نعم، يمكننا إنشاء فئة مجردة باستخدام الكلمة الأساسية abstract قبل اسم الفئة حتى لو لم يكن بها أي طريقة مجردة. ومع ذلك، إذا كانت الفئة تحتوي على طريقة مجردة واحدة، فيجب إعلانها على أنها مجردة وإلا فسوف تظهر رسالة خطأ.
18) ما الفرق بين فئة مجردة والواجهة في Java?
يتمثل الاختلاف الأساسي بين الفئة المجردة والواجهة في أن الواجهة يمكن أن تمتلك فقط إعلانًا عن الأساليب الثابتة العامة بدون تنفيذ ملموس بينما يمكن أن تحتوي الفئة المجردة على أعضاء لديهم أي محددات وصول (عامة وخاصة وما إلى ذلك) مع أو بدون تنفيذ ملموس.
هناك اختلاف رئيسي آخر في استخدام الفئات والواجهات المجردة وهو أن الفئة التي تنفذ واجهة يجب أن تنفذ جميع أساليب الواجهة بينما لا تتطلب الفئة التي ترث من فئة مجردة تنفيذ جميع أساليب فئتها الفائقة.
يمكن للفئة تنفيذ واجهات متعددة ولكن يمكنها توسيع فئة مجردة واحدة فقط.
19) ما هي الآثار المترتبة على أداء الواجهات على الفئات المجردة؟
تكون الواجهات أبطأ في الأداء مقارنة بالفئات المجردة حيث أن هناك حاجة إلى توجيهات إضافية للواجهات. هناك عامل رئيسي آخر يجب على المطورين أخذه في الاعتبار وهو أن أي فئة يمكنها توسيع فئة مجردة واحدة فقط بينما يمكن للفئة تنفيذ العديد من الواجهات.
يضع استخدام الواجهات أيضًا عبئًا إضافيًا على المطورين في أي وقت يتم فيه تنفيذ الواجهة في الفصل الدراسي؛ يضطر المطور إلى تنفيذ كل طريقة من طرق الواجهة.
20) هل يؤدي استيراد حزمة إلى استيراد حزمها الفرعية أيضًا Java?
في Java، عند استيراد حزمة، لا يتم استيراد حزمها الفرعية ويحتاج المطور إلى استيرادها بشكل منفصل إذا لزم الأمر.
على سبيل المثال، إذا قام أحد المطورين باستيراد حزمة University.*، فسيتم تحميل كافة الفئات الموجودة في الحزمة المسماة الجامعة ولكن لن يتم تحميل أي فئات من الحزمة الفرعية. لتحميل الفئات من حزمتها الفرعية (مثلاً القسم)، يجب على المطور استيرادها بشكل صريح كما يلي:
استيراد الجامعة.القسم.*
21) هل يمكننا أن نعلن أن الطريقة الرئيسية لفصلنا خاصة؟
في جافا، يجب أن تكون الطريقة الرئيسية عامة ثابتة حتى تتمكن من تشغيل أي تطبيق بشكل صحيح. إذا تم الإعلان عن الطريقة الرئيسية على أنها خاصة، فلن يحصل المطور على أي خطأ في الترجمة، ومع ذلك، لن يتم تنفيذها وسيعطي خطأ في وقت التشغيل.
22) كيف يمكننا تمرير الوسيطة إلى دالة حسب المرجع بدلاً من التمرير حسب القيمة؟
في جافا، يمكننا تمرير الوسيطة إلى دالة فقط من خلال القيمة وليس من خلال المرجع.
23) كيف يتم إجراء تسلسل للكائن في جافا؟
في جافا، لتحويل كائن إلى دفق بايت عن طريق التسلسل، يتم تنفيذ واجهة بالاسم Serializable بواسطة الفئة. يتم إجراء تسلسل لجميع كائنات الفئة التي تطبق واجهة قابلة للتسلسل ويتم حفظ حالتها في دفق البايت.
24) متى يجب أن نستخدم التسلسل؟
يتم استخدام التسلسل عندما يلزم نقل البيانات عبر الشبكة. باستخدام التسلسل، يتم حفظ حالة الكائن وتحويلها إلى دفق بايت. يتم نقل دفق البايت عبر الشبكة ويتم إعادة إنشاء الكائن في الوجهة.
25) هل من الضروري أن يتبع كتلة المحاولة كتلة الالتقاط Java لمعالجة الاستثناء؟
يجب أن يتبع كتلة المحاولة كتلة Catch أو كتلة Last أو كليهما. أي استثناء يتم طرحه من كتلة المحاولة يجب أن يتم اكتشافه في كتلة الالتقاط أو أي مهام محددة يجب تنفيذها قبل وضع إلغاء التعليمات البرمجية في الكتلة الأخيرة.
Java أسئلة وأجوبة المقابلة لذوي الخبرة
26) هل هناك أي طريقة لتخطي كتلة الاستثناء أخيرًا حتى في حالة حدوث بعض الاستثناءات في كتلة الاستثناء؟
إذا تم رفع استثناء في كتلة Try، يتم تمرير عنصر التحكم إلى كتلة catch إذا كان موجودًا وإلا إلى كتلة finally. يتم تنفيذ كتلة Finally دائمًا عند حدوث استثناء والطريقة الوحيدة لتجنب تنفيذ أي عبارات في كتلة Finally هي إلغاء التعليمات البرمجية قسرًا عن طريق كتابة سطر التعليمات البرمجية التالي في نهاية كتلة try:
System.exit(0);
27) متى يتم استدعاء مُنشئ الفصل؟
يتم استدعاء مُنشئ الفصل في كل مرة يتم فيها إنشاء كائن باستخدام كلمة رئيسية جديدة.
على سبيل المثال، في الفئة التالية يتم إنشاء كائنين باستخدام الكلمة الأساسية الجديدة، وبالتالي يتم استدعاء المنشئ مرتين.
public class const_example { const_example() { system.out.println("Inside constructor"); } public static void main(String args[]) { const_example c1 = new const_example(); const_example c2 = new const_example(); } }
28) هل يمكن أن يحتوي الفصل على مُنشئين متعددين؟
نعم، يمكن أن يحتوي الفصل على مُنشئات متعددة بمعلمات مختلفة. يعتمد المُنشئ الذي سيتم استخدامه لإنشاء الكائنات على الوسائط التي تم تمريرها أثناء إنشاء الكائنات.
29) هل يمكننا تجاوز الأساليب الثابتة للفئة؟
لا يمكننا تجاوز الأساليب الثابتة. تنتمي الأساليب الثابتة إلى فئة وليس إلى كائنات فردية ويتم حلها في وقت التجميع (وليس في وقت التشغيل). حتى إذا حاولنا تجاوز الطريقة الثابتة، فلن نحصل على خطأ في التجميع، ولا تأثير التجاوز عند تشغيل شفرة.
30) في المثال أدناه، ما هي النتيجة؟
public class superclass { public void displayResult() { system.out.println("Printing from superclass"); } } public class subclass extends superclass { public void displayResult() { system.out.println("Displaying from subClass"); super.displayResult(); } public static void main(String args[]) { subclass obj = new subclass(); obj.displayResult(); } }
الجواب: الإخراج سيكون:
عرض من فئة فرعية
الطباعة من الطبقة الفائقة
31) هل السلسلة هي نوع بيانات في جافا؟
السلسلة ليست نوع بيانات بدائي في جافا. عندما يتم إنشاء سلسلة في جافا، فهي في الواقع كائن Javaفئة .Lang.String التي يتم إنشاؤها. بعد إنشاء كائن السلسلة هذا، يمكن استخدام جميع الأساليب المضمنة لفئة السلسلة على كائن السلسلة.
32) في المثال أدناه، كم عدد كائنات السلسلة التي تم إنشاؤها؟
String s1="I am Java Expert"; String s2="I am C Expert"; String s3="I am Java Expert";
في المثال أعلاه، كائنين من Javaيتم إنشاء فئة .Lang.String. s1 وs3 مرجعان لنفس الكائن.
33) لماذا السلاسل في Java تسمى غير قابلة للتغيير؟
في جافا، تسمى كائنات السلسلة غير قابلة للتغيير لأنه بمجرد تعيين قيمة لسلسلة، لا يمكن تغييرها وإذا تم تغييرها، يتم إنشاء كائن جديد.
في المثال أدناه، يشير المرجع str إلى كائن سلسلة له القيمة "القيمة الأولى".
String str="Value One";
عندما يتم تعيين قيمة جديدة لها، يتم إنشاء كائن سلسلة جديد ويتم نقل المرجع إلى الكائن الجديد.
str="New Value";
34) ما الفرق بين المصفوفة والمتجه؟
تقوم المصفوفة بتجميع البيانات من نفس النوع البدائي وتكون ثابتة بطبيعتها بينما تكون المتجهات ديناميكية بطبيعتها ويمكنها الاحتفاظ ببيانات من أنواع بيانات مختلفة.
35) ما هو متعدد الخيوط؟
الترابط المتعدد هو مفهوم برمجي لتشغيل مهام متعددة بطريقة متزامنة ضمن برنامج واحد. تشترك الخيوط في نفس مكدس العملية وتعمل بالتوازي. يساعد في تحسين أداء أي برنامج.
36) لماذا يتم استخدام واجهة Runnable في Java?
يتم استخدام واجهة Runnable في Java لتنفيذ تطبيقات متعددة الخيوط. Javaيتم تنفيذ واجهة .Lang.Runnable بواسطة فئة لدعم الخيوط المتعددة.
37) ما هي طريقتان لتنفيذ مؤشرات الترابط المتعددة في Java?
يمكن تطوير تطبيقات متعددة الخيوط في Java باستخدام أي من المنهجيتين التاليتين:
1) باستخدام Javaواجهة لانج قابلة للتشغيل. تطبق الفصول هذه الواجهة لتمكين تعدد العمليات. توجد طريقة Run() في هذه الواجهة والتي تم تنفيذها.
2) عن طريق كتابة فئة تمتد Java.Lang.Thread الطبقة.
38) عندما تكون هناك حاجة إلى الكثير من التغييرات في البيانات، ما هو التغيير الذي يجب تفضيله؟ سلسلة أو سلسلةBuffer?
منذ السلسلةBuffers ديناميكية بطبيعتها ويمكننا تغيير قيم السلسلةBuffer بخلاف الكائنات String غير القابلة للتغيير، فمن الأفضل دائمًا استخدام StringBuffer عندما يتم تغيير البيانات أكثر من اللازم. إذا استخدمنا String في مثل هذه الحالة، فسيتم إنشاء كائن سلسلة جديد مقابل كل تغيير في البيانات، والذي سيكون بمثابة حمل إضافي.
39) ما هو الغرض من استخدام Break في كل حالة من حالات بيان التبديل؟
يتم استخدام الفاصل بعد كل حالة (ما عدا الحالة الأخيرة) في المحول بحيث ينقطع الرمز بعد الحالة الصحيحة ولا يتدفق في الحالات الجارية أيضًا.
إذا لم يتم استخدام الفاصل بعد كل حالة، فسيتم أيضًا تنفيذ جميع الحالات بعد الحالة الصحيحة مما يؤدي إلى نتائج خاطئة.
40) كيف يتم جمع القمامة Java?
في جافا، عندما لا تتم الإشارة إلى كائن بعد الآن، جمع القمامة يتم تنفيذ عملية التجميع التلقائي ويتم تدمير الكائن تلقائيًا. بالنسبة لعملية التجميع التلقائي، تستدعي Java إما طريقة System.gc() أو طريقة Runtime.gc().
41) كيف يمكننا تنفيذ أي كود حتى قبل الطريقة الرئيسية؟
إذا أردنا تنفيذ أي عبارات حتى قبل إنشاء الكائنات في وقت تحميل الفصل، فيمكننا استخدام كتلة ثابتة من التعليمات البرمجية في الفصل. سيتم تنفيذ أي عبارات داخل هذه الكتلة الثابتة من التعليمات البرمجية مرة واحدة في وقت تحميل الفصل حتى قبل إنشاء الكائنات في الطريقة الرئيسية.
42) هل يمكن للفئة أن تكون فئة فائقة وفئة فرعية في نفس الوقت؟ اعط مثال.
إذا تم استخدام تسلسل هرمي للوراثة، فيمكن أن تكون الفئة فئة فائقة لفئة أخرى وفئة فرعية لفئة أخرى في نفس الوقت.
في المثال أدناه، تعتبر فئة القارة فئة فرعية من الفئة العالمية وهي فئة فائقة من فئة الدولة.
public class world { .......... } public class continenet extends world { ............ } public class country extends continent { ...................... }
43) كيف يتم إنشاء كائنات الفصل إذا لم يتم تعريف أي مُنشئ في الفصل؟
حتى لو لم يتم تعريف مُنشئ صريح في فئة جافا، يتم إنشاء الكائنات بنجاح حيث يتم استخدام المُنشئ الافتراضي ضمنيًا لإنشاء الكائن. لا يحتوي هذا المنشئ على أي معلمات.
44) في تعدد العمليات، كيف يمكننا التأكد من عدم استخدام مورد بواسطة عمليات متعددة في نفس الوقت؟
في تعدد الخيوط، يمكن التحكم في الوصول إلى الموارد المشتركة بين خيوط متعددة باستخدام مفهوم المزامنة. باستخدام كلمة رئيسية متزامنة، يمكننا التأكد من أن مؤشر ترابط واحد فقط يمكنه استخدام المورد المشترك في المرة الواحدة ويمكن للآخرين التحكم في المورد فقط عندما يصبح خاليًا من الآخر الذي يستخدمه.
45) هل يمكننا استدعاء منشئ فئة أكثر من مرة لكائن ما؟
يتم استدعاء المُنشئ تلقائيًا عندما نقوم بإنشاء كائن باستخدام كلمة رئيسية جديدة. يتم استدعاؤه مرة واحدة فقط للكائن في وقت إنشاء الكائن، وبالتالي لا يمكننا استدعاء المنشئ مرة أخرى للكائن بعد إنشائه.
46) هناك فئتان تسمى classA وclassB. كلا الفئتين في نفس الحزمة. هل يمكن الوصول إلى عضو خاص في الفئة A بواسطة كائن من الفئة B؟
لا يمكن الوصول إلى الأعضاء الخاصين في الفصل خارج نطاق هذا الفصل ولا يمكن لأي فئة أخرى حتى في نفس الحزمة الوصول إليهم.
47) هل يمكن أن يكون لدينا طريقتين في الفصل بنفس الاسم؟
يمكننا تحديد طريقتين في فئة بنفس الاسم ولكن مع عدد/نوع مختلف من المعلمات. تعتمد الطريقة التي سيتم استدعاؤها على المعلمات التي تم تمريرها.
على سبيل المثال، في الفصل أدناه لدينا طريقتان للطباعة بنفس الاسم ولكن بمعلمات مختلفة. اعتمادًا على المعلمات، سيتم استدعاء المعلم المناسب:
public class methodExample { public void print() { system.out.println("Print method without parameters."); } public void print(String name) { system.out.println("Print method with parameter"); } public static void main(String args[]) { methodExample obj1 = new methodExample(); obj1.print(); obj1.print("xx"); } }
48) كيف يمكننا عمل نسخة من كائن جافا؟
يمكننا استخدام مفهوم الاستنساخ لإنشاء نسخة من كائن ما. باستخدام الاستنساخ، نقوم بإنشاء نسخ بالحالة الفعلية للكائن.
Clone() هي طريقة للواجهة القابلة للاستنساخ، وبالتالي يجب تنفيذ الواجهة القابلة للاستنساخ لعمل نسخ للكائنات.
49) ما فائدة استخدام الميراث؟
الميزة الرئيسية لاستخدام الميراث هي إمكانية إعادة استخدام الكود حيث أن الميراث يمكّن الفئات الفرعية من إعادة استخدام كود فئتها الفائقة. يعد تعدد الأشكال (قابلية التوسعة) فائدة عظيمة أخرى تسمح بتقديم وظائف جديدة دون التأثير على الفئات المشتقة الموجودة.
50) ما هو محدد الوصول الافتراضي للمتغيرات وطرق الفئة؟
محدد الوصول الافتراضي للمتغيرات والأسلوب هو حزمة محمية، أي أن المتغيرات والفئة متاحة لأي فئة أخرى ولكن في نفس الحزمة، وليس خارج الحزمة.
51) أعط مثالاً على استخدام المؤشرات في Java فئة.
لا توجد مؤشرات في Java. لذلك لا يمكننا استخدام مفهوم المؤشرات في Java.
52) كيف يمكننا تقييد وراثة فئة ما بحيث لا يرث منها أي فئة؟
إذا أردنا عدم توسيع الفصل الدراسي لأي فصل آخر، فيمكننا استخدام الكلمة الأساسية نهائي مع اسم الفئة.
في المثال التالي، فئة Stone هي فئة نهائية ولا يمكن تمديدها
public Final Class Stone { // Class methods and Variables }
53) ما هو نطاق الوصول لمحدد الوصول المحمي؟
عندما يتم الإعلان عن أسلوب أو متغير باستخدام محدد الوصول المحمي، فإنه يصبح قابلاً للوصول في نفس الفئة، وأي فئة أخرى من نفس الحزمة بالإضافة إلى فئة فرعية.
تغيير | مبوبة | فئة الإشتراك | فئة فرعية | العالم |
---|---|---|---|---|
جمهور | Y | Y | Y | Y |
محمي | Y | Y | Y | N |
لا يوجد معدل | Y | Y | N | N |
خاص | Y | N | N | N |
54) ما الفرق بين المكدس وقائمة الانتظار؟
يتم استخدام كل من Stack وQueue كعنصر نائب لمجموعة من البيانات. الفرق الأساسي بين المكدس وقائمة الانتظار هو أن المكدس يعتمد على مبدأ Last in First out (LIFO) بينما تعتمد قائمة الانتظار على مبدأ FIFO (First In First Out).
55) في جافا، كيف يمكننا عدم السماح بتسلسل المتغيرات؟
إذا أردنا عدم إجراء تسلسل لمتغيرات معينة لفئة ما، فيمكننا استخدام الكلمة الأساسية عابر أثناء إعلانهم. على سبيل المثال، المتغير trans_var أدناه هو متغير عابر ولا يمكن إجراء تسلسل له:
public class transientExample { private transient trans_var; // rest of the code }
56) كيف يمكننا استخدام أنواع البيانات البدائية ككائنات؟
يمكن التعامل مع أنواع البيانات البدائية مثل int ككائنات عن طريق استخدام فئات الغلاف الخاصة بها. على سبيل المثال، عدد صحيح هو فئة مجمعة لنوع البيانات البدائية int. يمكننا تطبيق أساليب مختلفة على فئة المجمع، تماما مثل أي كائن آخر.
57) ما هي أنواع الاستثناءات التي يتم اكتشافها في وقت الترجمة؟
يمكن اكتشاف الاستثناءات المحددة في وقت تجميع البرنامج. يجب معالجة الاستثناءات المحددة باستخدام كتلة محاولة الالتقاط في الكود لتجميع الكود بنجاح.
58) وصف الحالات المختلفة للموضوع.
خيط في Java يمكن أن يكون في أي من الحالات التالية:
- جاهز: عندما يتم إنشاء سلسلة رسائل، تكون في حالة جاهزية.
- قيد التشغيل: الخيط الذي يتم تنفيذه حاليًا في حالة التشغيل.
- الانتظار: هناك مؤشر ترابط ينتظر مؤشر ترابط آخر لتحرير موارد معينة في حالة انتظار.
- ميت: الخيط الذي مات بعد التنفيذ أصبح في حالة ميتة.
59) هل يمكننا استخدام منشئ افتراضي لفئة حتى لو تم تعريف منشئ صريح؟
Java يوفر مُنشئًا افتراضيًا بدون مُنشئ وسيطة إذا لم يتم تعريف مُنشئ صريح في a Java فصل. ولكن إذا تم تعريف مُنشئ صريح، فلا يمكن استدعاء المُنشئ الافتراضي ويمكن للمطور استخدام تلك المُنشئات التي تم تعريفها في الفصل فقط.
60) هل يمكننا تجاوز طريقة باستخدام نفس اسم الطريقة والوسائط ولكن أنواع الإرجاع مختلفة؟
الشرط الأساسي لتجاوز الطريقة هو أن اسم الطريقة والوسائط وكذلك نوع الإرجاع يجب أن يكون متطابقًا تمامًا مع الطريقة التي يتم تجاوزها. وبالتالي فإن استخدام نوع إرجاع مختلف لا يتجاوز الطريقة.
61) ما هو الناتج من القطعة التالية من الكود؟
public class operatorExample { public static void main(String args[]) { int x = 4; system.out.println(x++); } }
في هذه الحالة، يتم استخدام عامل postfix ++ الذي يقوم بإرجاع القيمة أولاً ثم زيادتها. وبالتالي، سيكون الناتج 4.
61) يقول شخص أنه قام بتجميع فئة جافا بنجاح دون أن يكون لديه طريقة رئيسية فيها؟ هل هو ممكن؟
الطريقة الرئيسية هي نقطة دخول Java فئة وهو مطلوب لتنفيذ البرنامج ولكن؛ يتم تجميع الفصل بنجاح حتى لو لم يكن لديه طريقة رئيسية. لا يمكن تشغيله بالرغم من ذلك.
62) هل يمكننا استدعاء طريقة غير ثابتة من داخل طريقة ثابتة؟
الأساليب غير الثابتة مملوكة لكائنات من فئة ولها نطاق على مستوى الكائن، ومن أجل استدعاء الأساليب غير الثابتة من كتلة ثابتة (مثل الطريقة الرئيسية الثابتة)، يجب إنشاء كائن من الفئة أولاً. ثم باستخدام مرجع الكائن، يمكن استدعاء هذه الأساليب.
63) ما هما متغيرا البيئة اللذان يجب ضبطهما لتشغيل أي منهما Java البرامج؟
Java لا يمكن تنفيذ البرامج في جهاز إلا مرة واحدة بعد ضبط متغيرين بيئيين بشكل صحيح:
- متغير PATH
- متغير CLASSPATH
64) هل يمكن استخدام المتغيرات في Java دون التهيئة؟
In Java، إذا تم استخدام متغير في التعليمات البرمجية دون تهيئة مسبقة بقيمة صالحة، فلن يتم تجميع البرنامج ويعطي خطأ لأنه لم يتم تعيين قيمة افتراضية للمتغيرات في Java.
65) هل يمكن فصل في Java تكون موروثة من أكثر من فئة واحدة؟
In Java، يمكن اشتقاق فئة من فئة واحدة فقط وليس من فئات متعددة. الميراث المتعددة غير مدعومة من قبل Java.
66) هل يمكن للمنشئ أن يكون له اسم مختلف عن اسم الفئة فيه Java?
البناء في Java يجب أن يكون له نفس اسم اسم الفئة، وإذا كان الاسم مختلفًا، فإنه لا يعمل كمنشئ ويعتقد المترجم أنه طريقة عادية.
67) ماذا سيكون ناتج الجولة (3.7) والسقف (3.7)؟
تُرجع الجولة (3.7) 4 وترجع Ceil (3.7) 4.
68) هل يمكننا استخدام غوتو في Java للذهاب إلى خط معين؟
In Javaلا توجد كلمة رئيسية goto ولا يدعم Java هذه الميزة للانتقال إلى سطر مُسمى معين.
69) هل يمكن بدء الخيط الميت مرة أخرى؟
في جافا، لا يمكن بدء سلسلة محادثات في حالة ميتة مرة أخرى. لا توجد طريقة لإعادة تشغيل مؤشر ترابط ميت.
70) هل إعلان الفئة التالي صحيح؟
public abstract final class testClass { // Class methods and variables }
الإجابة: إعلان الفئة أعلاه غير صحيح لأنه لا يمكن الإعلان عن فئة مجردة على أنها نهائية.
71) هل JDK مطلوب على كل جهاز لتشغيل ملف Java البرنامج؟
JDK عبارة عن مجموعة أدوات تطوير Java وهو مطلوب للتطوير فقط ولتشغيل ملف Java البرنامج على الجهاز، JDK غير مطلوب. مطلوب JRE فقط.
72) ما الفرق بين المقارنة التي تتم بطريقة يساوي وعامل ==؟
In Javaتُستخدم طريقة equals() لمقارنة محتويات كائنين من السلسلة وترجع قيمة true إذا كان الكائنان لهما نفس القيمة بينما يقارن عامل == مراجع كائنين من السلسلة.
في المثال التالي، تعيد equals() القيمة true لأن كائني السلسلة لهما نفس القيم. ومع ذلك، تعيد عامل == القيمة false لأن كلا كائني السلسلة يشيران إلى كائنين مختلفين:
public class equalsTest { public static void main(String args[]) { String str1 = new String("Hello World"); String str2 = new String("Hello World"); if (str1.equals(str2)) { // this condition is true System.out.println("str1 and str2 are equal in terms of values"); } if (str1 == str2) { //This condition is true System.out.println("Both strings are referencing same object"); } else { // This condition is NOT true System.out.println("Both strings are referencing different objects"); } } }
73) هل من الممكن تحديد طريقة في Java class ولكن هل يتم تنفيذه في كود لغة أخرى مثل C؟
نعم، يمكننا القيام بذلك باستخدام الأساليب الأصلية. في حالة التطوير القائم على الطريقة الأصلية، فإننا نحدد الأساليب الثابتة العامة في منطقتنا Java class دون تنفيذه ثم يتم التنفيذ بلغة أخرى مثل C بشكل منفصل.
74) كيف يتم تعريف المدمرات في Java?
In Java، لا توجد أدوات تدمير محددة في الفصل حيث ليست هناك حاجة للقيام بذلك. Java لديها آلية جمع البيانات المهملة الخاصة بها والتي تقوم بالمهمة تلقائيًا عن طريق تدمير الكائنات عندما لا يتم الرجوع إليها.
Java أسئلة وأجوبة المقابلة لأكثر من 5 سنوات من الخبرة
75) هل يمكن للمتغير أن يكون محليا وثابتا في نفس الوقت؟
لا يمكن لأي متغير أن يكون ثابتًا ومحليًا في نفس الوقت. تحديد متغير محلي على أنه ثابت يعطي خطأ في الترجمة.
76) هل يمكن أن يكون لدينا طرق ثابتة في الواجهة؟
لا يمكن تجاوز الأساليب الثابتة في أي فئة بينما تكون أي أساليب في الواجهة مجردة بشكل افتراضي ومن المفترض أن يتم تنفيذها في الفئات التي تقوم بتنفيذ الواجهة. لذلك ليس من المنطقي وجود طرق ثابتة في الواجهة Java.
77) في الفصل الذي ينفذ واجهة، هل يمكننا تغيير قيمة أي متغير محدد في الواجهة؟
لا، لا يمكننا تغيير قيمة أي متغير لواجهة في فئة التنفيذ حيث أن جميع المتغيرات المحددة في الواجهة تكون بشكل افتراضي عامة وثابتة ونهائية والمتغيرات النهائية تشبه الثوابت التي لا يمكن تغييرها لاحقًا.
78) هل يصح القول أنه بسبب ميزة جمع القمامة في Javaهل برنامج جافا لا يخرج من الذاكرة أبدًا؟
على الرغم من توفير خدمة جمع البيانات المهملة تلقائيًا بواسطة Java، فإنه لا يضمن أن أ Java لن يخرج البرنامج من الذاكرة حيث أن هناك احتمالية أن يتم إنشاؤه Java يتم تنفيذ الكائنات بوتيرة أسرع مقارنةً بتجميع البيانات المهملة مما يؤدي إلى ملء كافة موارد الذاكرة المتوفرة.
لذا فإن جمع البيانات المهملة يساعد في تقليل فرص نفاد ذاكرة البرنامج ولكنه لا يضمن ذلك.
79) هل يمكن أن يكون لدينا أي نوع إرجاع آخر غير الفراغ للطريقة الرئيسية؟
لا، Java يمكن أن تحتوي طريقة الفئة الرئيسية على نوع إرجاع فارغ فقط حتى يتم تنفيذ البرنامج بنجاح.
ومع ذلك، إذا كان لا بد من إرجاع قيمة إلى عند الانتهاء من الطريقة الرئيسية، فيمكنك استخدام System.exit(int condition)
80) أريد إعادة الوصول إلى الكائن واستخدامه بمجرد جمع القمامة فيه. كيف يمكن ذلك؟
بمجرد تدمير أحد الكائنات بواسطة جامع القمامة، فإنه لم يعد موجودًا على الكومة ولا يمكن الوصول إليه مرة أخرى. ولا توجد طريقة للإشارة إليه مرة أخرى.
81 في Java برمجة الخيط، ما هي الطريقة التي يجب تنفيذها لجميع سلاسل الرسائل؟
Run () هي طريقة للواجهة القابلة للتشغيل والتي يجب تنفيذها بواسطة جميع سلاسل العمليات.
82) أريد التحكم في اتصالات قاعدة البيانات في برنامجي وأريد أن يكون مؤشر ترابط واحد فقط قادرًا على إجراء اتصال بقاعدة البيانات في المرة الواحدة. كيف يمكنني تنفيذ هذا المنطق؟
الإجابة: يمكن تنفيذ ذلك باستخدام مفهوم المزامنة. يمكن وضع الكود المرتبط بقاعدة البيانات في طريقة تتوافق مع تزامن الكلمة الأساسية بحيث يمكن لموضوع واحد فقط الوصول إليها في المرة الواحدة.
83) كيف يمكن للمبرمج طرح الاستثناء يدويًا؟
من أجل طرح استثناء في كتلة من التعليمات البرمجية يدويًا، رمي يتم استخدام الكلمة الرئيسية. ثم يتم اكتشاف هذا الاستثناء ومعالجته في كتلة الالتقاط.
public void topMethod() { try { excMethod(); } catch (ManualException e) {} } public void excMethod { String name = null; if (name == null) { throw (new ManualException("Exception thrown manually "); } }
84) أريد أن يتم تطوير صفي بطريقة لا تستطيع أي فئة أخرى (حتى الفئة المشتقة) إنشاء كائناتها. كيف يمكنني أن أفعل ذلك؟
إذا أعلنا أن منشئ فئة ما خاص، فلن يكون من الممكن الوصول إليه من قبل أي فئة أخرى، وبالتالي، لن تتمكن أي فئة أخرى من إنشاء مثيل لها وسيقتصر تكوين كائنها على نفسها فقط.
85) كيف يتم تخزين الكائنات فيها Java?
في لغة جافا، يحصل كل كائن عند إنشائه على مساحة ذاكرة من كومة. وعندما يتم تدمير كائن بواسطة جامع القمامة، يتم إعادة تخصيص المساحة المخصصة له من الكومة إلى الكومة وتصبح متاحة لأي كائنات جديدة.
86) كيف يمكننا العثور على الحجم الفعلي لكائن في الكومة؟
في جافا، لا توجد طريقة لمعرفة الحجم الدقيق للكائن الموجود في الكومة.
87) أي من الفئات التالية سيكون لها مساحة ذاكرة أكبر؟
الفئة أ: ثلاث طرق، أربعة متغيرات، لا يوجد كائن
الفئة ب: خمس طرق، ثلاثة متغيرات، لا يوجد كائن
لا يتم تخصيص الذاكرة قبل إنشاء الكائنات. نظرًا لعدم وجود كائنات تم إنشاؤها لكلا الفئتين، لذلك لا يتم تخصيص ذاكرة في الكومة لأي فئة.
88) ماذا يحدث إذا لم تتم معالجة الاستثناء في البرنامج؟
إذا لم يتم التعامل مع استثناء في برنامج باستخدام كتل try-catch، فسيتم إلغاء البرنامج ولن يتم تنفيذ أي بيان بعد البيان الذي تسبب في إلقاء الاستثناء.
89) لدي منشئين متعددين محددين في الفصل الدراسي. هل من الممكن استدعاء منشئ من جسم منشئ آخر؟
إذا كان الفصل يحتوي على مُنشئات متعددة، فمن الممكن استدعاء مُنشئ واحد من نص مُنشئ آخر باستخدام هذا().
90) ما المقصود بالطبقة المجهولة؟
الفئة المجهولة هي فئة محددة بدون أي اسم في سطر واحد من التعليمات البرمجية باستخدام كلمة أساسية جديدة.
على سبيل المثال، في الكود أدناه قمنا بتعريف فئة مجهولة في سطر واحد من الكود:
public java.util.Enumeration testMethod() { return new java.util.Enumeration() { @Override public boolean hasMoreElements() { // TODO Auto-generated method stub return false; } @Override public Object nextElement() { // TODO Auto-generated method stub return null; } }
91) هل هناك طريقة لزيادة حجم المصفوفة بعد إعلانها؟
المصفوفات ثابتة وبمجرد تحديد حجمها، لا يمكننا تغييرها. إذا أردنا استخدام مثل هذه المجموعات حيث قد نطلب تغيير الحجم (عدد العناصر)، فيجب أن نفضل المتجه على المصفوفة.
92) إذا كان التطبيق يحتوي على فئات متعددة، فهل من المقبول أن يكون لديك طريقة رئيسية في أكثر من فئة واحدة؟
إذا كانت هناك طريقة رئيسية في أكثر من فئة في تطبيق جافا، فلن يسبب ذلك أي مشكلة لأن نقطة الدخول لأي تطبيق ستكون فئة محددة وسيبدأ الكود من الطريقة الرئيسية لتلك الفئة المعينة فقط.
93) أريد الاحتفاظ ببيانات الكائنات لاستخدامها لاحقًا. ما هي أفضل طريقة للقيام بذلك؟
أفضل طريقة للاحتفاظ بالبيانات للاستخدام المستقبلي هي استخدام مفهوم التسلسل.
94) ما هي الطبقة المحلية في Java?
In Javaإذا قمنا بتعريف فئة جديدة داخل كتلة معينة، فإنها تسمى فئة محلية. مثل هذه الفئة لها نطاق محلي ولا يمكن استخدامها خارج الكتلة التي تم تعريفها فيها.
95) السلسلة والسلسلةBuffer كلاهما يمثل كائنات السلسلة. هل يمكننا مقارنة String و StringBuffer in Java?
على الرغم من سلسلة وسلسلةBuffer كلاهما يمثل كائنات سلسلة، ولا يمكننا مقارنتهما ببعضهما البعض وإذا حاولنا مقارنتهما، نحصل على خطأ.
96) ما هي واجهة برمجة التطبيقات التي يتم توفيرها بواسطة Java للعمليات على مجموعة من الكائنات؟
Java يوفر Collection API الذي يوفر العديد من الطرق المفيدة التي يمكن تطبيقها على مجموعة من الكائنات. تتضمن بعض الفئات المهمة التي توفرها Collection API ArrayList وHashMap وTreeSet وTreeMap.
97) هل يمكننا تحويل أي نوع آخر إلى النوع المنطقي باستخدام نوع الصب؟
لا، لا يمكننا تحويل أي نوع بدائي آخر إلى نوع بيانات منطقية ولا يمكننا إرسال نوع بيانات منطقية إلى أي نوع بيانات بدائية آخر.
98) هل يمكننا استخدام أنواع إرجاع مختلفة للطرق عند تجاوزها؟
المتطلبات الأساسية لطريقة التجاوز في Java هو أن الطريقة التي تم تجاوزها يجب أن يكون لها نفس الاسم والمعلمات. ولكن يمكن تجاوز الطريقة بنوع إرجاع مختلف طالما أن نوع الإرجاع الجديد يمتد إلى النوع الأصلي.
على سبيل المثال، تقوم الطريقة بإرجاع نوع مرجعي.
Class B extends A { A method(int x) { //original method } B method(int x) { //overridden method } }
99) ما هي الفئة الأساسية لجميع فئات الاستثناء؟
In Java, Java.lang.Throwable
هي الفئة الفائقة لجميع فئات الاستثناء وجميع فئات الاستثناء مشتقة من هذه الفئة الأساسية.
100) ما هو ترتيب دعوة البنائين في الميراث؟
في حالة الميراث، عندما يتم إنشاء كائن جديد من فئة مشتقة، يتم أولاً استدعاء مُنشئ الفئة الفائقة ثم يتم استدعاء مُنشئ الفئة المشتقة.
الاستعداد لمقابلة العمل الخاصة بك !!! اذهب عبر Java البرنامج التعليمي لنكون مستعدين بشكل أفضل.
هذا مفصل Java سيساعدك Mock Test Quiz على إزالة الشكوك حولك Java أسئلة المقابلة وسوف تساعدك أيضًا على اجتياز المقابلة.
تشبه Java Java 8 أسئلة للمقابلة سيساعد أيضًا في حياتك (الفم)