大家好,我是工作4年的Mic粉。投了很多简历,终于收到了一家互联网公司的面试邀请。我在第一轮面试就被杀了,因为我对主流互联网技术的理解太浅了。其中有这样一个问题:“简单说说你对序列化和反序列化的理解”。我们来看看普通人和专家的回答。普通人:序列化和反序列化是指我要将一个对象传递给网络上的另一个应用程序。在一种情况下,我需要序列化这个对象。然后认为我们可以用Java来完成。如果我们需要序列化这个对象,我们需要实现一个类似Serializable的接口。师:嗯,我要从几个方面来回答这个问题。首先,我认为序列化的核心目的是解决网络通信之间的对象传输问题。也就是说,如何将当前JVM进程中的一个对象通过网络传递给另一个JVM进程。序列化是将内存中的对象转换成字节流进行存储或传输。反序列化是基于从文件或网络中获取对象的字节流,根据字节流中存储的对象描述信息和状态。重建一个新对象。其次,序列化的前提是保证通信双方对象的可识别性,所以很多时候,我们会先把对象转换成通用的解析格式,比如json、xml等,然后再转换成数据流进行网络传输,从而实现跨平台、跨语言的可识别性。最后,我将再添加一个序列化选项。市面上开源的序列化技术有很多,比如Json、Xml、Protobuf、Kyro、hessian等。在实际应用中,哪种序列化最合适,我认为有几个关键因素。序列化后数据的大小,因为数据的大小会影响传输性能的序列化性能,序列化时间长会影响业务的性能。是否支持跨平台、跨语言技术的成熟度,越成熟的解决方案,使用的公司就越多。越多越稳定。以上是我对这个问题的理解!总结一下连载的问题,面试题比较多,深一点的,也会问连载的算法和原理。在实际开发中,序列化技术的选择对性能有比较大的影响。因此,互联网公司会更多地研究这方面。喜欢我作品的朋友记得点赞收藏关注哦。版权声明:除特别声明外,本博客所有文章均采用CCBY-NC-SA4.0许可协议。转载请注明来自Mic带你学建筑!如果本文对您有帮助,请给个关注和点赞。您的坚持是我不断创作的动力。欢迎关注同名微信公众号获取更多技术干货!
