java基础面试-2020

1、IO的执行状态

  • 硬盘——>内核
  • 内核——>用户进程

2、BIO、NIO、AIO区别

  • BIO:同步阻塞IO;NIO:同步非阻塞IO;AIO:异步非阻塞IO
  • BIO:JDK1.4之前就有;NIO:JDK1.4出的;AIO:JDK1.7出的
  • BIO:两阶段都阻塞,面向channel通道;NIO:第一阶段不阻塞,第二阶段阻塞,面向缓冲区;AIO:两阶段都不阻塞

3、BIO、NIO、AIO适用场景

  • BIO:适用于连接数目较小,并且一次发送大数据的场景,这种方式对服务器资源要求较高,并发局限于应用中
  • NIO:适用于连接数目多且连接比较短(轻操作)的架构,并发局限于应用中。比如聊天服务器
  • AIO:适用于连接数目多且连接比较长(重操作)的架构。比如相册服务器

4、Exception和Error的区别

  • Exception和Error都继承自Throwable,在Java中只有Throwable类型的实例才可以被抛出或捕获
  • Exception是程序正常运行中才可以预料的意外情况,可以捕获并处理
  • Error指正常情况下不太可能出现的情况,绝大部分的Error或导致程序崩溃,处于非正常的不可恢复状态,是程序中不应该捕获的严重问题,如:OOM

5、运行时异常和一般异常的区别

  • 运行时异常(受检查异常):在编译时被强制检查的异常,在方法生命中声明的异常
  • 一般异常(不受检查异常):不受检查异常是在编码中可以避免的逻辑错误,根据需求来判断如何处理,不需要在编译期强制要求

6、实现线程的几种方式

  • 继承Thread类,重写run方法
  • 实现Runnable接口,重写run方法。可以避免由于Java的单继承特性而带来的局限,适合多个线程类处理同一资源的情况
  • 实现Callable接口,重写call方法,有返回值,允许抛出异常
  • 使用线程池,减少创建线程的时间,重复利用线程池中线程,降低资源消耗,可有返回值

你可能感兴趣的:(java基础面试-2020)