实操任务与综合面试场景
WebSocket、消息队列与实时通信#Python全栈#第十六阶段#WebSocket、消息队列与实时通信#实操任务与综合面试场景约 2049 字 · 6 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
实操:实现带身份认证的班级 WebSocket 讨论接口。
追问 怎样完成连接、加入房间、消息校验、发言和退出清理?如何证明无权用户无法加入,客户端伪造发送者字段无法冒充他人?
实操:完成前端连接状态、自动重连和页面卸载清理。
追问 怎样验证网络短断、认证失效、主动关闭和页面反复进入?如何证明同一页面不会产生重复连接、重复监听及遗留定时器?
实操:为学习报告进度实现 SSE 推送与最终结果查询。
追问 事件类型、游标和保留时间怎样定义?断线后怎样补齐或重新获取快照,任务失败与权限失效怎样反馈?
实操:实现聊天消息保存、提交去重与断线补齐。
追问 怎样组织客户端提交标识、服务端事件标识和查询游标?如何模拟已保存但确认丢失,并验证重发与历史切换后没有漏记或重复显示?
实操:用 RabbitMQ 实现班级事件的两个独立下游订阅。
追问 站内通知保存与学习统计更新分别使用什么队列和绑定?每个服务增加两个消费者后,如何证明组内分工和服务之间广播符合预期?
实操:实现手动确认、有限重试、死信记录和消费幂等。
追问 怎样模拟无效输入、临时故障和“数据库提交后、ACK 前退出”?如何证明正常事件不被无限重试,重复投递不会重复增加学习积分?
实操:启动两个 WebSocket 实例,验证跨实例房间广播。
追问 让两个用户明确连接到不同实例,怎样记录事件分发路径?关闭订阅连接或重启实例后,怎样恢复并补齐关键消息?
进阶实操:使用 Redis Streams 完成消费组与 Pending 恢复。
追问 怎样停止一个消费者并认领其未确认消息?模拟原消费者只是处理较慢时,如何验证幂等;裁剪历史后怎样发现正文缺失?
场景:广播时延增加、进程内存上涨,部分用户收到重复或过期状态,怎样定位?
追问 慢连接队列、处理阻塞、跨实例重复分发、重试和状态版本怎样逐层检查?如何在隔离环境重现并用指标证明修复有效?
综合实操:为题库平台实现实时课堂讨论与站内通知模块。
追问 要求包含连接鉴权、班级订阅、消息保存与去重、断线恢复、跨实例分发、可靠消费及降级查询;怎样交付协议、权限矩阵、拓扑说明、启动步骤、观测指标与故障验证记录,并解释每个成功状态的含义?
面试评分参考
每题可按 0~3 分评价:
- 0 分: 无法解释核心流程,混淆连接与业务完成,或存在明显越权、消息处理和资源清理错误。
- 1 分: 能描述常见 API 与组件名称,完成正常路径,但缺少断线、重复、多实例和失败窗口的分析。
- 2 分: 能实现合理连接与消费流程,处理鉴权、重试、去重、清理及历史恢复,并验证主要业务结果。
- 3 分: 能明确交付与顺序边界,比较组件方案,分析并发和故障窗口,控制容量与降级,并提供可复现证据。
重点观察:
- 模型选择: 是否从交互方向、历史保留和可靠性需求选择协议与中间件,而不是为所有功能使用长连接。
- 生命周期管理: 是否清理连接、订阅、发送队列和定时器,处理取消、慢客户端及服务退出。
- 消息正确性: 是否区分传输、保存、投递和应用完成,设计合理标识、幂等、顺序范围与补齐流程。
- 可靠消费: 是否理解发布确认和消费确认的区别,识别数据库提交与确认之间的失败窗口,并控制重试和死信。
- 工程验证: 是否检查权限隔离、多实例广播、容量及可观测性,用真实断线和进程退出验证恢复行为。
使用建议: 分数用于课堂诊断和同组比较,不直接对应薪资或录用结论。优先完成单实例收发、鉴权、断线恢复和 RabbitMQ 基础消费;多实例协作、Streams 恢复和 Kafka 语义作为渐进训练,不以同时精通全部中间件作为基础岗位门槛。
课堂练习与组卷建议
- 基础口试: 通信模型 2 题、连接生命周期 3 题、消息协议 2 题、RabbitMQ 路由与确认 3 题,要求说明具体业务过程。
- 连接练习: 完成 91~92 题,至少使用两个账号验证权限、重连、重复连接防护和退出清理。
- 实时恢复练习: 从 93~94 题选 1 题,记录事件保存、连接中断、重新查询与界面应用的时间线;明确历史与实时切换方案。
- 队列练习: 完成 95~96 题,使用真实 Broker 与消费者;通过进程退出验证重复投递,通过数据库结果验证幂等,避免仅以模拟调用作为可靠性证据。
- 协作练习: 完成 97 题,让客户端连接不同实例;对比共用工作队列与独立订阅的效果,说明选择的分发模型。
- 进阶选修: 从 98 题或 Kafka 消费位置恢复中选 1 项,先注明版本、保留及确认配置,再验证异常恢复,不要求一轮课程搭建所有组件。
- 故障练习: 完成 99 题,使用隔离环境模拟慢客户端、订阅中断或消费阻塞,记录定位依据、修复前后指标与剩余边界。
- 模拟面试: 基础题 4 题、流程分析 3 题、排错与设计 3 题、综合实操 1 题;建议口试 40~50 分钟,分模块实操 90~120 分钟,综合项目可安排 1~2 天。
- 验收材料: 项目代码、依赖与版本、消息协议、权限矩阵、队列与订阅拓扑、保留和重试策略、启动说明、测试账号、观测记录及故障时间线;必须说明允许的丢失、重复、延迟和顺序范围。
下一阶段: 接口测试、单元测试与自动化测试,学习 pytest、测试数据与隔离、Mock、接口契约、权限回归,以及异步流程和前后端业务链路的验证。