Java IO 和 NIO基础知识

IO 是 Java 面试中一个非常重要的点。你应该很好掌握 Java IO,NIO,NIO2 以及与操作系统,磁盘 IO 相关的基础知识。下面是 Java IO 中经常问的问题。

66)在我 Java 程序中,我有三个 socket,我需要多少个线程来处理?

67)Java 中怎么创建 ByteBuffer?

ByteBuffer bb = ByteBuffer.wrap(new byte[12]);

ByteBuffer buf = ByteBuffer.allocateDirect(10) ;

68)Java 中,怎么读写 ByteBuffer ?

put,get

69)Java 采用的是大端还是小端?

java由于虚拟机的关系,屏蔽了大小端问题,需要知道的话可用 ByteOrder.nativeOrder() 查询。在操作ByteBuffer中,也可以使用 ByteBuffer.order() 进行设置,ByteBuffer存储字节次序默认为大端模式。

70)ByteBuffer 中的字节序是什么?

JAVA虚拟机中多字节类型数据的存放顺序,JAVA字节序也是BIG-ENDIAN。

71)Java 中,直接缓冲区与非直接缓冲器有什么区别?(答案)

非直接缓冲区:通过allocate()分配缓冲区,将缓冲区建立在JVM的内存中
直接缓冲区:通过allocateDirect()分配直接缓冲区,将缓冲区建立在物理内存中,可以提高效率。

72)Java 中的内存映射缓存区是什么?(answer答案)

内存映射文件和之前说的 标准IO操作最大的不同之处就在于它虽然最终也是要从磁盘读取数据,但是它并不需要将数据读取到OS内核缓冲区,而是直接将进程的用户私有地址空间中的一部分区域与文件对象建立起映射关系,就好像直接从内存中读、写文件一样,速度当然快了。

 java中提供了3种内存映射模式,即:只读(readonly)、读写(read_write)、专用(private) 。

73)socket 选项 TCP NO DELAY 是指什么?

Socket编程模型会有一个预留接口来禁用Nigle算法,这个接口就是TCP NODELAY。 

74)TCP 协议与 UDP 协议有什么区别?(answer答案)

75)Java 中,ByteBuffer 与 StringBuffer有什么区别?(答案)

ByteBuffer 是java NIO中的buffer

分享自:

最近5年183个Java面试问题列表及答案[最全]

你可能感兴趣的:(java)