如果您曾經準備過Java 程式設計師 職位的面試或參加過任何考試(不一定是程式設計)以獲得證書,那麼您很可能已經注意到他們提出的問題非常具體。其中許多讓您思考語言的架構,有些是為深入了解而設計的。還有一些更像是謎題或專注於細微差別,如果不練習就很難感覺到。在本文中,開發人員Saraans Singh提供了幾個此類 Java 問題。當然有答案。 1. 如果將 return 或 System.exit() 語句放在 try/catch 區塊中會發生什麼事? 這是Java中一個非常流行的「追趕」問題。訣竅在於,許多程式設計師相信該區塊
finally
在任何情況下都會被執行。return
這個問題透過在區塊中放置語句try/catch
或從try/catch
語句區塊呼叫來挑戰這個概念System.exit ()
。 這個棘手問題的答案是:當語句放入區塊中時,該區塊finally
將被執行,而從語句區塊中呼叫時,該區塊將不會被執行。 2. Java支援多重繼承嗎? 這是一個非常棘手的問題。面試官常說:如果C++可以支援直接多重繼承,為什麼Java不能? 答案比看起來要複雜一些,因為 Java 支援多型別繼承,因為其中的介面可以擴充其他介面。但Java語言不支援實作的多重繼承。 3.父類別中的方法拋出異常的情況下,是否可以被拋出異常的方法覆蓋? 另一個棘手的問題與重載和覆蓋的概念有關。 答:您可以在重寫的方法中安全地拋出父類別異常,但不能對類型為受檢查的異常執行相同的操作。 4、如何保證執行緒能夠存取資源而不發生死鎖? 如果您不太擅長編寫多執行緒程式碼,那麼這個問題對您來說將非常棘手。即使對於沒有處理過死鎖和競爭條件的經驗豐富的程式設計師來說,這也可能具有挑戰性。這裡的技巧在於順序:可以透過按照與取得資源的相反順序釋放資源來防止死鎖。 5.類別和Java語言中的類別有什麼差別?return
try/catch
try/catch
System.exit ()
NullPointerException
RuntimeException
NullPointerException – RuntimeException
Exception
N
N
StringBuffer
StringBuilder
這是一個關於 Java 語言的經典問題,有些開發人員認為很棘手,而有些開發人員則認為非常簡單。該類別StringBuilder
是在 JDK 1.5 中引入的,它們之間的唯一區別是該類別的方法StringBuffer
(例如length()
或capacity()
)append()
是同步的,而該類別的相應方法StringBuilder
則不是。由於這種根本區別,字串連接StringBuilder
速度更快StringBuffer
。事實上,StringBuffer
不建議使用,因為在 99% 的用例中,字串連接是在同一個執行緒上完成的。 6. 表達式 1.0/0.0 回傳什麼?會拋出異常或導致編譯錯誤嗎? 另一個關於班級的棘手問題Double
。儘管 Java 開發人員知道簡單資料類型 double 和 class Double
,但在執行浮點運算時,他們並沒有對Double.INFINITY
、NaN
以及-0.0
管理與它們相關的算術計算的規則給予足夠的關注。 這個問題的答案很簡單:ArithmeticException
不會拋出異常,會回傳值Double.INFINITY
。 7. 如果嘗試將HashMap
一個鍵物件插入到一個已經存在的鍵物件中,會發生什麼情況? 這個棘手的問題是另一個常見問題的一部分:它們HashMap
在 Java 中如何運作?HashMap
是有關 Java 語言的令人困惑和棘手問題的熱門主題。 答案是,如果您嘗試將金鑰重新插入到 中HashMap
,它將取代舊的金鑰,因為該類別HashMap
不允許重複的金鑰。相同的金鑰意味著相同的雜湊碼,因此它最終會出現在雜湊段中的相同位置。基於Quora 的材料
GO TO FULL VERSION