java面試寶典2016
Java是一種可以撰寫跨平臺應(yīng)用程序的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,以下是應(yīng)屆畢業(yè)生網(wǎng)小編整理提供的面試題內(nèi)容,快來閱讀看看吧。
java面試寶典2016版
問:Java 中應(yīng)該使用什么數(shù)據(jù)類型來代表價(jià)格?
答:如果不是特別關(guān)心內(nèi)存和性能的話,使用BigDecimal,否則使用預(yù)定義精度的 double 類型。 問:怎么將 byte 轉(zhuǎn)換為 String?
答:可以使用 String 接收 byte[] 參數(shù)的構(gòu)造器來進(jìn)行轉(zhuǎn)換,需要注意的點(diǎn)是要使用的正確的編碼,否則會使用平臺默認(rèn)編碼,這個(gè)編碼可能跟原來的編碼相同,也可能不同。 問:我們能將 int 強(qiáng)制轉(zhuǎn)換為 byte 類型的變量嗎?如果該值大于 byte 類型的范圍,將會出現(xiàn)什么現(xiàn)象?
答:是的,我們可以做強(qiáng)制轉(zhuǎn)換,但是 Java 中 int 是 32 位的,而 byte 是 8 位的,所以,如果強(qiáng)制轉(zhuǎn)化,int 類型的高 24 位將會被丟棄,byte 類型的范圍是從 -128 到 128。 問:我能在不進(jìn)行強(qiáng)制轉(zhuǎn)換的情況下將一個(gè) double 值賦值給 long 類型的`變量嗎?
答:不行,你不能在沒有強(qiáng)制類型轉(zhuǎn)換的前提下將一個(gè) double 值賦值給 long 類型的變量,因?yàn)?double 類型的范圍比 long 類型更廣,所以必須要進(jìn)行強(qiáng)制轉(zhuǎn)換
問:List、Set、Map 和 Queue 之間的區(qū)別?
答:List 是一個(gè)有序集合,允許元素重復(fù)。它的某些實(shí)現(xiàn)可以提供基于下標(biāo)值的常量訪問時(shí)間,但是這不是 List 接口保證的。Set 是一個(gè)無序集合。 問:poll() 方法和 remove() 方法的區(qū)別?
答:poll() 和 remove() 都是從隊(duì)列中取出一個(gè)元素,但是 poll() 在獲取元素失敗的時(shí)候會返回空,但是 remove() 失敗的時(shí)候會拋出異常。 問:Java 中 LinkedHashMap 和 PriorityQueue 的區(qū)別是什么?
答:PriorityQueue 保證最高或者最低優(yōu)先級的的元素總是在隊(duì)列頭部,但是 LinkedHashMap 維持的順序是元素插入的順序。當(dāng)遍歷一個(gè) PriorityQueue 時(shí),沒有任何順序保證,但是 LinkedHashMap 可保證遍歷順序是元素插入的順序。 問:ArrayList 與 LinkedList 的區(qū)別?
答:最明顯的區(qū)別是 ArrrayList 底層的數(shù)據(jù)結(jié)構(gòu)是數(shù)組,支持隨機(jī)訪問,而 LinkedList 的底層數(shù)據(jù)結(jié)構(gòu)鏈表,不支持隨機(jī)訪問。使用下標(biāo)訪問一個(gè)元素,ArrayList 的時(shí)間復(fù)雜度是 O(1),而 LinkedList 是 O(n)。
注:時(shí)間復(fù)雜度大概就是運(yùn)行時(shí)間和輸入規(guī)模的函數(shù),簡單的說,一個(gè)函數(shù)處理 n 個(gè)數(shù)字,需要 f(n) 秒的時(shí)間,時(shí)間復(fù)雜度就為 O(f(n));空間復(fù)雜度把時(shí)間換成內(nèi)存就夠了。
問:Hashtable 與 HashMap 有什么不同之處?
答:這兩個(gè)類有許多不同的地方,下面列出了一部分:
1、Hashtable 是 JDK 1.0 遺留下來的類,而 HashMap 是后來增加的。
2、Hashtable 是同步的,比較慢,但 HashMap 沒有同步策略,所以會更快。
3、Hashtable 不允許有空的 key,但是 HashMap 允許出現(xiàn)一個(gè) null key。
問:接口是什么?為什么要使用接口而不是直接使用具體類?
答:接口用于定義 API。它定義了類必須得遵循的規(guī)則。同時(shí),它提供了一種抽象,因?yàn)榭蛻舳酥皇褂媒涌,這樣可以有多重實(shí)現(xiàn),如 List 接口,你可以使用可隨機(jī)訪問的 ArrayList,也可以使用方便插入和刪除的 LinkedList。接口中不允許寫代碼,以此來保證抽象,但是 Java 8 中你可以在接口聲明靜態(tài)的默認(rèn)方法,這種方法是具體的。 問:Java 中,抽象類與接口之間有什么不同?
答:Java 中,抽象類和接口有很多不同之處,但是最重要的一個(gè)是 Java 中限制一個(gè)類只能繼承一個(gè)類,但是可以實(shí)現(xiàn)多個(gè)接口。抽象類可以很好的定義一個(gè)家族類的默認(rèn)行為,而接口能更好的定義類型,有助于后面實(shí)現(xiàn)多態(tài)機(jī)制。問:除了單例模式,你在生產(chǎn)環(huán)境中還用過什么設(shè)計(jì)模式?
答:這需要根據(jù)你的經(jīng)驗(yàn)來回答。一般情況下,你可以說依賴注入,工廠模式,裝飾模式或者觀察者模式,隨意選擇你使用過的一種即可。不過你要準(zhǔn)備回答接下的基于你選擇的模式的問題。 問:構(gòu)造器注入和 setter 依賴注入,那種方式更好?
答:每種方式都有它的缺點(diǎn)和優(yōu)點(diǎn)。構(gòu)造器注入保證所有的注入都被初始化,但是 setter 注入提供更好的靈活性來設(shè)置可選依賴。如果使用 XML 來描述依賴,setter 注入的可讀寫會更強(qiáng)。經(jīng)驗(yàn)法則是強(qiáng)制依賴使用構(gòu)造器注入,可選依賴使用 setter 注入。
java面試寶典2016版
問題:如果main方法被聲明為private會怎樣?
答案:能正常編譯,但運(yùn)行的時(shí)候會提示”main方法不是public的”。
問題:Java里的傳引用和傳值的區(qū)別是什么?
答案:傳引用是指傳遞的是地址而不是值本身,傳值則是傳遞值的一份拷貝。
問題:如果要重寫一個(gè)對象的equals方法,還要考慮什么?
答案:hashCode。
問題:Java的”一次編寫,處處運(yùn)行”是如何實(shí)現(xiàn)的?
答案:Java程序會被編譯成字節(jié)碼組成的class文件,這些字節(jié)碼可以運(yùn)行在任何平臺,因此Java是平臺獨(dú)立的。
問題:說明一下public static void main(String args[])這段聲明里每個(gè)關(guān)鍵字的作用
答案:public: main方法是Java程序運(yùn)行時(shí)調(diào)用的第一個(gè)方法,因此它必須對Java環(huán)境可見。所以可見性設(shè)置為pulic.
static: Java平臺調(diào)用這個(gè)方法時(shí)不會創(chuàng)建這個(gè)類的一個(gè)實(shí)例,因此這個(gè)方法必須聲明為static。
void: main方法沒有返回值。
String是命令行傳進(jìn)參數(shù)的類型,args是指命令行傳進(jìn)的字符串?dāng)?shù)組。
【java面試寶典2016】相關(guān)文章:
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