1.如何实现一个IOC容器?
1.创建一个配置文件配置扫描包路径
2.递归扫描包路径的所有class文件
3.反射,确定需要交给IOC管理的类
4.把需要注入的进行依赖注入
2.什么是字节码?他的好处
编译程序通过编译器生成虚拟机能够识别的代码
字节码解决了传统解释型语言执行效率低的问题,由于字节码并不专于某一特定机器,所以它可以一次编译便可以在多种不同的机器上运行。
3.java类加载器 ,双亲委派模型
一共有三种:根类加载器:bootstarpClassLoader
扩展类加载器:ExtClassLoader
系统类加载器:AppClassLoader
向上查找缓存,向下查找加载路径。
类加载
的过程:加载——》连接(验证、准备、解析)-》初始化
4.java的异常体系
error:程序无法修复的问题,一般出现这种问题,程序会被迫停止
Exception:程序不会停止,分为两种:RuntimeException运行时异常,CheckedException检查异常,运行时异常一般发生在程序运行时出现异常,检查异常一般发生在出现编译时出现异常
5.GC如何判断对象可回收
引用计数法:每个对象都有一个引用计数属性,新增一个引用计数加1,释放一个引用计数减一,计数为0时回收
可达性分析法:从GC roots 开始向下搜索,探索所走的路径为引用链,当一个对象到GC root没有任何引用链时,则证明该对象不可用,就会被虚拟机回收。