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被載入的時候會發生什麼?