关于java:Java面试简单说一下你对序列化和反序列化的理解

29次阅读

共计 951 个字符,预计需要花费 3 分钟才能阅读完成。

Hi,大家好,我是 Mic

一个工作 4 年的粉丝,投了很多简历

好不容易接到一个互联网公司的面试邀约。

在面试第一轮就被干掉了,起因是对支流互联网技术了解太浅了。

其中就有一个这样的问题:“简略说一下你对序列化和反序列化的了解”

上面看看普通人和高手的答复。

普通人:

序列化和反序列化就是说我要去把一个对象传输到网络上的其余的一个利用上一个状况下,就是我须要对这个对象做序列化。

而后想 Java 外面咱们能够,咱们须要对这个对象的序列化的话,咱们须要去实现像 Serializable 这样一个接口吧。

高手:

好的,对于这个问题,我须要从几个方面来答复。

首先,我认为,之所以须要序列化,外围目标是为了解决网络通信之间的对象传输问题。

也就是说,如何把以后 JVM 过程外面的一个对象,跨网络传输到另外一个 JVM 过程外面。

而序列化,就是把内存外面的对象转化为字节流,以便用来实现存储或者传输。

反序列化,就是依据从文件或者网络上获取到的对象的字节流,依据字节流外面保留的对象形容信息和状态。

从新构建一个新的对象。

其次呢,序列化的前提是保障通信单方对于对象的可识别性,所以很多时候,咱们会把对象先转化为通用的解析格局,

比方 json、xml 等。而后再把他们转化为数据流进行网络传输,从而实现跨平台和跨语言的可识别性。

最初,我再补充一下序列化抉择。

市面上开源的序列化技术十分多,比方 Json、Xml、Protobuf、Kyro、hessian 等等。

那在理论利用外面,哪种序列化最合适,我认为有几个关键因素。

  • 序列化之后的数据大小,因为数据大小会影响传输性能
  • 序列化的性能,序列化耗时较长会影响业务的性能
  • 是否反对跨平台和跨语言
  • 技术的成熟度,越成熟的计划应用的公司越多,也就越稳固。

以上就是我对这个问题的了解!

总结

序列化这个问题,面试问得也比拟多

再深刻一点,还会问到序列化的算法和原理。

在理论开发中,序列化技术的抉择对于性能的影响也是比拟大的。

因而互联网公司对这方面的考查会比拟多一些。

喜爱我作品的小伙伴,记得点赞珍藏加关注。

版权申明:本博客所有文章除特地申明外,均采纳 CC BY-NC-SA 4.0 许可协定。转载请注明来自 Mic 带你学架构
如果本篇文章对您有帮忙,还请帮忙点个关注和赞,您的保持是我一直创作的能源。欢送关注同名微信公众号获取更多技术干货!

正文完
 0