1、List和Set的区别
1)List中允许重复数据,Set中不允许重复数据
2)List中允许存储多个null值,Set只允许存储一个null值
3)List是有序的容器,保证了每一个容器的插入顺序,Set是无序的容器。
4)ArrayList底层实现是数组,获取指定位置的元素速度快,LinkedList底层实现是链表,插入和删除操作时速度快
5)HashSet中的元素是无序的,TreeSet中的元素是有序的,使用二叉树实现的
2、HashSet 是如何保证不重复的
当hashCode值相同,且Equal方法为true,则认为两个元素相同,则不存,hashCode不同,则存,hashCode相同,equal为false,则存
3、HashMap是线程安全的吗?
不是线程安全的,jdk1.7 并发情况下存在死循环,jdk1.8并发情况存在数据覆盖的情况
4、HashMap的扩容过程
非初始化扩容,容量变为原来的二倍,重新计算hash值,jdk1.7采用头插法将插入。
jdk1.8采用尾插法,当链表长度超过八时,将链表转化成红黑树
5、final finally finalize
final 用来修饰类,方法和变量,修饰类表示该类不能被继承,修饰方法表示该方法不能被重写,修饰变量表示该变量不能被重新赋值
finally用于try-catch代码块,表示无论是否发生异常,finally里的代码一定会被执行
finalize 是Object类的一个方法,该方法一般由垃圾回收器调用,当我们调用system.gc()时,垃圾回收器调用finalize()方法进行垃圾回收
6、强引用,软引用,弱引用,虚引用
https://blog.csdn.net/qq_39192827/article/details/85611873
7、Java反射
https://blog.csdn.net/weixin_42724467/article/details/84311385
8、Array.sort()和Collection.sort()的实现原理
https://blog.csdn.net/zhupanlinch/article/details/104832542?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
9、Collection.sort()内部调用的Array.sort()方法
10、LinkedHashMap的原理及应用
https://segmentfault.com/a/1190000012964859
11、cloneable接口实现原理
cloneable接口使一个类的实例能够将自身拷贝到另一个新的实例中,需要重写clone()实现拷贝功能
深拷贝:不仅拷贝对象本身,而且拷贝对象包含的引用指向的所有对象。
浅拷贝:仅仅拷贝对象本身
12、异常分类以及处理机制
https://blog.csdn.net/qq_42022528/article/details/80537120
13、wait和sleep的区别
sleep方法属于Thread类,wait方法数据Object类。
调用sleep方法,会使线程暂停执行指定的时间,让出cpu给其他线程,但是他的监控状态依然保持,当指定时间到了又会自动恢复运行状态,线程不会释放对象锁
调用wait方法,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify方法后本线程才进入对象锁定池准备。
sleep方法可以在任何地方使用,而wait只能在同步方法或者同步方法块中使用
14 synchronized 的实现原理以及锁优化?
https://www.cnblogs.com/xdyixia/p/9364247.html
https://www.jianshu.com/p/36eedeb3f912
15 Spring IOC 的理解,其初始化过程?
https://www.cnblogs.com/chenjunjie12321/p/6124649.html
------------恢复内容开始------------
1、List和Set的区别
1)List中允许重复数据,Set中不允许重复数据
2)List中允许存储多个null值,Set只允许存储一个null值
3)List是有序的容器,保证了每一个容器的插入顺序,Set是无序的容器。
4)ArrayList底层实现是数组,获取指定位置的元素速度快,LinkedList底层实现是链表,插入和删除操作时速度快
5)HashSet中的元素是无序的,TreeSet中的元素是有序的,使用二叉树实现的
2、HashSet 是如何保证不重复的
当hashCode值相同,且Equal方法为true,则认为两个元素相同,则不存,hashCode不同,则存,hashCode相同,equal为false,则存
3、HashMap是线程安全的吗?
不是线程安全的,jdk1.7 并发情况下存在死循环,jdk1.8并发情况存在数据覆盖的情况
4、HashMap的扩容过程
非初始化扩容,容量变为原来的二倍,重新计算hash值,jdk1.7采用头插法将插入。
jdk1.8采用尾插法,当链表长度超过八时,将链表转化成红黑树
5、final finally finalize
final 用来修饰类,方法和变量,修饰类表示该类不能被继承,修饰方法表示该方法不能被重写,修饰变量表示该变量不能被重新赋值
finally用于try-catch代码块,表示无论是否发生异常,finally里的代码一定会被执行
finalize 是Object类的一个方法,该方法一般由垃圾回收器调用,当我们调用system.gc()时,垃圾回收器调用finalize()方法进行垃圾回收
6、强引用,软引用,弱引用,虚引用
https://blog.csdn.net/qq_39192827/article/details/85611873
7、Java反射
https://blog.csdn.net/weixin_42724467/article/details/84311385
8、Array.sort()和Collection.sort()的实现原理
https://blog.csdn.net/zhupanlinch/article/details/104832542?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
9、Collection.sort()内部调用的Array.sort()方法
10、LinkedHashMap的原理及应用
https://segmentfault.com/a/1190000012964859
11、cloneable接口实现原理
cloneable接口使一个类的实例能够将自身拷贝到另一个新的实例中,需要重写clone()实现拷贝功能
深拷贝:不仅拷贝对象本身,而且拷贝对象包含的引用指向的所有对象。
浅拷贝:仅仅拷贝对象本身
12、异常分类以及处理机制
https://blog.csdn.net/qq_42022528/article/details/80537120
13、wait和sleep的区别
sleep方法属于Thread类,wait方法数据Object类。
调用sleep方法,会使线程暂停执行指定的时间,让出cpu给其他线程,但是他的监控状态依然保持,当指定时间到了又会自动恢复运行状态,线程不会释放对象锁
调用wait方法,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify方法后本线程才进入对象锁定池准备。
sleep方法可以在任何地方使用,而wait只能在同步方法或者同步方法块中使用
14 synchronized 的实现原理以及锁优化?
https://www.cnblogs.com/xdyixia/p/9364247.html
https://www.jianshu.com/p/36eedeb3f912
15 Spring IOC 的理解,其初始化过程?
https://www.cnblogs.com/chenjunjie12321/p/6124649.html
16 BeanFactory 和 FactoryBean?
https://www.cnblogs.com/cg961107/p/11261767.html
17 BeanFactory 和 ApplicationContext?
https://blog.csdn.net/pythias_/article/details/82752881
18 Spring Bean 的生命周期,如何被管理的?
https://www.cnblogs.com/Yanss/p/11725316.html
19 Spring Bean 的加载过程是怎样的?
https://www.jianshu.com/p/9ea61d204559
20如果要你实现Spring AOP,请问怎么实现?
https://blog.csdn.net/eson_15/article/details/91701582