主题
React 项目实践
如何建设 React 项目的错误监控和性能观测?
线上观测要让错误可定位、性能可分组、用户可恢复,并且不泄露敏感数据。
面试官想考什么
- 错误边界能捕获哪些错误? 考察 React 运行时边界。
- 一条前端错误如何关联到后端请求? 考察 trace 设计。
- 性能指标如何分组和采样? 考察数据分析能力。
- 如何处理隐私和告警噪声? 考察生产治理。
一句话回答
text
React 可观测性要把错误边界、请求 trace、版本、路由、用户环境和 Web Vitals 串起来,并提供脱敏、采样、告警和恢复路径。面试回答详解
1. 错误分类
- 渲染错误:由错误边界捕获并展示局部降级。
- 事件和异步错误:需要在事件处理、请求层和全局 unhandled rejection 处上报。
- 资源错误:脚本、图片、字体和 chunk 加载失败要单独识别。
- 服务端错误:保留 request id、release 和路由上下文。
2. 观测字段
text
release + route + user/tenant hash + device + request id
+ error boundary + action + downstream status用户和租户信息必须最小化、脱敏或哈希化;不要上报 token、完整表单和敏感业务数据。
3. 性能观测
记录 LCP、INP、CLS、TTFB、长任务、React render/commit、资源加载和业务成功率。实验室数据用于复现,RUM 用于真实设备、地区和网络分组。
4. 闭环
告警要能关联版本和变更,错误页面给用户 retry、刷新或返回路径;高风险 release 支持 feature flag、kill switch 和回滚。每次修复要补回归测试和监控查询。
可直接背诵的 30 秒回答
text
我会把渲染、事件、异步、资源和服务端错误分类采集,统一带上 release、路由、环境、请求 trace 和必要的用户上下文,并做脱敏和采样。性能侧关注 LCP、INP、CLS、TTFB、长任务和业务成功率,结合实验室与 RUM 定位。告警必须能落到版本和恢复动作,而不是只发一条堆栈。扩展知识
最小排障链
text
用户反馈 -> 错误事件 -> release/route -> request trace
-> 下游日志 -> 复现 -> 修复 -> 回归与告警验证面试官追问链
追问一:错误边界能捕获 Promise rejection 吗?
- 考察点:是否理解错误边界范围。
- 回答方向:通常不能自动捕获事件处理和异步回调中的错误,应在请求层、事件层或全局 rejection 处理器上报并做用户恢复。
追问二:为什么用户说慢但平均耗时正常?
- 考察点:是否会看分布和人群。
- 回答方向:看 P95、低端设备、移动网络、地区、登录态、第三方脚本和特定路由,而不是只看平均值。
追问三:如何避免监控本身影响性能?
- 考察点:观测成本意识。
- 回答方向:异步上报、采样、批量发送、资源延迟加载、字段裁剪和失败静默;关键错误优先级高于详细性能样本。