java面試寶典2016

才智咖 人氣:2.93W

Java是一種可以撰寫跨平臺應用程式的物件導向的程式設計語言,以下是本站小編整理提供的面試題內容,快來閱讀看看吧。

java面試寶典2016

java面試寶典2016版

問:Java 中應該使用什麼資料型別來代表價格?

答:如果不是特別關心記憶體和效能的話,使用BigDecimal,否則使用預定義精度的 double 型別。 問:怎麼將 byte 轉換為 String?

答:可以使用 String 接收 byte[] 引數的構造器來進行轉換,需要注意的點是要使用的正確的編碼,否則會使用平臺預設編碼,這個編碼可能跟原來的編碼相同,也可能不同。 問:我們能將 int 強制轉換為 byte 型別的變數嗎?如果該值大於 byte 型別的範圍,將會出現什麼現象?

答:是的,我們可以做強制轉換,但是 Java 中 int 是 32 位的,而 byte 是 8 位的,所以,如果強制轉化,int 型別的高 24 位將會被丟棄,byte 型別的範圍是從 -128 到 128。 問:我能在不進行強制轉換的情況下將一個 double 值賦值給 long 型別的變數嗎?

答:不行,你不能在沒有強制型別轉換的前提下將一個 double 值賦值給 long 型別的變數,因為 double 型別的範圍比 long 型別更廣,所以必須要進行強制轉換

問:List、Set、Map 和 Queue 之間的區別?

答:List 是一個有序集合,允許元素重複。它的某些實現可以提供基於下標值的常量訪問時間,但是這不是 List 介面保證的。Set 是一個無序集合。 問:poll() 方法和 remove() 方法的區別?

答:poll() 和 remove() 都是從佇列中取出一個元素,但是 poll() 在獲取元素失敗的'時候會返回空,但是 remove() 失敗的時候會丟擲異常。 問:Java 中 LinkedHashMap 和 PriorityQueue 的區別是什麼?

答:PriorityQueue 保證最高或者最低優先順序的的元素總是在佇列頭部,但是 LinkedHashMap 維持的順序是元素插入的順序。當遍歷一個 PriorityQueue 時,沒有任何順序保證,但是 LinkedHashMap 可保證遍歷順序是元素插入的順序。 問:ArrayList 與 LinkedList 的區別?

答:最明顯的區別是 ArrrayList 底層的資料結構是陣列,支援隨機訪問,而 LinkedList 的底層資料結構連結串列,不支援隨機訪問。使用下標訪問一個元素,ArrayList 的時間複雜度是 O(1),而 LinkedList 是 O(n)。

注:時間複雜度大概就是執行時間和輸入規模的函式,簡單的說,一個函式處理 n 個數字,需要 f(n) 秒的時間,時間複雜度就為 O(f(n));空間複雜度把時間換成記憶體就夠了。

問:Hashtable 與 HashMap 有什麼不同之處?

答:這兩個類有許多不同的地方,下面列出了一部分:

1、Hashtable 是 JDK 1.0 遺留下來的類,而 HashMap 是後來增加的。

2、Hashtable 是同步的,比較慢,但 HashMap 沒有同步策略,所以會更快。

3、Hashtable 不允許有空的 key,但是 HashMap 允許出現一個 null key。

問:介面是什麼?為什麼要使用介面而不是直接使用具體類?

答:介面用於定義 API。它定義了類必須得遵循的規則。同時,它提供了一種抽象,因為客戶端只使用介面,這樣可以有多重實現,如 List 介面,你可以使用可隨機訪問的 ArrayList,也可以使用方便插入和刪除的 LinkedList。介面中不允許寫程式碼,以此來保證抽象,但是 Java 8 中你可以在介面宣告靜態的預設方法,這種方法是具體的。 問:Java 中,抽象類與介面之間有什麼不同?

答:Java 中,抽象類和介面有很多不同之處,但是最重要的一個是 Java 中限制一個類只能繼承一個類,但是可以實現多個介面。抽象類可以很好的定義一個家族類的預設行為,而介面能更好的定義型別,有助於後面實現多型機制。問:除了單例模式,你在生產環境中還用過什麼設計模式?

答:這需要根據你的經驗來回答。一般情況下,你可以說依賴注入,工廠模式,裝飾模式或者觀察者模式,隨意選擇你使用過的一種即可。不過你要準備回答接下的基於你選擇的模式的問題。 問:構造器注入和 setter 依賴注入,那種方式更好?

答:每種方式都有它的缺點和優點。構造器注入保證所有的注入都被初始化,但是 setter 注入提供更好的靈活性來設定可選依賴。如果使用 XML 來描述依賴,setter 注入的可讀寫會更強。經驗法則是強制依賴使用構造器注入,可選依賴使用 setter 注入。

java面試寶典2016版

問題:如果main方法被宣告為private會怎樣?

答案:能正常編譯,但執行的時候會提示”main方法不是public的”。

問題:Java裡的傳引用和傳值的區別是什麼?

答案:傳引用是指傳遞的是地址而不是值本身,傳值則是傳遞值的一份拷貝。

問題:如果要重寫一個物件的equals方法,還要考慮什麼?

答案:hashCode。

問題:Java的”一次編寫,處處執行”是如何實現的?

答案:Java程式會被編譯成位元組碼組成的class檔案,這些位元組碼可以執行在任何平臺,因此Java是平臺獨立的。

問題:說明一下public static void main(String args[])這段聲明裡每個關鍵字的作用

答案:public: main方法是Java程式執行時呼叫的第一個方法,因此它必須對Java環境可見。所以可見性設定為pulic.

static: Java平臺呼叫這個方法時不會建立這個類的一個例項,因此這個方法必須宣告為static。

void: main方法沒有返回值。

String是命令列傳進引數的型別,args是指命令列傳進的字串陣列。