经常被问的典型面试问题

1. 阻塞IO与非阻塞IO, 同步和异步IO各自是什么?

  • 阻塞IO,IO操作被用户调用的时候不会立即产生结果。而是进行IO过程,完成之后才会返回结果。
  • 非阻塞IO,被用户调用后,IO过程而是立即返回一个值。
  • 阻塞和非阻塞的重点区别作为一个IO操作,会不会立即给调用者返回一个结果。
  • 同步IO,作为用户线程,调用IO之后必须等待结果,没结果就不干别的事。
  • 异步IO,作为用户线程,我调用IO之后可以继续干其他的事情。
  • 根据Linux网络编程,从操作系统层面来说,IO过程分为准备数据,以及将数据从内核态拷贝到用户态两个过程,只有第五种才能做到真正异步。
  1. 1)阻塞I/O(blocking I/O)
  2. 2)非阻塞I/O (nonblocking I/O)
    1. I/O复用(select 和poll) (I/O multiplexing)
  3. 4)信号驱动I/O (signal driven I/O (SIGIO))
  4. 5)异步I/O (asynchronous I/O (the POSIX aio_functions))

2. Java 的IO框架

字符流和字节流

NIO , Mina,Netty 框架

3. Spring 托管 Bean 对象工厂的初始化问题

  • 上下文,比如ApplicationContext 是一个 BeanFactory, 里面维护着 BeanDefinition 。
  • 懒加载,如果不设置那么初始化Context 的时候就会实例化Bean对象,如果lazy-init 设置了true那么只有当对象被使用到的时候才会实例化。
  • 循环依赖问题,如果Bean1对象持有Bean2 , Bean2 又持有Bean 1属性,那么能够正常实例化吗,实际上能。因为初始化的过程中,类的实例化和属性的赋值是分布进行的。

4. 双亲委派机制有什么好处

你可能感兴趣的:(经常被问的典型面试问题)