18年經典精選面試題集合
1、什麼是Java虛擬機器?為什麼Java被稱作是“平臺無關的程式語言”?
2、JDK和JRE的區別是什麼?
3、”static”關鍵字是什麼意思?Java中是否可以覆蓋(override)一個private或者是static的方法?(都不可以)
4、是否可以在static環境中訪問非static變數?(不可以)
5、Java支援的資料型別有哪些?什麼是自動拆裝箱?
6、Java中的方法覆蓋(Overriding)和方法過載(Overload)是什麼意思?
7、Java中,什麼是構造方法?什麼是構造方法過載?什麼是複製構造方法?
8、Java支援多繼承麼?
9、介面和抽象類的區別是什麼?
10、什麼是值傳遞和引用傳遞?
11、程序和執行緒的區別是什麼?
12、建立執行緒有幾種不同的方式?你喜歡哪一種?為什麼?
13、概括的解釋下執行緒的幾種可用狀態。
14、同步方法和同步程式碼塊的區別是什麼?
15、在監視器(Monitor)內部,是如何做執行緒同步的?程式應該做哪種級別的同步?
16、什麼是死鎖(deadlock)?
17、如何確保N個執行緒可以訪問N個資源同時又不導致死鎖?
18、Java集合類框架的基本介面有哪些?
19、為什麼集合類沒有實現Cloneable和Serializable介面?
20、什麼是迭代器(Iterator)?
21、Iterator和ListIterator的區別是什麼?
22、快速失敗(fail-fast)和安全失敗(fail-safe)的區別是什麼?
23、Java中的HashMap的工作原理是什麼?
24、hashCode和equals方法的重要性體現在什麼地方?
25、HashMap和Hashtable有什麼區別?
安全區別
HashMap是支援null鍵和null值的,而HashTable在遇到null時,會丟擲NullPointerException異常。
26、陣列(Array)和列表(ArrayList)有什麼區別?什麼時候應該使用Array而不是ArrayList?
後者是可變
27、ArrayList和LinkedList有什麼區別?
原理(為什麼快)
1.ArrayList是實現了基於動態陣列的資料結構,LinkedList基於連結串列的資料結構。
2.對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指標。
3.對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要移動資料。
28、Comparable和Comparator介面是幹什麼的?列出它們的區別。
29、什麼是Java優先順序佇列(Priority Queue)?
30、你瞭解大O符號(big-O notation)麼?你能給出不同資料結構的例子麼?
31、如何權衡是使用無序的陣列還是有序的陣列?
32、Java集合類框架的最佳實踐有哪些?
33、Enumeration介面和Iterator介面的區別有哪些?
34、HashSet和TreeSet有什麼區別?
35、Java中垃圾回收有什麼目的?什麼時候進行垃圾回收?
36、System.gc和Runtime.gc會做什麼事情?
37、finalize方法什麼時候被呼叫?解構函式(finalization)的目的是什麼?
38、如果物件的引用被置為null,垃圾收集器是否會立即釋放物件佔用的記憶體?
39、Java堆的結構是什麼樣子的?什麼是堆中的永久代(Perm Gen space)?
40、序列(serial)收集器和吞吐量(throughput)收集器的區別是什麼?
41、在Java中,物件什麼時候可以被垃圾回收?
42、JVM的永久代中會發生垃圾回收麼?
43、Java中的兩種異常型別是什麼?他們有什麼區別?
44、Java中Exception和Error有什麼區別?
45、throw和throws有什麼區別?
46、異常處理完成以後,Exception物件會發生什麼變化?
47、finally程式碼塊和finalize方法有什麼區別?
48、什麼是servlet?
49、解釋一下servlet的生命週期。
50、當servlet被載入的時候會發生什麼?