「8」进大厂必须掌握的面试题-Java面试-异常和线程( 二 )


Q10 。 什么是finally块?有没有什么情况下最终将不会执行?最终块是始终执行一组语句的块 。 它始终与try块相关联 , 无论是否发生任何异常 。是的 , 如果程序通过调用System.exit()或导致致命错误(导致进程中止)退出 , 则最终将不会执行 。
Q11 。 什么是同步?同步是指多线程 。 同步的代码块一次只能由一个线程执行 。 由于Java支持执行多个线程 , 因此两个或多个线程可以访问相同的字段或对象 。 同步是使所有并发线程在执行中保持同步的过程 。 同步避免了由于共享内存视图不一致而导致的内存一致性错误 。 当一个方法被声明为已同步时 , 线程将保持该方法对象的监视器 。 如果另一个线程正在执行同步方法 , 则该线程将被阻塞 , 直到该线程释放监视器 。
「8」进大厂必须掌握的面试题-Java面试-异常和线程文章插图
Q12 。 我们可以在单个try块下写入多个catch块吗?是的 , 我们可以在单个try块下包含多个catch块 , 但是方法应从特定到一般 。 让我们通过一个编程示例来理解这一点 。
public class Example {public static void main(String args[]) {try {int a[] = new int[10];a[10] = 10 / 0;} catch (ArithmeticException e) {System.out.println("Arithmetic exception in first catch block");} catch (ArrayIndexOutOfBoundsException e) {System.out.println("Array index out of bounds in second catch block");} catch (Exception e) {System.out.println("Any exception in third catch block");}}}Q13 。 Java异常类的重要方法有哪些?方法在基类Throwable中定义 。 Java异常类的一些重要方法如下所述 。

  1. String getMessage() –此方法返回有关异常的消息String 。 可以通过其构造函数提供消息 。
  2. public StackTraceElement [] getStackTrace()–此方法返回一个数组 , 其中包含堆栈跟踪中的每个元素 。 索引0处的元素表示调用堆栈的顶部 , 而数组中的最后一个元素表示调用堆栈底部的方法 。
  3. 同步的Throwable getCause() –此方法返回Throwable对象表示的异常原因或null ID 。
  4. String toString() –此方法以String格式返回信息 。 返回的字符串包含Throwable类的名称和本地化消息 。
  5. void printStackTrace() –此方法将堆栈跟踪信息打印到标准错误流 。
Q14 。 什么是Java中的OutOfMemoryError?OutOfMemoryError是java.lang.Error的子类 , 通常在我们的JVM内存不足时发生 。
Q15 。 什么是线程?线程是可以由调度程序独立执行的最小编程指令 。 在Java中 , 所有程序都将至少具有一个线程 , 该线程称为主线程 。 当程序开始执行时 , 此主线程由JVM创建 。 主线程用于调用程序的main() 。
Q16 。 创建线程的两种方法是什么?在Java中 , 可以通过以下两种方式创建线程:
  • 通过实现Runnable接口 。
  • 通过扩展线程
Q17 。 Java中有哪些不同类型的垃圾收集器?Java中的垃圾收集程序 , 可以帮助进行隐式内存管理 。 由于在Java中 , 可以使用new关键字动态创建对象 , 一旦创建对象 , 该对象将消耗一些内存 。 一旦工作完成 , 并且不再有对象的引用 , 使用垃圾回收的Java将破坏该对象并释放其占用的内存 。 Java提供了四种类型的垃圾收集器:
  • 串行垃圾收集器
  • 并行垃圾收集器
  • CMS垃圾收集器
  • G1垃圾收集器 欢迎关注 Java架构师社区公众号. 本文转载自Java架构师必看 ,更多内容点击查看!