1,常见的异常类有哪些?
NullPointerException 空指针异常 • ClassNotFoundException 指定类不存在 • NumberFormatException 字符串转换为数字异常 • IndexOutOfBoundsException 数组下标越界异常 • ClassCastException 数据类型转换异常 • FileNotFoundException 文件未找到异常 • NoSuchMethodException 方法不存在异常 • IOException IO 异常 • SocketException Socket 异常
2,线程都有哪些状态?
• NEW 尚未启动 • RUNNABLE 正在执行中 • BLOCKED 阻塞的(被同步锁或者IO锁阻塞) • WAITING 永久等待状态 • TIMED_WAITING 等待指定的时间重新被唤醒的状态 • TERMINATED 执行完成
3,List、Set、Map 之间的区别是什么?
List、Set、Map 的区别主要体现在两个方面:元素是否有序、是否允许元素重复。
三者之间的区别,如下表:
4,什么是双亲委派模型?
在介绍双亲委派模型之前先说下类加载器。对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立在 JVM 中的唯一性,每一个类加载器,都有一个独立的类名称空间。类加载器就是根据指定全限定名称将 class 文件加载到 JVM 内存,然后再转化为 class 对象。 类加载器分类: • 启动类加载器(Bootstrap ClassLoader),是虚拟机自身的一部分,用来加载Java_HOME/lib/目录中的,或者被 -Xbootclasspath 参数所指定的路径中并且被虚拟机识别的类库; • 其他类加载器: • 扩展类加载器(Extension ClassLoader):负责加载\lib\ext目录或Java. ext. dirs系统变量指定的路径中的所有类库; • 应用程序类加载器(Application ClassLoader)。负责加载用户类路径(classpath)上的指定类库,我们可以直接使用这个类加载器。一般情况,如果我们没有自定义类加载器默认就是用这个加载器。 双亲委派模型:如果一个类加载器收到了类加载的请求,它首先不会自己去加载这个类,而是把这个请求委派给父类加载器去完成,每一层的类加载器都是如此,这样所有的加载请求都会被传送到顶层的启动类加载器中,只有当父加载无法完成加载请求(它的搜索范围中没找到所需的类)时,子加载器才会尝试去加载类。