实时与协同架构面试题
模拟真实面试场景,训练对实时通信、长连接治理、协同编辑的理解与表达。
一、基础题
1. WebSocket 和 SSE 有什么区别?分别适用什么场景?基础
2. 如何设计 WebSocket 重连机制?基础
3. 什么是 CRDT?与 OT 有什么区别?基础
二、进阶题
4. WebSocket 集群如何实现跨节点广播?进阶
5. 实时系统的可观测性应关注哪些指标?进阶
三、高级题
6. 设计一个支持离线编辑的协同文档系统。深入
参考答案要点:
- 客户端使用 CRDT(如 Yjs)管理文档。
- 本地持久化操作日志。
- 联网后同步操作,CRDT 自动解决冲突。
- 服务端持久化操作历史,支持版本回溯。
- 设计心跳和同步确认机制。
评分维度:
- CRDT 选择(25%)
- 离线存储(25%)
- 同步机制(25%)
- 版本与可观测性(25%)
7. 设计一个百万级在线直播弹幕系统。深入
参考答案要点:
- WebSocket 网关集群 + 负载均衡。
- 消息队列削峰(Kafka/Pulsar)。
- 按房间分片,减少广播范围。
- 弹幕过滤、频率限制、合并相似内容。
- 多级缓存和降级策略。
- 实时监控连接数、消息延迟、丢包率。
评分维度:
- 接入层设计(25%)
- 消息流转(25%)
- 限流与降级(25%)
- 可观测性(25%)
8. CRDT 的核心数据结构有哪些?分别适用于什么场景?深入
9. OT 算法的核心原理是什么?如何处理并发冲突?深入
10. 如何设计 WebSocket 连接的认证和鉴权机制?深入
11. 如何设计协同编辑中的 Presence(在线状态和光标位置)系统?深入
12. WebRTC 的信令服务器如何设计?如何与 WebSocket 配合?深入
13. WebSocket 连接恢复策略如何设计?如何保证消息不丢失不重复?深入
14. 如何设计实时系统的消息排序和幂等性保证?深入
15. 如何实现实时系统中的背压(Backpressure)和流控?深入
16. 实时系统中的单元测试和压力测试如何实施?深入
17. 设计一个实时协作的白板系统架构。深入