Java常见面试题(三)
1、throw 和 throws 的区别?
- throw:真实抛出一个异常。
- throws:声明可能会抛出一个异常。
2、spring 常用的注入方式有哪些?
- setter 属性注入
- 构造方法注入
- 注解方式注入
3、JVM有哪些垃圾回收器?
- Serial
- Serial Old
- ParNew
- Parallel
- Parallel Old
- CMS
- G1
4、堆用来放什么?
对象实例数组
5、类加载分为几个步骤?
加载、验证、准备、解析、初始化。最后是使用和卸载6、如何判断一个对象是否存活?
引用计数法(循环引用问题)引用链法
7、给对象分配堆内存的方式有哪些?
如果堆内存规整,采用"指针碰撞";如果堆内存不规整,采用"空闲列表"
8、访问对象有哪些方式?
句柄直接指针
9、并发创建对象时,有什么处理策略?
1)同步处理2)本地线程分配缓冲区
10、出现线程安全问题的原因有哪些?
- 线程切换带来的原子性问题
- 缓存导致的可见性问题
- 编译优化带来的有序性问题