java基础面试题(四)附答案

java基础面试题(四)附答案

  1. 说一下你如何理解java的异常体系?

    1. Throw类是java中的异常类,是所有异常类的父类;

      ​ 其中包含Exception和Error两大部分

      • Error类是指程序以为网络错误,内存不足、栈溢出或JVM一些其它的问题而导致程序中断,是不可以修复的异常,在开发中是需要处理;
      • Exception类是异常类,是输入根据逻辑错误或者输入的其他错误输入而导致的异常,次异常是可以处理的,需要程序员的预判进行代码的处理。
  2. 什么是检查型异常和非检查型异常?

    1. 继承RunTimeException异常类的都是非检查型异常
    2. 继承Exception类的类都是检查型异常。
  3. 如果在try/catch中出现return语句,会执行finally中的语句吗?

    会,先执行之前的return语句,将数据保存起来,然后执行finally语句块的代码,再此对return返回的数据不会改变,执行完之后,返回数据。

  4. 什么是CopyOnWriteArrayList?底层实现?有什么优缺点?

    1. ConcurrentHashMap是java并发包的安全的容器,是兼与线程安全和高效率的集合,底层是实现类使用ReentrankLock锁所控制,而实现的线程安全的集合;

    2. 进行修改、删除、添加数据时会复制一个新的数组进行操作,在改变数据完成以后在覆盖旧数组的内容。

    3. 优点是再进行修改、删除、添加不会有线程安全,支持并发读操作,效率比较高,免除了获取锁和释放锁的操作,适合在多读少写的环境下使用;

      缺点

      ​ 该数组站空间内存比较大,因为在修改、删除、添加操作时需要进行数据的复制到新的数组;

      ​ 不支持数据的实时一致性,只支持最终一致性,因为读查看的数组是旧数组,而改变的是新数组,并发读写。

  5. 为什么CopyOnWriteArrayList要比Vector并发安全且性能好?

    Vector集合下的方法都是使用