面试题归纳总结:

1、ThreadLocal有什么缺陷?如果是线程池里的线程用ThreadLocal会有什么问题?
答案:
threadlocal 实现原理是:map>可以避免出现资源竞争从而导致效率低下。
threadlocalmap (自定义实现,没map)entry===extends WeakReference 既继承了弱引用,当threadlocal不再引用时且jvm进行GC时就会回收对应的entry,同时当threadlocal.set(value)或thread local.get()或remove时,都会回收不再使用的entry。
缺陷:threadlocal线程还存活,但是引用了大的对象,该对象无法被清除,会引起OOM。closablethreadlocal解决了该问题。
线程池里用threadlocal要注意线程会被复用,当线程结束时,记得清楚该thradlocal避免用了上一个线程的value。
2、.类的加载机制,为什么要用双亲委托?如何打破双亲委托加载机制
bootstrap classloader、ext classloader、system classloader
第一次破坏:重写loadclass方法
第二次破坏:线程上下文加载器(重点)getcontextclassloader 核心类调用基础类加载应用代码
第三次破坏:osgi实现模块化热部署
3、poll和epoll机制。
4、minor、major、full gc
5、IO流的层次结构
6、常用的异常类型:
答案:Throwable-》Error,IOexception、RuntimeException。
算数异常、类转换异常、非法参数异常、越界异常、空指针异常、安全异常;
7、fileinputstream没有close怎么重新读文件?
答案:反射机制调用fileinputstream类下面的open0方法,setaccissble(true).
8 、Spring的加载过程
9、try-catch的语法糖?
10、atomic 与 volatile的区别?
11、Thread的 notify()给notifyAll()的区别?
12、shutdown和shutdownnow的区别?
13、hashmap深入理解?
答案:关键字:resize()、hashcode/equals;需要深入看一下hashmap全家桶
https://github.com/crossoverJie/Java-Interview
14、一堆基本有序的数组,归并排序效率最高。
15、双亲委派模型的优点?
答案:双亲委派模型保证了类在各种加载环境中的加载顺序,保证了加载安全性,防止不可信类扮演可信类。
16、几个线程访问同一个对象,怎么能保证安全?
17、happen-before原则?
18、jdk动态代理和cglib实现的区别?
19、你将如何使用thread dump?你将如何分析Thread dump?
kill -3
20、微信红包怎么实现?(临时准备吧)
21、秒杀架构实现?(跟微信红包一样重要)
22、线程安全的定义?
23、红黑树学习一下?
24、集合类手撕?(临时准备可以)
25、

你可能感兴趣的:(面试题归纳总结:)