1. 程式人生 > >18年經典精選面試題集合

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