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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章