![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
IO面试题
IO相关面试题
Mr.Aholic
全栈开发工程师 主java后端。喜欢旅游,已经旅游的城市地点:河南老家、广州、佛山、深圳、上海、山西、长沙、张家界、武汉、新疆-乌鲁木齐、新疆-吐鲁番、云南-昆明,郑州等。备考明年的 高级系统分析师 和 系统架构师【2022届毕业生---软件工程专业】
展开
-
【IO面试题 七】、 如果不用JSON工具,该如何实现对实体类的序列化?
主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。可以使用其他的一些第三方类库,比如Protobuf、Thrift、Avro等。可以使用Java原生的序列化机制,但是效率比较低一些,适合小项目;原创 2023-10-28 21:41:52 · 59 阅读 · 0 评论 -
【IO面试题 六】、 除了Java自带的序列化之外,你还了解哪些序列化工具?
对于不同版本的Schema,在进行RPC调用的时候,服务端和客户端可以在握手阶段对Schema进行互相确认,大大提高了最终的数据解析速度。相对于JSON和XML而言,Thrift在空间开销和解析性能上有了比较大的提升,对于对性能要求比较高的分布式系统,它是一个优秀的RPC解决方案。JSON:目前使用比较频繁的格式化数据工具,简单直观,可读性好,有jackson,gson,fastjson等等,比较优秀的JSON解析工具的表现还是比较好的,有些json解析工具甚至速度超过了一些二进制的序列化方式。原创 2023-10-28 21:40:38 · 46 阅读 · 0 评论 -
【IO面试题 五】、 Serializable接口为什么需要定义serialVersionUID变量?
serialVersionUID代表序列化的版本,通过定义类的序列化版本,在反序列化时,只要对象中所存的版本和当前类的版本一致,就允许做恢复数据的操作,否则将会抛出序列化版本不一致的错误。在第3步恢复数据的时候,当前的类已经和序列化的数据的格式产生了冲突,可能会发生各种意想不到的问题。增加了序列化版本之后,在这种情况下则可以抛出异常,以提示这种矛盾的存在,提高数据的安全性。有兴趣的可以关注一下。3、反序列化该类的实例,即从磁盘上恢复修改之前保存的数据。1、创建该类的实例,并将这个实例序列化,保存在磁盘上;原创 2023-10-28 21:39:16 · 101 阅读 · 0 评论 -
【IO面试题 四】、介绍一下Java的序列化与反序列化
在反序列化时需要调用ObjectInputStream对象的readObject()方法,将对象序列恢复为对象。其中,对象的序列化(Serialize),是指将一个Java对象写入IO流中,对象的反序列化(Deserialize),则是指从IO流中恢复该Java对象。若对象要支持序列化机制,则它的类需要实现Serializable接口,该接口是一个标记接口,它没有提供任何方法,只是标明该类是可以序列化的,Java的很多类已经实现了Serializable接口,如包装类、String、Date等。原创 2023-10-28 21:36:51 · 149 阅读 · 0 评论 -
【IO面试题 三】、说说NIO的实现原理
这些Buffer覆盖了你能通过IO发送的基本数据类型,即byte、short、int、long、float、double、char。基本上,所有的IO在NIO中都从一个Channel开始,数据可以从Channel读到Buffer中,也可以从Buffer写到Channel中。Buffer对象包含三个重要的属性,分别是capacity、position、limit,其中position和limit的含义取决于Buffer处在读模式还是写模式。但不管Buffer处在什么模式,capacity的含义总是一样的。原创 2023-10-28 21:35:45 · 72 阅读 · 0 评论 -
【IO面试题 二】、怎么用流打开一个大文件?
使用缓冲输入流时,它每次会读取一批数据将缓冲区填满,每次调用读取方法并不是直接从设备取值,而是从缓冲区取值,当缓冲区为空时,它会再一次读取数据,将缓冲区填满。使用缓冲输出流时,每次调用写入方法并不是直接写入到设备,而是写入缓冲区,当缓冲区填满时它会自动刷入设备。NIO采用内存映射文件的方式来处理输入/输出,NIO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件了(这种方式模拟了操作系统上的虚拟内存的概念),通过这种方式来进行输入/输出比传统的输入/输出要快得多。有兴趣的可以关注一下。原创 2023-10-27 08:50:27 · 96 阅读 · 0 评论 -
【IO面试题 一】、介绍一下Java中的IO流
IO(Input Output)用于实现对数据的输入与输出操作,Java把不同的输入/输出源(键盘、文件、网络等)抽象表述为流(Stream)。按照处理功能,可以将流分为节点流和处理流,其中节点流可以直接从/向一个特定的IO设备(磁盘、网络等)读/写数据,也称为低级流,而处理流是对节点流的连接或封装,用于简化数据读/写功能或提高效率,也称为高级流。红色字体的是节点流,蓝色字体的是处理流。按照数据类型,可以将流分为字节流和字符流,其中字节流操作的数据单元是8位的字节,而字符流操作的数据单元是16位的字符。原创 2023-10-27 08:44:48 · 172 阅读 · 0 评论