如果您曾經準備過Java 程序員職位的面試或通過了任何認證考試(不一定是關於編程的),那麼您可能已經註意到那裡提出的問題非常具體。其中許多迫使您考慮語言的設計。有些旨在探索您的知識深度。有些問題看起來比其他任何問題都更像是謎題,而其他問題則涉及語言的細微差別,如果不練習就很難理解。在本文中,開發人員Sarans Sing提出了一些有關 Java 的此類問題。當然有答案。 1. 如果我在 try/catch 塊中放入 return 語句或 System.exit() 會發生什麼情況? 這是一個非常流行且微妙的 Java 問題。訣竅在於許多程序員認為該
finally
塊始終會執行。return
通過在塊中放置語句或從塊內部try/catch
調用,問題對這種信念產生了懷疑。 這個棘手問題的答案是:當一個語句被放入一個塊中時,該塊將被執行,但當從一個塊中被調用時將不會被執行。 2、Java支持多重繼承嗎? 這是一個非常棘手的問題。面試官經常會問,“如果 C++ 支持直接多重繼承,那為什麼 Java 不能呢?” 答案_System.exit()
try/catch
finally
return
try/catch
System.exit()
try/catch
比看起來要復雜一點,因為 Java 支持多類型繼承。畢竟,Java 接口可以擴展其他接口。也就是說,Java 不支持實現的多重繼承。 3.如果父類中的方法拋出NullPointerException
s,是否可以用拋出s的方法重寫RuntimeException
? 這是另一個與重載和覆蓋相關的棘手問題。 答案:重寫的方法可以安全地拋出 的NullPointerException
父類 — RuntimeException,但您不能對 .checked 異常類型做同樣的事情Exception
。 4、如何保證N
線程訪問N
資源時不會出現死鎖? 如果編寫多線程代碼不是您的強項,那麼您可能真的會被這個問題絆倒。即使對於沒有遇到過死鎖和競爭條件的有經驗的程序員來說,這也可能很困難。 這裡的全部技巧是順序:您可以通過以與獲取資源相反的順序釋放資源來防止死鎖。 5.Java中的類和類有什麼區別?StringBuffer
StringBuilder
這是一個經典的 Java 語言問題,一些開發人員發現它很棘手,而另一些開發人員則認為它非常簡單。該類StringBuilder
出現在 JDK 1.5 中。這些類之間的唯一區別是、和 等StringBuffer
方法是同步的,而相應的方法在length()
capacity()
append()
StringBuilder
不是。這一根本區別意味著字符串連接 withStringBuilder
比 with更快StringBuffer
。StringBuffer
實際上,不推薦 使用,因為字符串連接 99% 的時間是在同一個線程上執行的。6. 計算表達式 1.0/0.0 的結果是什麼?它會產生異常或編譯錯誤嗎? 這是關於課程的另一個棘手問題。Java 開發人員知道原始雙精度數據類型和類的存在,但是在執行浮點運算時,他們沒有足夠注意, , ,以及管理相關算術計算的規則。 這個問題的答案很簡單:一個Double
Double
Double.POSITIVE_INFINITY
Double.NEGATIVE_INFINITY
NaN
-0.0
ArithmeticException
不會被拋出;表達式的計算結果為Double.POSITIVE_INFINITY
。 7. 如果您嘗試將密鑰插入到HashMap
已經包含該密鑰的 a 中,會發生什麼情況? 這個棘手的問題是另一個常見問題的一部分:HashMap
在 Java 中如何工作?HashMap
是有關 Java 的令人困惑和棘手問題的流行來源。 答案如下:如果您嘗試在 a 中重新插入一個鍵HashMap
,舊鍵將被替換,因為該類HashMap
不允許重複鍵。並且相同的密鑰將獲得相同的哈希碼,這意味著它將最終位於哈希桶中的相同位置。基於Quora資料
GO TO FULL VERSION