Skip to content

面试速答(先看这里)

**一句话结论:**Java原生序列化:Java原生的序列化协议,可以序列化所有实现了Serializable接口的对象。

60秒标准回答:

Netty支持很多种序列化协议,基本上市面上常见的序列化协议他都支持的。如

Java原生序列化:Java原生的序列化协议,可以序列化所有实现了Serializable接口的对象。Java序列化虽然简单易用,但是序列化后的字节数较大,序列化性能较差,且不具备跨语言的能力,因此不太常用

JSON序列化:JSON是一种轻量级的数据交换格式,易于阅读和编写,同时也具备跨语言的能力,因此在分布式系统中广泛使用。Netty内置了多种JSON序列化库,包括Jackson、FastJSON等

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**Netty支持很多种序列化协议,基本上市面上常见的序列化协议他都支持的。
  • **要点2:**JSON序列化:JSON是一种轻量级的数据交换格式,易于阅读和编写,同时也具备跨语言的能力,因此在分布式系统中广泛使用。
  • **要点3:**XML序列化:XML也是一种常用的数据交换格式,可以用于跨语言的数据交换。
  • **要点4:**Protobuf序列化:Protobuf是Google开源的一种高效、灵活的二进制序列化协议,具有良好的跨语言能力和高效的序列化性能,被广泛应用于分布式系统中。
  • **要点5:**Thrift序列化:Thrift也是一种由Apache开源的二进制序列化协议,具有跨语言、高效等特点,被广泛应用于分布式系统中。

**记忆锚点:**Netty → Protobuf → Thrift → Java → JSON → XML

关键取舍:

  • Java序列化虽然简单易用,但是序列化后的字节数较大,序列化性能较差,且不具备跨语言的能力,因此不太常用。
  • Protobuf序列化:Protobuf是Google开源的一种高效、灵活的二进制序列化协议,具有良好的跨语言能力和高效的序列化性能,被广泛应用于分布式系统中。

追问准备:

  • 围绕「Netty」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「Protobuf」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「Thrift」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

Netty支持很多种序列化协议,基本上市面上常见的序列化协议他都支持的。如:

Java原生序列化:Java原生的序列化协议,可以序列化所有实现了Serializable接口的对象。Java序列化虽然简单易用,但是序列化后的字节数较大,序列化性能较差,且不具备跨语言的能力,因此不太常用。

JSON序列化:JSON是一种轻量级的数据交换格式,易于阅读和编写,同时也具备跨语言的能力,因此在分布式系统中广泛使用。Netty内置了多种JSON序列化库,包括Jackson、FastJSON等。

XML序列化:XML也是一种常用的数据交换格式,可以用于跨语言的数据交换。Netty内置了多种XML序列化库,包括JAXB、XStream等。

Protobuf序列化:Protobuf是Google开源的一种高效、灵活的二进制序列化协议,具有良好的跨语言能力和高效的序列化性能,被广泛应用于分布式系统中。Netty内置了对Protobuf的支持。

Thrift序列化:Thrift也是一种由Apache开源的二进制序列化协议,具有跨语言、高效等特点,被广泛应用于分布式系统中。Netty也提供了对Thrift的支持。