前端监控面试题
前端监控面试题,涵盖错误采集与上报、性能埋点、Source Map 还原、白屏检测、页面离开时的上报和告警设计。共 5 道题。
- 前端怎样全局捕获 JS 错误、Promise 拒绝和资源加载失败?
window.onerror 与 error 事件捕获运行时异常,unhandledrejection 捕获未处理的 Promise 拒绝,资源加载失败要在捕获阶段监听;跨域脚本的报错只剩 Script error.,需 crossorigin 加 CORS 响应头才能拿到详情。
- 线上报错怎样用 Source Map 还原,又不把 map 文件公开?
构建时生成不带 sourceMappingURL 注释的 hidden source map,按发布版本上传到错误监控服务或内网存储,部署产物中删除 .map;上报原始堆栈后由服务端根据版本和文件名还原到源码位置。
- 页面关闭时怎样可靠上报?sendBeacon 和 keepalive 怎么选?
在 visibilitychange 变为 hidden 时上报,而不是依赖 unload/beforeunload;sendBeacon 只发 POST、只返回是否入队;fetch keepalive 可自定义请求并读响应;fetchLater 由浏览器在页面离开或超时时代发,目前仅 Chromium 支持。
- 怎样检测页面白屏?常见方案有哪些误报?
白屏检测通常在加载完成后延迟检查根节点是否有内容,或用 elementFromPoint 采样视口关键点判断是否只剩容器元素,再结合错误日志和资源失败定位原因;骨架屏、慢网络、后台标签页和合法空状态都会造成误报。
- 前端监控数据怎样做采样、去重、聚合和告警?
性能和行为数据按会话做一致性采样,错误数据尽量全量或单独提高采样率;客户端限流去重,服务端按错误指纹聚合成问题;告警基于错误率和影响用户数并与发布版本关联,避免按单条错误报警。