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