1. 程式人生 > >2019年19道java經典面試題(附答案)

2019年19道java經典面試題(附答案)

可變對象 caption 反射 進制 不可 tostring 靈活性 clear 散列表

技術分享圖片

1.不可變對象

指對象一旦被創建狀態不能再改變。任何修改都會創建一個新的對象,如 String、Integer及其它包裝類。

2.能否創建一個包含可變對象的不可變對象?

可以。不要共享可變對象的引用就可以了,如果需要變化就返回原對象的一個拷貝。最常見的例子是對象中包含一個日期對象的引用.

3.java 創建對象的方式

  • 采用new
  • 通過反射
  • 采用clone
  • 通過序列化機制

前2者都需要顯式地調用構造方法. 造成耦合性最高的恰好是第一種,因此你發現無論什麽框架,只要涉及到解耦必先減少new的使用.

4.switch中能否使用string做參數

在idk 1.7之前,switch只能支持byte,short,char,int或者其對應的封裝類以及Enum類型。從idk 1.7之後switch開始支持String.

5.Object中有哪些公共方法?

  • equals()
  • clone()
  • getClass()
  • notify(),notifyAll(),wait()

6. object中定義了哪些方法?

clone(), equals(), hashCode(), toString(), notify(), notifyAll(), wait(), finalize(), getClass()

7. HashMap和HashTable的區別

  • HashTable是線程安全的HashMap不是
  • HashMap中允許存在null鍵和null值,HashTable中不允許

8. HashMap的實現原理

HashMap的底層實現是“基於拉鏈法的散列表”。

9.String 是最基本的數據類型嗎?

不是。Java中的基本數據類型只有8個:byte、short、int、long、float、double、char、boolean;除了基本類型(primitive type)和枚舉類型(enumeration type),剩下的都是引用類型(reference type)。

10.float f=3.4;是否正確?

不正確。3.4是雙精度數,將雙精度型(double)賦值給浮點型(float)屬於下轉型(down-casting,也稱為窄化)會造成精度損失,因此需要強制類型轉換float f =(float)3.4; 或者寫成float f =3.4F;。

11.Java有沒有goto?

goto 是Java中的保留字,在目前版本的Java中沒有使用。《The Java Programming Language》附錄中有goto和const,但這兩個是目前無法使用的關鍵字,因此有些地方將其稱之為保留字,其實保留字這個詞應該有更廣泛的意義,因為熟悉C語言的程序員都知道,在系統類庫中使用過的有特殊意義的單詞或單詞的組合都被視為保留字。

12.http1.0,http1.1,http2.0區別

1.0相比1.1可以一次傳輸多個文件,各類瀏覽器大概都支持3~5個請求同時發送。

http2.0主要是二進制的格式替代了原來的文本,增加了多路復用和首部壓縮解決了head of line blocking,另外還有server pushing等新特性。

協議的東西還是建議看一看官網的說明。

13.Get/Post對緩存的影響

此題其實是問瀏覽器緩存對於HTTP Method中Get和Post的請求是否支持,答案是不支持Post Method。Get可以被瀏覽器緩存。

14.多態的好處

允許不同類對象對同一消息做出響應,主要優點:

  • 可替換性:多態對已存在代碼具有可替換性;
  • 可擴充性:增加新的子類不影響已經存在的類結構;
  • 接口性:多態是超累通過方法簽名,想子類提供一個公共接口,由子類來完善或者重寫它來實現的;
  • 靈活性;
  • 簡化性。

15.代碼中如何實現多態

  • 接口實現
  • 繼承父類重寫方法
  • 同一類中進行方法重載

16.虛擬機是如何實現多態的

動態綁定技術(dynamic binding),執行期間判斷所引用對象的實際類型,根據實際類型調用對應的方法.

17.接口的意義

接口的意義用三個詞就可以概括:規範,擴展,回調.

18.抽象類的意義

  • 為其他子類提供一個公共的類型
  • 封裝子類中重復定義的內容
  • 定義抽象方法,子類雖然有不同的實現,但是定義時一致的

19.父類的靜態方法能否被子類重寫

不能。子類繼承父類後,有相同的靜態方法和非靜態,這是非靜態方法覆蓋父類中的方法,父類的該靜態方法被隱藏,另外子類可集成父類的靜態與非靜態方法,至於方法重載我覺得它其中一要素就是在同一類中,不能說父類中的什麽方法與子類裏的什麽方法是方法重載的體現。


以上19道java經典面試題。歡迎加入QQ群架構華山論劍:836442475(大牛聚集地)一起交流學習探討!,可申請免費IT試聽課。

最後

為幫助那些往想互聯網方向轉行想學習,卻因為時間不夠,資源不足而放棄的人。我搜集整理了一套完整的IT學習資料,包括運營技巧、SEO優化等,比自己在網上零散收集的結構性和連貫性更強,只為幫助那些想學習的人!需要的同學歡迎加入QQ群架構華山論劍:836442475(大牛聚集地)一起交流學習探討!

技術分享圖片

技術分享圖片

技術分享圖片

2019年19道java經典面試題(附答案)