简历追问:低代码执行状态实时同步
关联:全栈工程师简历 > 低代码工作流引擎、15分钟:低代码平台。
对应简历描述
在 NestJS 中实现了 SSE / WebSocket 实时通信机制,支持长耗时业务节点的执行状态实时监控与日志流式推送,优化了开发者的调试体验。
面试官真正想确认
你是否处理过长任务状态、日志流、断线恢复和多订阅者,而不是只会“WebSocket 推一下”。
连续追问链
1. 通信选择
- 为什么同时提 SSE / WebSocket?各自适合什么场景?
- 如果只是服务端推执行日志,为什么不用轮询?轮询的成本或体验问题在哪里?
- 连接鉴权、租户隔离和执行实例权限怎么做?
2. 事件模型
- 事件类型有哪些:execution_started、node_started、log、progress、node_finished、node_failed?
- 日志是全量推送还是增量推送?客户端如何排序和去重?
- 节点状态和日志是否来自同一个通道?如果不是,如何保持一致?
3. 可靠性
- 浏览器刷新或网络断开后,如何从 last event id 继续?
- 服务端是否持久化最近日志和节点状态,还是只在内存里广播?
- 日志量很大时如何限流、采样、折叠或分页,避免拖垮浏览器?
- 多个用户同时看同一个执行实例,是否每人一份任务还是广播订阅?
4. 调试体验
- 开发者如何从 UI 定位哪个节点卡住、哪个变量解析失败?
- 长耗时 HTTP / 批处理节点有没有 heartbeat?没有事件时 UI 怎么判断还活着?
- 节点失败后是否能从某个节点重跑?重跑时日志如何区分 execution attempt?
场景推演题
一个批量导入节点运行 10 分钟,每秒产生日志。用户在第 6 分钟刷新页面,网络还断了 30 秒。请说明服务端、客户端和日志存储如何保证恢复后还能看到正确进度。
继续追:如果日志暴涨到每秒 1000 条,前端怎么不被刷爆?
准备证据
- SSE / WebSocket 事件 schema。
- reconnect 与 last-event-id 处理流程。
- 日志限流/分页策略。
- execution attempt 状态设计。
容易露馅的回答
- “用 ws 实时推就行。”
- “断线了重新执行任务。”
- “日志直接 append 到页面。”
- “开发者刷新页面以后看不到之前日志也没关系。”