前端部署与运维(SRE)面试题
模拟真实面试场景,训练对部署、发布、可观测性的思考与表达。
一、基础题
1. 前端部署为什么要给 JS/CSS 加 hash?基础
2. 灰度发布和 A/B 测试有什么区别?基础
3. 什么是 CDN?前端如何利用 CDN?基础
4. Docker 多阶段构建在前端部署中有哪些优势?请给出一个 Dockerfile 示例。基础
5. CI/CD 流水线的核心环节有哪些?每个环节的质量门禁如何设定?基础
二、进阶题
6. 如何设计前端错误监控体系?进阶
7. 发布回滚有哪些策略?如何实现快速回滚?进阶
8. 如何用 Kubernetes 管理前端应用?Deployment、Service、Ingress 如何配置?进阶
9. 如何设计前端性能监控与告警策略?进阶
10. 前端多环境配置管理与环境隔离的最佳实践?进阶
11. 多环境晋升(Promotion)策略如何设计?如何保证生产环境零停机?进阶
12. 灰度发布中如何做好指标观测和自动化熔断?进阶
13. 如何将安全扫描集成到前端 CI/CD 流水线中?进阶
三、高级题
14. 如何保障大促期间前端稳定性?深入
参考答案要点:
- 提前压测和容量评估:使用 Lighthouse 批量跑分,k6 模拟高并发访问静态资源,确定 CDN 和源站的容量瓶颈。
- CDN 预热和带宽扩容:提前将大促资源预热到 CDN 全节点,联系 CDN 厂商临时扩容带宽。
- 多 CDN 容灾:配置主备 CDN,任一 CDN 故障时自动切换(通过 DNS 权重或 HTTP DNS)。
- 限流降级:后端 API 限流降级时前端兜底——展示降级页面、缓存数据、离线容灾。
- 静态化:核心页面(如活动页)提前静态化部署到 CDN,不依赖动态 API。
- 监控与预案:大促专项监控大盘,预演故障场景,SRE 24 小时值班。
评分维度:
- 预防措施(30%)
- 容量保障(20%)
- 容灾降级(25%)
- 监控响应(15%)
- 预案完整性(10%)
常见错误:
- 只关注扩容(加机器)而忽略了架构层面的限流降级。
- 大促前的压测只测了后端,未对前端静态资源做压力测试。
- 没有降级预案,后端一旦异常前端直接白屏。
扩展追问:
- Q: 大促期间如果 CDN 带宽打满,如何紧急降低带宽占用?
- Q: 静态页面降级方案如何设计?Service Worker 可以做离线降级吗?
- Q: 如何提前"模拟"大促流量做全链路压测?
15. 设计一个前端零停机发布方案。深入
参考答案要点:
- 构建产物版本化:所有静态资源以版本目录组织(
/v1.2.3/),保留历史版本。 - 入口控制:网关或 Edge Function 根据版本策略分发 index.html,支持灰度。
- 缓存的精妙控制:带 hash 的 JS/CSS 使用
immutable缓存,HTML 使用no-cache。 - 滚动发布流程:K8s Deployment RollingUpdate(
maxUnavailable: 0),新增 Pod 就绪后再摘除旧 Pod。 - 蓝绿部署:切流前保持绿环境运行,蓝环境验证通过后切换流量,异常时立即切回。
- PreStop Hook:Nginx 优雅关闭,确保正在处理的请求完成。
- 实时验证:切换后自动化冒烟测试 + 监控指标对比。
评分维度:
- 版本管理(25%)
- 流量控制(25%)
- 灰度策略(20%)
- 回滚能力(20%)
- 用户体验(10%)
常见错误:
- 只关注前端服务零停机,忽略了后端 API 新老版本兼容问题。
- 切换流量时大规模刷新 CDN 缓存,导致回源风暴压垮源站。
- 没有自动化验证步骤,全量切完后才发现问题。
扩展追问:
- Q: 蓝绿部署和滚动部署各自适合什么场景?
- Q: 如果数据库也需要迁移,如何实现前端的零停机?
- Q: 前端版本与后端 API 版本如何对齐?如何处理 API 兼容性问题?
16. 如何设计前端应用的多集群/多活部署架构?深入
17. 如何为前端应用定义和度量 SLO?如何设计告警预算?深入
18. 什么是前端混沌工程?如何在前端实施混沌实验?深入