إذا كنت قد استعدت من قبل لمقابلة منصب مبرمج Java أو أجريت أي اختبار (ليس بالضرورة في البرمجة) للحصول على شهادة، فمن المرجح أنك لاحظت بالفعل أن الأسئلة التي يطرحونها محددة للغاية. الكثير منها يجعلك تفكر في بنية اللغة، وبعضها مصمم للمعرفة العميقة. هناك أيضًا تلك التي تشبه الألغاز أو الفروق الدقيقة التي يصعب الشعور بها دون ممارسة. في هذه المقالة، يقدم المطور Saraans Singh العديد من أسئلة Java. مع الإجابات بالطبع. 1. ماذا يحدث إذا قمت بوضع عبارة return أو System.exit() في كتلة حاول/قبض؟ يعد هذا سؤال "اللحاق بالركب" شائعًا جدًا في Java. الحيلة هي أن العديد من المبرمجين يعتقدون أنه
finally
سيتم تنفيذ الكتلة في أي حال. يتحدى هذا السؤال هذا المفهوم عن طريق وضع عبارة return
في كتلة try/catch
أو الاتصال من كتلة try/catch
عبارة System.exit ()
. الإجابة على هذا السؤال الصعب: سيتم تنفيذ الكتلة finally
عندما يتم وضع عبارة return
في كتلة try/catch
، ولن يتم تنفيذها عند استدعائها من كتلة try/catch
بيان System.exit ()
. 2. هل تدعم Java الميراث المتعدد؟ هذا سؤال صعب جدا. كثيرًا ما يقول القائمون على المقابلات: إذا كان بإمكان لغة C++ دعم الميراث المتعدد المباشر، فلماذا لا تستطيع Java ذلك؟ الإجابة أكثر تعقيدًا مما قد تبدو عليه، نظرًا لأن Java تدعم وراثة الأنواع المتعددة، لأن الواجهة الموجودة فيها يمكنها توسيع واجهات أخرى. لكن لغة Java لا تدعم الوراثة المتعددة للتطبيقات. 3. في حالة قيام إحدى الطرق بطرح استثناء NullPointerException
في الفئة الأصل، هل يمكن تجاوزه بالطريقة التي تطرح استثناءً RuntimeException
؟ سؤال صعب آخر يتعلق بمفاهيم الحمولة الزائدة والتجاوز. الإجابة: يمكنك طرح استثناء فئة أصل بأمان في طريقة تم تجاوزها NullPointerException – RuntimeException
، لكن لا يمكنك فعل الشيء نفسه مع استثناء محدد من النوع Exception
. 4. كيف يمكن ضمان وصول N
سلاسل الرسائل إلى N
الموارد دون توقف تام؟ إذا لم تكن جيدًا في كتابة التعليمات البرمجية متعددة الخيوط، فسيكون هذا السؤال صعبًا للغاية بالنسبة لك. قد يكون الأمر صعبًا حتى بالنسبة للمبرمج ذي الخبرة الذي لم يتعامل مع حالات الجمود وظروف السباق. تكمن الحيلة هنا في الترتيب: يمكن منع حالة الجمود عن طريق تحرير الموارد بالترتيب العكسي الذي تم الحصول عليها به. 5. ما الفرق بين الفئات StringBuffer
وفي StringBuilder
لغة جافا؟ سؤال كلاسيكي حول لغة جافا، يعتبره بعض المطورين صعبًا وبسيطًا جدًا بالنسبة للآخرين. تم تقديم الفصل StringBuilder
في JDK 1.5 والفرق الوحيد بينهما هو أن طرق الفصل StringBuffer
، على سبيل المثال، length()
أو capacity()
، append()
متزامنة، في حين أن الطرق المقابلة للفئة StringBuilder
ليست كذلك. وبسبب هذا الاختلاف الأساسي، StringBuilder
يكون تسلسل السلسلة أسرع مع StringBuffer
. في الواقع، StringBuffer
لا يُنصح باستخدامه، لأنه في 99٪ من حالات الاستخدام، يتم إجراء تسلسل السلسلة على نفس الموضوع. 6. ما الذي يعود به التعبير 1.0/0.0؟ هل سيطرح استثناءً أم سيتسبب في خطأ في الترجمة؟ سؤال صعب آخر حول الفصل Double
. على الرغم من أن مطوري Java على دراية بنوع البيانات البسيط double والفئة Double
، إلا أنهم عند إجراء عمليات الفاصلة العائمة، لا يعيرون اهتمامًا كافيًا Double.INFINITY
للقواعد التي تحكم العمليات الحسابية المرتبطة بها. الإجابة على هذا السؤال بسيطة: لن يتم طرح أي استثناء ، وسيتم إرجاع القيمة . 7. ماذا يحدث إذا حاولت إدراج كائن رئيسي في كائن رئيسي موجود فيه بالفعل؟ هذا السؤال الصعب هو جزء من سؤال آخر متكرر: كيف يعملون في جافا؟ يعد موضوعًا شائعًا للأسئلة المربكة والصعبة حول لغة جافا. الجواب هو أنه إذا حاولت إعادة إدخال مفتاح في ، فسوف يحل محل المفتاح القديم لأن الفصل لا يسمح بالمفاتيح المكررة. والمفتاح نفسه يعني نفس رمز التجزئة، لذلك سينتهي به الأمر في نفس المكان في مقطع التجزئة. بناءً على مواد من موقع QuoraNaN
-0.0
ArithmeticException
Double.INFINITY
HashMap
HashMap
HashMap
HashMap
HashMap
GO TO FULL VERSION