
一、HashMap和HashTable的区别?底层实现是什么?
区别:
(1) HashMap方法没有synchronized修饰,线程非安全,HashTable线程安全;
(2) HashMap允许key和value为null,而HashTable不允许
HashMap底层:数组+链表实现
ConcurrentHashMap锁一个segment(段)
二、如何实现一个IOC容器
1、配置文件配置包扫描路径
2、递归包扫描获取.class文件
3、反射、确定需要交给IOC管理的类
4、对需要注入的类进行依赖注入
三、Java类加载器有哪些
JDK自带有三个类加载器: bootstrap ClassLoader、ExtClassLoader、AppClassLoader。
BootStrapClassLoader是ExtClassLoader的父类加载器,默认负责加载%JAVA_HOME%lib 下的jar包和class文件。
ExtClassLoader是AppClassLoader的父类加载器,负责加载%)AVA_HOME%/lib/ext文件夹下的jiar包和class类。
AppClassLoader是白定义类加载器的父类,负责加载classpath下的类文件。系统类加载器、线程上下文加载器。
继承ClassLoader实现自定义类加载器
四、双亲委派模型
向上查找缓存,向下加载路径
好处:主要是为了安全性,避免用户自己编写的类动态替换Java的一些核心类,比如String。
同时也避免了类的重复加载,因为JVM中区分不同类,不仅仅是根据类名,相同的class文件被不同的ClassLoader加载就是不同的两个类
五、Java中的异常体系
Java中的所有异常都来自顶级父类Throwable。Throwable下有两个子类Exception和Error。
Error是程序无法处理的错读,—旦出现这个错误,则程序将被迫停止运行。例如OOM(内存溢出)。
Exception不会导致程序停止,又分为两个部分RunTimeException运行时异常CheckedException检查异常。RunTimeException常常发生在程序运行过程中,会导致程序当前线程执行失败。CheckedException常常发生在程序编译过程中,会导致程序编译不通过。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)