標籤:
第一,談談final, finally, finalize的區別。
final 用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。finally是異常處理語句結構的一部分,表示總是執行。finalize是 Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉檔案等。
第二,Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面)?
可以繼承其他類或完成其他介面,在swing編程中常用此方式。
第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統)。
Static Nested Class是被聲明為靜態(static)的內部類,它可以不依賴於外部類執行個體被執行個體化。而通常的內部類需要在外部類執行個體化後才能執行個體化。
第四,&和&&的區別。
&是位元運算符,表示按位與運算,&&是邏輯運算子,表示邏輯與(and).
第五,HashMap和Hashtable的區別。
HashMap是Hashtable的輕量級實現(非安全執行緒的實現),他們都完成了Map介面,主要區別在於HashMap允許空(null)索引值(key),由於非安全執行緒,效率上可能高於Hashtable.
第六,Collection 和 Collections的區別。
Collection是集合類的上級介面,繼承與他的介面主要有Set 和List.Collections是針對集合類的一個協助類,他提供一系列靜態方法實現對各種集合的搜尋、排序、安全執行緒化等操作。
第七,什麼時候用assert。
1.4新增關鍵字(文法),用於測試boolean運算式狀態,可用於偵錯工具。使用方法 assert ,表示如果運算式為真(true),則下面的語句執行,否則拋出AssertionError。另外的使用方式assert < boolean運算式>:,表示如果運算式為真,後面的運算式忽略,否則後面運算式的值用於AssertionError的構建參數。注意編譯時間要增加-source 1.4 參數,否則報錯。]運行時要增加 –ea參數,否則assert行被忽略
第八,GC是什麼? 為什麼要有GC?
GC是垃圾收集的意思(Gabage Collection),記憶體處理是編程人員容易出現問題的地方,忘記或者錯誤的記憶體回收會導致程式或系統的不穩定甚至崩潰,Java提供的GC功能可以 自動監測對象是否超過範圍從而達到自動回收記憶體的目的,Java語言沒有提供釋放已指派記憶體的顯示操作方法。
第九,String s = new String("xyz");建立了幾個String Object?
兩個
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12Math.round(-11.5)==-11round方法返回與參數最接近的長整數,參數加1/2後求其floor.
第十一,short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?
short s1 = 1; s1 = s1 + 1; (s1+1運算結果是int型,需要強制轉換類型)short s1 = 1; s1 += 1;(可以正確編譯)
第十二,sleep() 和 wait() 有什麼區別?
sleep是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時後會自動回復。調用 sleep不會釋放對象鎖。wait是Object類的方法,對此對象調用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對 象發出notify方法(或notifyAll)後本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態。
第十三,Java有沒有goto?
沒有 很十三的問題,如果哪個面試的問到這個問題,我勸你還是別進這家公司。
JAVA程式員面試必知32個知識點