C#面试题更新 2026-08-03

请解释 .NET 平台中序列化与反序列化的基本概念,并说明开发者如何通过自定义机制来控制这一过程。

考察说明

考察对 .NET 序列化基础概念的理解以及自定义序列化的能力。

回答思路

  1. 【回答框架 1】序列化是将对象状态转换为可存储或传输的格式(如二进制、XML、JSON),反序列化是逆过程。.NET 中常用序列化器包括 BinaryFormatter(已过时)、JsonSerializer、XmlSerializer 和 DataContractSerializer,各自适用于不同场景。
  2. 【回答框架 2】自定义序列化可通过实现 ISerializable 接口(旧式)或使用序列化回调特性(如 OnSerializing、OnDeserialized)来精细控制。此外,可自定义序列化器(如实现 JsonConverter)以适配特定格式。
  3. 【回答框架 3】安全性是关键:反序列化不受信任数据可能引发漏洞,应避免使用 BinaryFormatter,优先使用 JsonSerializer 等现代方案,并验证输入数据。
  4. 【回答框架 4】性能方面,不同序列化器开销不同,BinaryFormatter 最慢且不安全,JsonSerializer 平衡性能与可读性,Protocol Buffers 等第三方库更高效,但需额外依赖。
  5. 【关键点 1】序列化将对象转为字节流或文本,反序列化恢复对象。
  6. 【关键点 2】实现 ISerializable 或使用序列化回调控制过程。
  7. 【关键点 3】BinaryFormatter 已标记过时且不安全,避免使用。
  8. 【关键点 4】JsonSerializer 是当前主流选择,支持自定义转换器。
  9. 【关键点 5】反序列化前应验证数据来源和完整性。
  10. 【易错点 1】混淆序列化与持久化,序列化不等于数据库存储。
  11. 【易错点 2】使用 BinaryFormatter 导致安全风险。
  12. 【易错点 3】忽略版本兼容性,导致反序列化失败。