Java资源分享网 - 专业的Java学习网站 学Java,上Java资源分享网
Java程序员必备面试题八股文 PDF 下载
发布于:2024-09-17 10:35:10
(假如点击没反应,多刷新两次就OK!)

Java程序员必备面试题八股文 PDF 下载  图1

 

 

资料内容:

1.JDK动态代理和CGLIB动态代理的区别
JDK动态代理只能对实现了接的类成代理,不能针对类。
CGLIB是针对类实现代理,主要是对指定的类类,覆盖其中的法。因为是继承, 所以该类
法最好不要声明成final
 
2.静态代理和动态代理的区别
静态代理中代理类在编译期就已经确定,动态代理则是JVM时动态成,静态代理的效 率相对动态
代理来说相对⾼⼀些,但是静态代理代码冗余单需要修改接,代理类和委 托类都需要修改。
 
3.ArrayList和LinkedList有什么区别?
1. ArrayListLinkedList的差别主要来ArrayLinkedList数据结构的不同。 ArrayList是基于数
组实现的,LinkedList是基于双链表实现的。另外LinkedList类不 仅是List的实现类,可以根
据索引来随机访问集合中的元素,除此之外, LinkedList还实现了DequeDeque
Queue,它代表个双向 队列,因此LinkedList可以作为双向队列 ,栈(可以参
Deque提供的接⼝⽅法)和 List集合使,功能强
2. 因为Array是基于索引(index)的数据结构,它使索引在数组中搜索和读取数据是很快 的,可以直接
返回数组中index位置的元素,因此在随机访问集合元素上有较好的性能。 Array获取数据的时间
复杂度是O(1),但是要插、删除数据却是开销很的,因为这需 要移动数组中插位置之后的的所
有元素。
3. 相对于ArrayListLinkedList的随机访问集合元素时性能较差,因为需要在双向列表中 找到要
index的位置,再返回;但在插,删除操作是更快的。因为LinkedList不像 ArrayList样,不需
要改变数组的⼤⼩,也不需要在数组装满的时候要将所有的数据重 新装⼊⼀个新的数组,这是
ArrayList最坏的种情况,时间复杂度是O(n)LinkedList中插或删除的时间复杂度仅为
O(1)ArrayList在插数据时还需要更新索 引(除了插数组的尾部)。
4. LinkedList需要更多的内存,因为ArrayList的每个索引的位置是实际的数据,LinkedList中的每
个节点中存储的是实际的数据和前后节点的位置。
 
4.重写和重载的区别
重写是类对类的允许访问的法的实现过程进重新编写, 返回值和形参都不能改变。即 外壳不变,
重写!
重写的好处在于类可以根据需要,定义特定于⾃⼰为。 也就是说类能够根据需要实现 类的
法。
重写法不能抛出新的检查异常或者被重写法申明更加宽泛的异常。
重载(overloading) 是在个类⾥⾯法名字相同,参数不同。返回类型可以相同也可以 不同。
每个重载的法(或者构造函数)都必须有个独⼀⽆⼆的参数类型列表。