若是你並不徹底確信你本身或是你對 Java 的熟練程度,那麼這會是一個很是棘手的問題。若是有這種狀況,你應該把打分調低一點。以後,你大概會獲得與你認可的水平相符的問題。所以,假如你給本身滿分,卻不能回答一個有點難的問題,那將會對你不利。php
實話說,二者有不少不一樣。若是你能列出最重要的,應該就足夠了。你應該解釋 Java 8 中的新功能。想要得到完整清單,請訪問官網: Java 8 JDK 。html
你應該知道如下幾個重點:java
你應該知道如下幾個最重要的類型:面試
ArrayList LinkedList HashMap HashSet
以後,你可能會被問到這樣一些問題,好比什麼時候應該使用此種特定類型,它比其餘的好在哪裏,它是怎麼存儲數據的以及隱匿在其後的數據結構是什麼。sql
最好的方法是儘量多地瞭解這些集合類型,由於這類問題幾乎是無窮盡的。數據庫
這是一個很是常見的問題,用來肯定你對基礎知識的熟悉程度。如下是每一個對象都具備的方法:編程
在 java.lang
包中, Object
類位於類層次結構的頂端。每一個類都是 Object
類直接或間接的子類。你使用或編寫的每一個類都繼承了 Object
類中的實例方法。你並不須要使用這些方法中的任何一種,可是,若是你選擇這樣作,則可能須要用你的類的特定代碼來重寫這些方法。如下是本節所討論的從 Object
類中繼承的方法:緩存
protected Object clone() throws CloneNotSupportedException
建立並返回此對象的副本。public boolean equals(Object obj)
判斷另外一對象與此對象是否「相等」。protected void finalize() throws Throwable
當垃圾回收機制肯定該對象再也不被調用時,垃圾回收器會調用此方法。public final Class getClass()
返回此對象的運行時類。public int hashCode()
返回此對象的散列碼值。public String toString()
返回此對象的字符串表示形式。Object
類的 notify
, notifyAll
和 wait
方法都在同步程序中獨立運行線程的活動方面發揮了做用,這將在後面的課程中討論,在此不作介紹。其中有五種方法:安全
public final void notify() public final void notifyAll() public final void wait() public final void wait(long timeout) public final void wait(long timeout, int nanos)
java.sql.Connection
類時,你引用的值卻被更改成 myhacked.Connection
,而且它能對數據庫執行你不須要的操做。HashMap
鍵類型快。這就是爲何 String 是 HashMap
中最經常使用的鍵類型。爲何 Java 中的字符串不可變? 點擊這裏瞭解更多。數據結構
這是我最喜歡的問題。
final
關鍵字用於在多個語境下定義只能分配一次的實體。finally
代碼塊是用於執行重要代碼 (如關閉鏈接、流等) 的代碼塊。不管是否處理異常, finally
代碼塊總會被執行。 finally
代碼塊緊隨 try
代碼塊或 catch
代碼塊。菱形繼承問題反映了爲何在 Java 中咱們不被容許實現多繼承。若是有兩個類共同繼承一個有特定方法的超類,那麼該方法會被兩個子類重寫。而後,若是你決定同時繼承這兩個子類,那麼在你調用該重寫方法時,編譯器不能識別你要調用哪一個子類的方法。
咱們把這個問題稱爲 菱形繼承問題 。上圖對它做了說明,它也得名於此。
我認爲這是一個至關困難的問題。您須要對類進行屢次修改,以實現不可變性:在此我向你們推薦一個架構學習交流裙。交流學習裙號:687810532,裏面會分享一些資深架構師錄製的視頻錄像
final private setter final getter
單例模式是指一個類僅容許建立其自身的一個實例,並提供對該實例的訪問權限。它包含靜態變量,能夠容納其自身的惟一和私有實例。它被應用於這種場景——用戶但願類的實例被約束爲一個對象。在須要單個對象來協調整個系統時,它會頗有幫助。
這是你必須知道的首要問題, 不管你是使用 Java EE 仍是 Spring 框架。你能夠看看個人文章,其中進一步地解釋了這一點: 什麼是依賴注入?
在本文中,咱們討論了最多見的十個 Java 面試題 ——在我看來這是根據個人經驗總結出的時下最重要的問題。若是你瞭解這些問題,我相信你能在面試中得到很大的優點。