Skip to content

实时与协同架构面试题

模拟真实面试场景,训练对实时通信、长连接治理、协同编辑的理解与表达。


一、基础题

1. WebSocket 和 SSE 有什么区别?分别适用什么场景?基础
2. 如何设计 WebSocket 重连机制?基础
3. 什么是 CRDT?与 OT 有什么区别?基础

二、进阶题

4. WebSocket 集群如何实现跨节点广播?进阶
5. 实时系统的可观测性应关注哪些指标?进阶

三、高级题

6. 设计一个支持离线编辑的协同文档系统。深入

参考答案要点

  1. 客户端使用 CRDT(如 Yjs)管理文档。
  2. 本地持久化操作日志。
  3. 联网后同步操作,CRDT 自动解决冲突。
  4. 服务端持久化操作历史,支持版本回溯。
  5. 设计心跳和同步确认机制。

评分维度

  • CRDT 选择(25%)
  • 离线存储(25%)
  • 同步机制(25%)
  • 版本与可观测性(25%)

7. 设计一个百万级在线直播弹幕系统。深入

参考答案要点

  1. WebSocket 网关集群 + 负载均衡。
  2. 消息队列削峰(Kafka/Pulsar)。
  3. 按房间分片,减少广播范围。
  4. 弹幕过滤、频率限制、合并相似内容。
  5. 多级缓存和降级策略。
  6. 实时监控连接数、消息延迟、丢包率。

评分维度

  • 接入层设计(25%)
  • 消息流转(25%)
  • 限流与降级(25%)
  • 可观测性(25%)

8. CRDT 的核心数据结构有哪些?分别适用于什么场景?深入
9. OT 算法的核心原理是什么?如何处理并发冲突?深入
10. 如何设计 WebSocket 连接的认证和鉴权机制?深入
11. 如何设计协同编辑中的 Presence(在线状态和光标位置)系统?深入
12. WebRTC 的信令服务器如何设计?如何与 WebSocket 配合?深入
13. WebSocket 连接恢复策略如何设计?如何保证消息不丢失不重复?深入
14. 如何设计实时系统的消息排序和幂等性保证?深入
15. 如何实现实时系统中的背压(Backpressure)和流控?深入
16. 实时系统中的单元测试和压力测试如何实施?深入
17. 设计一个实时协作的白板系统架构。深入

基于 MIT 协议发布