java面试整理(一)

  整理些面试题,以备面试会遇到。

1、重载和重写的区别?

  重载:发生在同一个类中,方法名相同,形式参数类型不同,和返回值类型无关,和修饰符列表无关。

  重写:发生在不同的类中,方法名相同,形式参数类型相同,返回值小于等于父类 ,修饰符大于等于父类。

  形式参数类型指参数类型、参数个数、参数顺序。

2、String、StringBuffer和StringBuilder区别?

  String:不可变字符串。

  StringBuffer:可变字符串,效率较低,线程安全。

  StringBuilder:可变字符串,效率较高,线程不安全。

3、抽象类和接口区别?

  抽象类:可以有抽象方法和实现方法,

      一个类只能继承一个抽象类,实现时可以有选择地重写需要用到的方法,

      is a关系,比如空调是制冷机,并具有加热功能。所以空调需继承制冷机类。

      接口:只能有抽象方法,

      一个类能实现多个接口,实现接口时一定要实现接口里定义的所有方法,

      like a关系,比如空调是制冷机,并具有加热功能。所以空调需实现加热接口。

4、BIO、NIO、AIO 有什么区别?

  BIO:同步阻塞,使用那个经典的烧开水例子,有一排水壶在烧开水,BIO模式是一个线程停留在一个水壶那,直到这个水壶烧开,才去处理下一个水壶。

  NIO:同步非阻塞,如果还拿烧开水来说,NIO的做法是叫一个线程不断的轮询每个水壶的状态,当检测到有某个水壶的状态发生了改变,从而进行下一步的操作。

  AIO:异步非阻塞,对应到烧开水中就是,为每个水壶上面装了一个开关,水烧开之后,水壶会自动通知我水烧开了。

  简而言之,同步和异步最关键的区别在于同步必须等待(BIO)或者主动的去询问(NIO)IO是否完成,而异步(AIO)操作提交后只需等待操作系统的通知即可。

      

 

上一篇:近期分享:BIO 与 NIO 的实质区别到底是什么?


下一篇:JavaSE:NIO - 缓冲区的常用方法 & Buffer中的变量(一)