java面试题 --- IO

这篇具有很好参考价值的文章主要介绍了java面试题 --- IO。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. IO流的分类有哪些?

  • 按照流向分为输入流和输出流;
  • 按照实现功能分为节点流和处理流。节点就是从一个特定的地方读写数据,包括数组操作,管道操作和文件操作;处理流对已存在的流进行封装和处理,包括缓冲操作,打印操作和转化操作等;
  • 按照处理数据的单位分为字节流和字符流

2. 为什么有字节流还要有字符流?

  • 字节流是 java 用来 ASCII 字符文件的,但 java 也支持其他字符,比如 unicode,为了方便操作字符且不会乱码,就提供了字符流。

3. 什么是 java 序列化?

  • 将对象进行流化,对流化后的对象进行读写操作或者网络传输。要序列化的对象必须实现 Serializable 接口。

4. 对象序列化的过程是什么?

  • 用输出流构造一个 ObjectOutputStream 对象,然后调用其 writeObject(Object obj) 方法即可将对象转化成流,反序列化就是用输入流。

5. 如何克隆对象?

  • 重写 Object 的 clone 方法;
  • 通过序列化和反序列化克隆。

6. BIO、NIO 和 AIO 有什么区别?

  • BIO 是同步阻塞 IO,并发性不好;
  • NIO 是同步非阻塞 IO,JDK1.4 开始引入,基于通道和缓冲区操作,实现了 IO 多路复用;
  • AIO 是异步非阻塞 IO,并发性很好,基于事件和回调机制,目前还未广泛使用。

7. 说说你对 NIO 的认识? NIO 的核心就是缓冲区(Buffer)、通道(Channel)和选择器(Selector)。 (1). 缓冲区(Buffer)就是用来存储数据的,八种基本类型只有 Boolean 类型没有提供对应的缓冲区。

  • 核心属性:capacity,缓冲区的容量;limit,界线,缓冲区可用区域和已用区域的分界线;position,当前的位置。
  • 核心方法:allocate,分配缓冲区;put,往缓冲区写数据;get,从缓冲区读数据;

(2). 通道(Channel)就是源位置与目标位置之间打开的连接,数据传输的通路。

  • 核心实现类:FileChannel,操作文件的通道;DatagramChannel,通过 UDP 读取网络数据的通道;SocketChannel,通过 TCP 读取网络数据的通道;ServerSocketChannel,监听 TCP 连接的通道。
  • 核心方法:transferTo/transferFrom,通道间的数据传输;write,将缓冲区数据写入通道;read,把通道数据读取到缓冲区。

(3). 选择器用于IO多路复用,将channel都注册到选择器上,它会监听哪些通道有事件发生,然后进行处理。

8. 知道零拷贝吗?文章来源地址https://www.toymoban.com/news/detail-499712.html

  • 首先普通拷贝的过程是,源文件先经过 DMA 拷贝到内核 buffer,然后通过 CPU 拷贝到用户 buffer,接着再通过 CPU 拷贝到 socket buffer,最后通过 DMA 拷贝到协议栈。这里经过了四次拷贝,并且伴随着三次用户态的转换,用户态转为内核态,再转为用户态,最后又转为内核态。
  • 零拷贝不是不拷贝,是可以不经过用户 buffer,直接从内核 buffer 通过 CPU 拷贝到 socket buffer,且这里拷贝的内容非常少,只拷贝长度、偏移量等信息。通过 linux 的 sendFile 函数即可实现零拷贝。java NIO 中的 transferFrom/transferTo 方法就通过 sendFile 函数实现了零拷贝。

到了这里,关于java面试题 --- IO的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++类和对象】类有哪些默认成员函数呢?(下)

    ヾ(๑╹◡╹)ノ\\\" 人总要为过去的懒惰而付出代价 ヾ(๑╹◡╹)ノ\\\" 如果一个类中什么成员都没有,简称为空类。 空类中并不是什么都没有,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。 ​​​​​​​​ 默认成员函数:用户没有显式实现,编译器会生成

    2024年02月12日
    浏览(50)
  • 【Java高级语法】(九)IO流:肝了三天三夜,我打赌没有比我这边更细的探索Java I\O流的文章了~

    在Java中,IO(输入输出)操作是进行数据交互的重要方式之一。本文将详细介绍Java中的IO流的各个方面,包括输入流和输出流、字节流和字符流、文件读写、缓冲、序列化以及常见的IO异常处理等知识点。 图1 IO流体系结构 按照数据流向,Java中的IO流可分为两种类型:输入流

    2024年02月11日
    浏览(36)
  • 【Java基础教程】(四十四)IO篇 · 上:File类、字节流与字符流,分析字节输出流、字节输入流、字符输出流和字符输入流的区别~

    掌握 java.io包中类的继承关系 ; 掌握 File类的使用,并且可以通过File类进行文件的创建、删除以及文件夹的列表等操作; 掌握字节流或字符流操作文件内容,字节流与字符流的区别; 在 java.io 包中,如果要进行文件自身的操作 (例如:创建、删除等), 只能依靠 java.io.File 类完

    2024年02月15日
    浏览(35)
  • IO流的讲解(4)

    目录 转换流 基本介绍 应用案例1 应用案例2 打印流 演示PrintStream (字节打印流/输出流) 演示 PrintWriter 使用方式 Properties类 Properties基本介绍 应用案例 本章习题 第一题 第二题 第三题 基本介绍 Java中的转换流是用来处理字符和字节之间转换的流。转换流在字节输入流和字节

    2024年02月06日
    浏览(37)
  • IO流——流的概述和分类

    1.IO流的分类 流的不同:输入流、输出流。 处理单位的不同:字节流、字符流。 流的角色不同:节点流、处理流。 2.基础IO流的框架 抽象基类 4个节点流(也称为文件流) InputStream FileInputStream OutputStream FileOutputStream Reader FileReader Writer FileWriter 3.FileReader FileWriter的使用 3.1执行

    2024年01月25日
    浏览(52)
  • p2 IO流原理及流的分类

    I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理数据传输。如读/写文件,网络通讯等。 Java程序中,对于数据的输入/输出操作以”流(stream)“的方式进行。 java.io包下提供了各种”流“类和接口,用以获取不同种类的数据,并通过方法输入或输出数据。 输入in

    2024年02月07日
    浏览(36)
  • 【C++】文件IO流及stringstream流的使用

    我们在OJ的时候经常会用到while(cin str),这里的流提取实际上是个阻塞操作,只要缓冲区还有数据就继续读,默认以空格或者换行结束,有空格说明是把两段字符串尾插到str。 那么它是怎么结束呢? 答案是输入 [Ctrl]-c 或者 [Ctrl]-z + 换行 。 [Ctrl]-c 是发送信号结束进程。 [Ctrl

    2023年04月27日
    浏览(40)
  • java面试常问,zookeeper常见面试题

    什么是 Spring Boot? 为什么要用 Spring Boot? Spring Boot 的核心配置文件有哪几个?它们的区别是什么? Spring Boot 的配置文件有哪几种格式?它们有什么区别? Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的? 开启 Spring Boot 特性有哪几种方式? Spring Boot 需要独立的容器

    2024年03月15日
    浏览(67)
  • java面试题 --- IO

    1. IO流的分类有哪些? 按照流向分为输入流和输出流; 按照实现功能分为节点流和处理流。节点就是从一个特定的地方读写数据,包括数组操作,管道操作和文件操作;处理流对已存在的流进行封装和处理,包括缓冲操作,打印操作和转化操作等; 按照处理数据的单位分为

    2024年02月10日
    浏览(43)
  • 每天几道Java面试题:IO流(第五天)

    友情提醒 背面试题很枯燥,加入一些戏剧场景故事人物来加深记忆。PS:点击文章目录可直接跳转到文章指定位置。 【衣衫褴褛老者,保洁阿姨,面试者老王】 衣衫褴褛老者:“可怜身上诺基亚,心忧Java Offer少” 老王:这位老人家有故事,“老人家, 1.Java中有几种类型的流

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包