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方法,有返回值,允许抛出异常
  • 使用线程池,减少创建线程的时间,重复利用线程池中线程,降低资源消耗,可有返回值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Happy王子乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值