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