10 個最難的 Java 面試問題。
具有挑戰性的 Java 問題和答案 什麼是具有挑戰性的
Java面試問題?為什麼人們在去面試之前要研究它們?嗯,人們自然會為困難的問題做準備,即使他們不希望被
Java提出困難的問題。
為困難和棘手的問題做好準備將增強您的信心並幫助您回答任何其他問題。另一方面,如果你沒有為困難的問題做好準備,那麼他們在面試或筆試中的出現會給你帶來不愉快的驚喜。
但是什麼是困難問題的定義並不通用;同一個問題對一個程式設計師來說可能很困難,而對於另一個程式設計師來說可能很簡單。
因此,在參加Java面試之前,最好先準備好您個人的難題清單。在這篇文章中,我將與您分享我自己列出的十個具有挑戰性的問題,可能會對您有所幫助。
10 個困難的 Java 面試問題及其答案 正如我已經寫過的,這裡列出了 10 個困難的問題以及您在面試中可能遇到的技巧。這些問題僅涉及
Java內核,不影響
J2EE。正如我所說,這些問題對您來說可能很簡單,而且您已經知道答案。但儘管如此,他們在訪談中遇到了這些問題,而我個人也認識一些無法回答這些問題的人。
為什麼wait()和notify()方法宣告在Object類別中而不是Thread類別中? 一方面,
Java語言不是你開發的,你怎麼知道為什麼要這樣做而不是其他方式?但如果您運用常識和深入的
Java程式設計知識,您可以輕鬆找到答案。閱讀這篇文章 -
為什麼wait()和notification()在Object類別中聲明,而不是Thread。
為什麼Java不支援多重繼承? 這個問題的困難主要在於你的答案可能無法令提問者滿意。大多數情況下,需要具體的例子,如果你列出來,面試你的人會很高興。再次,我將給您一個我自己的部落格的連結 -
為什麼Java不支援多重繼承來回答這個問題。
為什麼Java不支援運算子重載?同一類別中的 另一個
Java難題。
C++支援運算子重載,為什麼
Java不?人們可能會給你這個和類似的論點,有時甚至說
+運算符在
Java中重載用於合併字串,但不要被愚弄。閱讀
為什麼 Java 不支援運算符重載,以獲得這個棘手問題的詳細答案。
為什麼 Java 中的字串是不可變的? 我最喜歡的面試問題,它既困難又棘手,但也非常有用。您可能還會被問到為什麼
在Java中字串被宣告為
final。請閱讀此處
為什麼 Java 中的字串是最終且不可變的。
為什麼在 Java 中字元數組比字串更好地儲存密碼? 還有一個關於字串的棘手問題,相信我,很少有
Java程式設計師能夠回答它。這是一個關於
Java核心的非常困難的問題,需要對
String類別有充分的了解才能回答。讀
為什麼字元數組比字串更好地儲存密碼以找出答案。
如何使用雙重檢查鎖定在 Java 中建立線程安全的單例? 表達這個問題的另一種方式是什麼是
線程安全單例以及如何建立一個。
在Java 5之前,建立執行緒安全單例的唯一方法是透過雙重鎖定,否則如果多個執行緒嘗試同時存取單例,它們將各自獲得不同的實例。從
Java 5 開始,
使用 Enum 解決了這個問題。但如果面試你的人堅持要寫這段程式碼給他。只是不要忘記將其設為
volatile。更多詳細信息,請參見
Java 中單例的 10 個問題
編寫一個產生死鎖的 Java 程序,並修復它。 這是經典但又困難的問題之一,其答案需要編寫多線程應用程式的經驗。閱讀
如何在 Java 中建立或防止死鎖
如果您的可序列化類別包含非可序列化字段,會發生什麼情況。如何修復它? 任何序列化此類類別的嘗試都會拋出
NotSerializedException,解決此問題的最簡單方法是聲明此類欄位
瞬態。如果您需要更多詳細信息, 請閱讀
十大序列化問題。
為什麼Java中的同步方法會呼叫wait和notify? 還有一個關於
Java核心的問題。它們是從
同步方法或同步區塊呼叫的,因為
wait()和
notification()需要呼叫它們的物件上的互斥體。好吧,您可以在這裡閱讀完整的答案 -
為什麼需要在同步上下文中呼叫 wait() 和 notification()。
Java 中可以重寫靜態方法嗎?如果我在後代類別中建立同名的方法,會導致編譯錯誤嗎? 不,您不能重寫
Java 中的靜態方法。但是,如果在後代類別中建立與祖先類別同名的靜態方法,則不會導致編譯錯誤。這稱為“方法隱藏”。您可以在這裡閱讀更詳細的答案:
can you override a static method in Java這是我的
Java 難題列表
並回答他們。對於經驗豐富的程式設計師來說,有些問題看起來不那麼複雜,但其中包含技巧,對於新手程式設計師來說回答起來並不那麼容易。如果您遇到任何
Java難題,請與我們分享。
來源文章
GO TO FULL VERSION