java面試寶典2016
Java是一種可以撰寫跨平臺應用程序的面向對象的程序設計語言,以下是應屆畢業生網小編整理提供的面試題內容,快來閱讀看看吧。
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是指命令行傳進的字符串數組。
【java面試寶典2016】相關文章:
程序員筆試環節面試寶典07-11
java面試最常見問題10-27
java招聘面試常見問題10-27
java英文面試筆試題03-19
java面試筆試題分享08-22
2016英語面試技巧08-17
2016求職英語面試08-02
2016英語面試小貼士07-20
英語面試技巧201608-09
java程序員面試筆試試題08-22