في هذه المقالة ، سنناقش أنواعًا مختلفة من أسئلة المقابلة في مقابلات Java التي تسمح لأصحاب العمل باختبار Java للمرشحين وقدرات البرمجة المشتركة الموجهة للكائنات. تنقسم الفصول التالية إلى مقالتين سابقتين والقادمتين. ستناقش المقالة الأولى البرمجة الموجهة نحو الكائنات وخصائصها ، والأسئلة الشائعة حول Java ووظائفها ، وفئات جمع Java ، وجامعي القمامة ، والمادة الثانية ستناقش بشكل أساسي معالجة الاستثناءات ، Java Applets ، Swing ، JDBC ، مكالمات الطريقة عن بعد (RMI) ، Servlets و JSP.
يبدأ!
جدول المحتويات
البرمجة الموجهة نحو الكائن (OOP)
مشاكل جافا المشتركة
خيوط جافا
مجموعة مجموعة جافا
جامع القمامة
البرمجة الموجهة نحو الكائن (OOP)
Java هي لغة برمجة الكمبيوتر تدعم المتزامنة والقائمة على الفصل والموجهة نحو الكائنات. مزايا تطوير البرمجيات الموجهة للكائنات مدرجة أدناه:
تحتوي البرمجة الموجهة نحو الكائنات على العديد من الميزات المهمة ، مثل: التغليف ، والميراث ، وتعدد الأشكال والتجريد. في الفصول التالية ، سنقوم بتحليل هذه الخصائص واحدة تلو الأخرى.
طَرد
يوفر التغليف الكائنات القدرة على إخفاء الميزات والسلوكيات الداخلية. يوفر الكائن بعض الطرق التي يمكن الوصول إليها بواسطة كائنات أخرى لتغيير البيانات الموجودة بداخلها. في جافا ، هناك 3 معدلات: عامة وخاصة ومحمية. يمنح كل معدل حقوق وصول مختلفة إلى كائنات أخرى موجودة في نفس الحزمة أو تحت حزم مختلفة.
فيما يلي بعض فوائد استخدام التغليف:
ارجع إلى هذا المستند لمزيد من التفاصيل والأمثلة حول التغليف.
متعدد الأشكال
تعدد الأشكال هو قدرة لغات البرمجة لإظهار الواجهات نفسها لأنواع البيانات الأساسية المختلفة. يمكن تطبيق العمليات على نوع متعدد الأشكال على أنواع أخرى من القيم.
ورث
يوفر الميراث الكائنات القدرة على الحصول على الحقول والأساليب من الفئات الأساسية. يوفر الميراث خطوطًا من الكود ، ويمكن أيضًا إضافة ميزات جديدة إلى الفئات الموجودة دون تعديلها.
خلاصة
التجريد هو خطوة فصل الأفكار عن مثيلات ملموسة ، لذلك قم بإنشاء فصول بناءً على وظائفها بدلاً من تفاصيل التنفيذ. تدعم Java إنشاء فصول مجردة تكشف فقط واجهات ولكنها لا تتضمن تطبيقات الطريقة. الغرض الرئيسي من هذه التقنية التجريدية هو فصل سلوك الفصل عن تفاصيل التنفيذ.
الفرق بين التجريد والتغليف
التجريد والتغليف هي مفاهيم تكميلية. من ناحية ، يركز الملخص على سلوك الكائنات. من ناحية أخرى ، يركز التغليف على تفاصيل سلوك الكائن. بشكل عام ، يتم تحقيق التغليف عن طريق إخفاء معلومات الحالة الداخلية للكائن. لذلك ، يمكن اعتبار التغليف استراتيجية لتوفير التجريد.
مشاكل جافا المشتركة
1. ما هو جهاز Java الظاهري؟ لماذا تسمى Java "لغة البرمجة المستقلة عن النظام الأساسي"؟
جهاز Java Virtual هو عملية جهاز افتراضي يمكنها تنفيذ Java Bytecode. يتم تجميع ملف مصدر Java في ملف Bytecode الذي يمكن تنفيذه بواسطة جهاز Virtual Java.
تم تصميم Java للسماح للتطبيقات بالتشغيل على أي منصة دون مطالبة المبرمجين بإعادة كتابة أو إعادة ترجمة كل منصة بشكل منفصل. تجعل أجهزة Java Virtual هذا ممكنًا لأنها تعرف طول التعليمات والميزات الأخرى لمنصة الأجهزة الأساسية.
2. ما هو الفرق بين JDK و JRE؟
Java Runtime Environment (JRE) هي آلة افتراضية Java التي ستنفذ برامج Java. ويتضمن أيضًا مكونات المستعرض المطلوبة لتنفيذ التطبيقات. مجموعة أدوات Java Development (JDK) هي حزمة تطوير برمجيات Java كاملة تتضمن JRE و Compiler وغيرها من الأدوات (مثل Javadoc و Java Debugger) ، والتي تتيح للمطورين تطوير وتجميع وتنفيذ تطبيقات Java.
3. ماذا تعني الكلمة الرئيسية "الثابتة"؟ هل يمكنني تجاوز طريقة خاصة أو ثابتة في جافا؟
تشير الكلمة الرئيسية "الثابتة" إلى أنه يمكن الوصول إلى متغير الأعضاء أو طريقة الأعضاء دون متغير مثيل للفئة التي ينتمي إليها.
لا يمكن الكتابة على الطريقة الثابتة في Java لأن الطريقة التي يتم كتابتها بشكل فائقة تعتمد على الربط الديناميكي لوقت التشغيل ، في حين أن الطريقة الثابتة تكون ملزمة ثابتة في وقت الترجمة. لا ترتبط الطريقة الثابتة بأي مثيل في الفصل ، لذلك لا ينطبق على المفاهيم.
4. هل من الممكن الوصول إلى المتغيرات غير المنتظمة في بيئة ثابتة؟
ينتمي المتغير الثابت إلى الفصل في Java ، وقيمته في جميع الحالات هي نفسها. عندما يتم تحميل الفصل بواسطة جهاز Virtual Java ، سيتم تهيئة المتغير الثابت. إذا حاول الكود الخاص بك الوصول إلى المتغيرات غير المنتظمة بدون حالات ، فسيقوم المترجم بالإبلاغ عن خطأ لأنه لم يتم إنشاء هذه المتغيرات بعد ولم يتم ربطه بأي حالات.
5. ما هي أنواع البيانات التي تدعمها جافا؟ ما هو التفكيك التلقائي؟
أنواع البيانات الأساسية التي تدعمها لغة Java هي:
الملاكمة التلقائية عبارة عن تحويل تم إجراؤه بواسطة برنامج التحويل البرمجي Java بين نوع البيانات الأساسية ونوع غلاف الكائن المقابل. على سبيل المثال: قم بتحويل int إلى عدد صحيح ، ومضاعفة إلى مزدوجة ، إلخ. وإلا ، فهو إلغاء التلقائي التلقائي.
6. ماذا تعني الطريقة المفرطة والطريقة الزائدة في جافا؟
يحدث التحميل الزائد في java عندما يكون لطريقتين أو أكثر أسماء الطريقة ولكن معلمات مختلفة في نفس الفئة. في المقابل ، يعني تجاوز الطريقة أن الفئة الفرعية تعيد تعريف طريقة الفئة الأصل. يجب أن يكون لتجاوزات الطريقة نفس اسم الطريقة ، وقائمة المعلمات ، ونوع الإرجاع. قد لا يقيد المؤلف فوق الوصول إلى الأساليب التي يغطيها.
7. ما هو مُنشئ في جافا؟ ما هو الحمل الزائد للبناء؟ ما هو مُنشئ النسخ؟
عند إنشاء كائن جديد ، يتم استدعاء المنشئ. كل فصل لديه مُنشئ. عندما لا يوفر المبرمج مُنشئًا للفئة ، سيقوم برنامج التحويل البرمجي Java بإنشاء مُنشئ افتراضي للفئة.
الحمل الزائد للبناء والطريقة الزائدة في Java متشابهة للغاية. يمكن إنشاء مُنشئات متعددة لفئة. يجب أن يكون لكل مُنشئ قائمة المعلمات الفريدة الخاصة به.
لا تدعم Java منشئي النسخ كما في C ++. هذا الاختلاف لأنه إذا لم تكتب المنشئ بنفسك ، فلن تنشئ Java مُنشئ النسخ الافتراضي.
8. هل تدعم جافا الميراث المتعدد؟
غير مدعوم ، لا تدعم جافا الميراث المتعدد. يمكن لكل فصل أن يرث فئة واحدة فقط ، ولكن يمكنه تنفيذ واجهات متعددة.
9. ما هو الفرق بين الواجهة وفئة مجردة؟
يوفر Java ويدعم إنشاء فصول وواجهات مجردة. تطبيقاتها لها أوجه تشابه ، والاختلافات هي:
يمكنك أيضًا الرجوع إلى الفرق بين الفصول التجريدية والواجهات في JDK8
10. ما هي القيمة المارة والمرجعية؟
يتم تمرير الكائن بقيمة ، مما يعني أنه يتم تمرير نسخة من الكائن. لذلك ، حتى إذا تم تغيير نسخة الكائن ، فلن تتأثر قيمة الكائن المصدر.
يتم تمرير كائن بالرجوع إليه ، مما يعني أنه ليس الكائن الفعلي الذي تم تمريره ، ولكن مرجع الكائن. لذلك ، ستنعكس التغييرات الخارجية في الكائن المشار إليه على جميع الكائنات.
خيوط جافا
11. ما هو الفرق بين العملية وخيط؟
العملية هي تطبيق تنفيذ ، وخيط هو تسلسل تنفيذ داخل العملية. يمكن أن تحتوي العملية على عدة مؤشرات ترابط. وتسمى المواضيع أيضا عمليات خفيفة الوزن.
12. كم عدد الطرق المختلفة لإنشاء موضوعات؟ أي واحد تحب؟ لماذا؟
هناك ثلاث طرق لإنشاء المواضيع:
يعد تطبيق الواجهة القابلة للتشغيل أكثر شعبية لأنه لا يتطلب وراثة فئة الخيط. عندما يتم توريث كائنات أخرى في تصميم التطبيق ، يتطلب ذلك ميراثًا متعدد (في حين أن Java لا تدعم الميراث المتعدد) ، يمكنه فقط تنفيذ واجهات. في الوقت نفسه ، تكون تجمعات الخيوط فعالة للغاية وسهلة التنفيذ والاستخدام.
13. شرح موجز للعديد من حالات المواضيع المتاحة.
أثناء التنفيذ ، يمكن أن تكون المواضيع في الحالات التالية:
14. ما هو الفرق بين طريقة التزامن وكتلة رمز التزامن؟
في لغة جافا ، كل كائن لديه قفل. يمكن أن تستخدم المواضيع الكلمة الرئيسية المتزامنة للحصول على الأقفال على الكائنات. يمكن تطبيق الكلمة الرئيسية المتزامنة على مستوى الطريقة (قفل الحبيبات الخشنة) أو على مستوى كتلة التعليمات البرمجية (قفل الحبيبات الدقيقة).
15. كيفية مزامنة الخيوط داخل الشاشة؟ ما هو مستوى التزامن الذي يجب أن يفعله البرنامج؟
يتم استخدام الشاشات والأقفال معًا في أجهزة Java الظاهرية. يراقب الشاشة كتلة رمز متزامن ، مما يضمن أن مؤشر ترابط واحد فقط ينفذ كتلة الكود المتزامن في وقت واحد. يرتبط كل شاشة مع مرجع كائن. لا تسمح مؤشرات الترابط بتنفيذ رمز التزامن قبل الحصول على القفل.
16. ما هو Deadlock؟
عندما تنتظر كلتا العمليتين أن يكمل الطرف الآخر التنفيذ قبل الاستمرار في التنفيذ ، يحدث طريق مسدود. والنتيجة هي أن كلتا العمليتين محاصرين في انتظار لا نهائي.
17.
عند استخدام MultiThreading ، تتمثل هناك طريقة بسيطة للغاية لتجنب حالات الجمود هي تحديد الترتيب الذي يتم به الحصول على الأقفال وإجبار الخيط على الحصول على الأقفال بالترتيب المحدد. لذلك ، إذا قفل جميع المواضيع وإصدار أقفال بنفس الترتيب ، فلن يكون هناك طريق مسدود.
مجموعة مجموعة جافا
18. ما هي الواجهات الأساسية لإطار فئة مجموعة Java؟
توفر فصول مجموعة Java مجموعة مصممة جيدًا من الواجهات والفئات التي تدعم عمليات على مجموعة من الكائنات. الواجهات الأساسية في فصول مجموعة Java هي:
19. لماذا لا تنفذ فئة التجميع الواجهات المستنسخة والقابلة للتسلسل؟
تحدد واجهة فئة المجموعة مجموعة من الكائنات تسمى العناصر. يمكن لكل فئة تنفيذ محددة لواجهة فئة المجموعة اختيار حفظ العناصر وفرزها بطريقتها الخاصة. تسمح بعض فصول التجميع بمفاتيح مكررة ، في حين أن البعض الآخر لا.
20. ما هو التكرار؟
توفر واجهة ITerator العديد من الطرق للتكرار عبر عناصر التجميع. تحتوي كل فئة مجموعة على طرق تكرارية يمكنها إعادة مثيل ITERATAR. يمكن للمؤلف حذف عناصر المجموعة الأساسية أثناء التكرار.
ترتبط الدلالات ومعاني الاستنساخ أو التسلسل بالتطبيقات المحددة. لذلك ، يجب أن يحدد التنفيذ المحدد لفئة التجميع كيفية استنساخ أو تسلسل.
21. ما هو الفرق بين المتكرر و ListIrator؟
الفرق مدرج أدناه:
22. ما هو الفرق بين الفشل السريع (فشل الفشل) والفشل الآمن (آمن الفشل)؟
يعتمد فشل أمن ITerator على إنشاء نسخ من المجموعة الأساسية ، لذلك لا يتأثر بالتعديلات على مجموعة المصدر. تفشل جميع فئات التجميع تحت حزمة Java.Util بسرعة ، في حين تفشل جميع الفئات تحت حزمة Java.Util.Concurrent بأمان. سوف يرمي التكرار السريع الذي يتم إلقاءه على استثناء ConcurrentModificationException ، في حين أن جهاز التكرار الآمن الذي لا يتجاوز هذا الاستثناء لن يرمي مثل هذا الاستثناء.
23. ما هو مبدأ العمل في هاشماب في جافا؟
Hashmap في عناصر Java يخزن في شكل أزواج القيمة الرئيسية. يتطلب HashMap وظيفة تجزئة تستخدم طرق HashCode () و equals () لإضافة واسترداد العناصر إلى/من المجموعة. عند استدعاء طريقة PUT () ، ستحسب HashMap قيمة التجزئة للمفتاح ثم تخزين أزواج القيمة الرئيسية على الفهرس المناسب في المجموعة. إذا كان المفتاح موجودًا بالفعل ، فسيتم تحديث القيمة إلى قيمة جديدة. بعض الميزات المهمة لـ HashMap هي قدرتها وعامل الحمل وتغيير حجم العتبة.
24. أين تعكس أهمية Hashcode () و equals ()؟
يستخدم HashMap في Java طرق Hashcode () و equals () لتحديد فهرس أزواج القيمة الرئيسية. سيتم أيضًا استخدام هاتين الطريقتين عند الحصول على القيم بناءً على المفاتيح. إذا لم يتم تنفيذ هاتين الطريقتين بشكل صحيح ، فقد يكون له مفتاحان مختلفان نفس قيمة التجزئة ، وبالتالي قد يعتبرها المجموعة متساوية. علاوة على ذلك ، يتم استخدام هاتين الطريقتين أيضًا لاكتشاف العناصر المكررة. لذلك ، فإن تنفيذ هاتين الطريقتين أمر بالغ الأهمية لدقة وصحة hashmap.
25. ما هو الفرق بين hashmap و hashtable؟
26. ما هو الفرق بين صفيف (صفيف) وقائمة (ArrayList)؟ متى يجب أن أستخدم Array بدلاً من ArrayList؟
فيما يلي يسرد الاختلافات بين Array و ArrayList:
27. ما هو الفرق بين ArrayList و LinkedList؟
كل من ArrayList و LinkedList تطبيق واجهات قائمة ، ولديهما الاختلافات التالية:
ArrayList هي واجهة بيانات قائمة على الفهرس ، وطبقتها الأساسية هي صفيف. يسمح بالوصول العشوائي إلى عناصر ذات التعقيد الزمني O (1). في المقابل ، تقوم LinkedList بتخزين بياناتها في شكل قائمة عناصر ، ويرتبط كل عنصر بالعناصر السابقة والجادمة. في هذه الحالة ، فإن التعقيد الزمني لإيجاد عنصر هو O (N).
بالمقارنة مع ArrayList ، يكون الإدراج وحذف LinkedList أسرع لأنه عندما تتم إضافة العناصر إلى أي موضع في المجموعة ، ليست هناك حاجة لإعادة حساب الحجم أو تحديث الفهرس مثل الصفيف.
يتناول LinkedList ذاكرة أكثر من ArrayList لأن LinkedList يخزن مرجعين لكل عقدة ، أحدهما يشير إلى العنصر السابق وواحد يشير إلى العنصر التالي.
يمكنك أيضًا الرجوع إلى ArrayList مقابل LinkedList.
28. ماذا تفعل واجهات المقارنة والمقارنة؟ قائمة خلافاتهم.
يوفر Java واجهة مماثلة تحتوي على طريقة مقارنة واحدة فقط. يمكن لهذه الطريقة فرز كائنين. على وجه التحديد ، فإنه يعيد رقمًا سلبيًا ، 0 ، ورقمًا إيجابيًا للإشارة إلى أن كائن الإدخال أقل من الكائن الموجود بالفعل ، وأكبر من الكائن الموجود بالفعل.
يوفر Java واجهة المقارنة التي تتضمن طريقتين: مقارنة () و equals (). يتم استخدام طريقة المقارنة () لفرز معلمتين للإدخال ، وإرجاع رقم سالب ، 0 ، والرقم الموجب يشير إلى أن المعلمة الأولى أقل من ، وأكبر من المعلمة الثانية. تتطلب طريقة Equals () كائن كمعلمة ، والتي يتم استخدامها لتحديد ما إذا كانت معلمة الإدخال مساوية للمقارنة. تُرجع هذه الطريقة بشكل صحيح فقط عندما تكون معلمة الإدخال أيضًا مقارنًا ومعلمة الإدخال ونتيجة فرز المقارنة الحالية هي نفسها.
29. ما هي قائمة انتظار جافا أولوية؟
PriorityQueue عبارة عن قائمة انتظار غير محدودة بناءً على كومة الأولوية ، ويتم فرز عناصرها بالترتيب الطبيعي. عند الإنشاء ، يمكننا تزويدها بمقارنة مسؤولة عن العناصر الفرز. لا يسمح PriorityQueue بقيم فارغة لأنه ليس لديها ترتيب طبيعي ، أو ليس لديهم أي مقارنات مرتبطة. أخيرًا ، ليس PriorityQueue آمنًا للخيط ، والتعقيد الزمني للوصول إلى الإزالة هو O (السجل (N)).
30. هل تفهم الرمز الكبير O (تدوين Big-O)؟ هل يمكنك إعطاء أمثلة على هياكل البيانات المختلفة؟
يصف الرمز الكبير o مدى جودة مقياس أو أداء الخوارزمية في أسوأ سيناريو عندما تزداد العناصر في بنية البيانات.
يمكن أيضًا استخدام الرموز الكبيرة O لوصف السلوكيات الأخرى ، مثل استهلاك الذاكرة. نظرًا لأن فئات التجميع هي في الواقع هياكل بيانات ، فإننا نستخدم بشكل عام رموز O الكبيرة لاختيار أفضل تطبيق على أساس الوقت والذاكرة والأداء. يمكن أن تعطي الرموز الكبيرة O شرحًا جيدًا لأداء كميات كبيرة من البيانات.
31. كيف تتبادل ما إذا كنت تريد استخدام صفيف غير مرتبة أو صفيف مرتبة؟
أكبر ميزة للمصفوفة المطلوبة هي أن التعقيد الزمني للبحث هو O (log n) ، في حين أن الصفيف غير المرتبة هو o (n). عيب المصفوفات المطلوبة هو أن التعقيد الزمني لعملية الإدراج هو o (n) ، لأن العناصر ذات القيم الكبيرة يجب نقلها إلى الوراء لإفساح المجال للعنصر الجديد. في المقابل ، فإن تعقيد وقت الإدراج للمصفوفة غير المرتبة هو الثابت O (1).
32. ما هي أفضل الممارسات لأطر فئة مجموعة Java؟
يعد تحديد نوع المجموعة المراد استخدامه وفقًا لاحتياجات التطبيق أمرًا مهمًا للغاية للأداء. على سبيل المثال: إذا كان حجم العنصر ثابتًا ويمكن أن يكون معروفًا مقدمًا ، فيجب علينا استخدام Array بدلاً من ArrayList.
تسمح بعض فئات التجميع بتحديد السعة الأولية. لذلك ، إذا استطعنا تقدير عدد العناصر المخزنة ، فيمكننا تحديد القدرة الأولية لتجنب إعادة حساب قيمة التجزئة أو توسيعها.
من أجل سلامة النوع ، قابلية القراءة والمتانة ، يتم دائمًا استخدام الأدوية الجيلية. في الوقت نفسه ، يمكن أن يؤدي استخدام الأدوية العامة أيضًا إلى تجنب ClassCastException في وقت التشغيل.
باستخدام الفئة غير القابلة للتغيير التي توفرها JDK كمفتاح للخريطة ، يمكن أن يتجنب تنفيذ أساليب HashCode () و equals () لفئاتنا الخاصة.
الواجهات أفضل من التنفيذ عند البرمجة.
عندما تكون المجموعة الأساسية فارغة فعليًا ، قم بإرجاع مجموعة أو صفيف بطول 0 ، ولا تعيد NULL.
33. ما هي الاختلافات بين واجهة التعداد وواجهة التكرار؟
التعداد هو ضعف سرعة التكرار ، بينما يستهلك ذاكرة أقل. ومع ذلك ، فإن التكرار أكثر أمانًا من التعداد ، لأن المواضيع الأخرى لا يمكنها تعديل الكائنات في المجموعة التي يتم اجتيازها بواسطة Iterator. في الوقت نفسه ، يسمح ITerator للمتصل بحذف العناصر في المجموعة الأساسية ، وهو أمر مستحيل على التعداد.
34. ما هو الفرق بين Hassset و Treeset؟
يتم تنفيذ Hashset بواسطة جدول التجزئة ، لذلك يتم ترتيب عناصرها. التعقيد الزمني لـ ADD () ، إزالة () ، ويحتوي على () طرق O (1).
من ناحية أخرى ، يتم تنفيذ Treeset بواسطة هيكل على شكل شجرة ، ويتم طلب العناصر الموجودة بداخلها. لذلك ، فإن التعقيد الزمني لـ Add () ، وإزالة () ، ويحتوي على () طرق O (logn).
جامعي القمامة
35. ما هو الغرض من مجموعة القمامة في جافا؟ متى سيتم جمع القمامة؟
الغرض من جمع القمامة هو تحديد وتجاهل الكائنات التي لم يعد التطبيق يستخدم لتحرير الموارد وإعادة استخدامها.
36. ماذا سيفعل System.gc () و Runtime.gc ()؟
يتم استخدام هاتين الطريقتين للمطالبة بـ JVM لأداء مجموعة القمامة. ومع ذلك ، فإن البدء على الفور أو تأخير جمع القمامة يعتمد على JVM.
37. متى تسمى طريقة النهائيات ()؟ ما هو الغرض من المدمرين؟
قبل تحرير الذاكرة التي يشغلها الكائن ، يقوم جامع القمامة باستدعاء طريقة الكائن (). يوصى بشكل عام بإصدار الموارد التي تحتفظ بها الكائنات في هذه الطريقة.
38. إذا تم تعيين مرجع الكائن على NULL ، فهل سيصدر جامع القمامة على الفور الذاكرة التي يشغلها الكائن؟
لا ، سيتم إعادة تدوير هذا الكائن في دورة جمع القمامة التالية.
39. كيف تبدو هيكل كومة جافا؟ ما هي مساحة بيرم جنرال في الكومة؟
كومة JVM هي منطقة بيانات وقت التشغيل ، ويتم تخصيص جميع الحالات والفئات من الفصول على الكومة. يتم إنشاؤه عند بدء تشغيل JVM. يتم جمع ذاكرة الكومة التي يشغلها الكائن بواسطة نظام إدارة الذاكرة التلقائي ، أي جامع القمامة.
تتكون ذاكرة الكومة من كائنات تنقش وتموت. الكائنات الباقية متاحة للتطبيق ولن يتم جمع القمامة. الكائن الميت هو كائن لا يمكن الوصول إليه للتطبيق ولم يتم إعادة تدويره بواسطة جامع القمامة. سوف يشغلون مساحة ذاكرة الكومة حتى يقوم جامع القمامة باستعادة هذه الكائنات.
40. ما هو الفرق بين جامع التسلسلي ومجمع الإنتاجية؟
يستخدم جامعو الإنتاجية إصدارات متوازية من الجيل القادم من جامعي القمامة ، والتي تستخدم للتطبيقات ذات البيانات المتوسطة الحجم والواسعة النطاق. جامعي التسلسلي يكفي لمعظم التطبيقات الصغيرة (تحتاج إلى حوالي 100 متر من الذاكرة على المعالجات الحديثة).
41. في جافا ، متى يمكن جمع الأشياء؟
عندما يصبح الكائن غير قابل للوصول إلى التطبيق الذي يستخدم هذا الكائن حاليًا ، يمكن إعادة تدوير الكائن.
42. هل سيحدث جمع القمامة في الجيل الدائم من JVM؟
لن تحدث جمع القمامة في الجيل الدائم. إذا كان الجيل الدائم ممتلئًا أو يتجاوز القيمة الحرجة ، فسيؤدي ذلك إلى تشغيل جمع القمامة الكامل (GC الكامل). إذا قمت بفحص معلومات إخراج جامع القمامة بعناية ، فستجد أن الجيل الدائم يتم إعادة تدويره أيضًا. هذا هو السبب في أن حجم الجيل الدائم الصحيح مهم للغاية لتجنب GC الكامل. يرجى الرجوع إلى Java 8: من الجيل الدائم إلى منطقة البيانات الوصفية
(ملاحظة المترجم: تمت إزالة الجيل الدائم في Java 8 ، وتم إضافة منطقة ذاكرة محلية جديدة تسمى منطقة البيانات الوصفية)
ما سبق هو عبارة عن مجموعة من المعلومات الخاصة بأسئلة مقابلة Java. سنستمر في إضافة المعلومات ذات الصلة في المستقبل. شكرا لك على دعمك لهذا الموقع!