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被载入的时候会发生什么?

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