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

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

1.不可變對象

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

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

能夠。不要共享可變對象的引用就能夠了,若是須要變化就返回原對象的一個拷貝。最多見的例子是對象中包含一個日期對象的引用.程序員

3.java 建立對象的方式

  • 採用new
  • 經過反射
  • 採用clone
  • 經過序列化機制

前2者都須要顯式地調用構造方法. 形成耦合性最高的剛好是第一種,所以你發現不管什麼框架,只要涉及到解耦必先減小new的使用.面試

4.switch中可否使用string作參數

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

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.父類的靜態方法可否被子類重寫

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


歡迎工做一到五年的Java工程師朋友們加入Java技術交流:736925717 羣內提供免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用本身每一分每一秒的時間來學習提高本身,不要再用"沒有時間「來掩飾本身思想上的懶惰!趁年輕,使勁拼,給將來的本身一個交代! 

相關文章
相關標籤/搜索