初级 SRE 面试题与答案

Milad Bonakdar
作者
通过围绕 SLO、错误预算、告警、事件响应、Linux 排障、自动化和 Kubernetes 的实用问题,准备初级 SRE 面试。
初级 SRE 面试重点
初级 SRE 面试通常会考察你能否从用户影响推导到系统信号:SLO、错误预算、告警、事件响应、Linux 信号、自动化、容器和 Kubernetes 基础运维。你不需要像资深工程师一样回答,但需要表现出有条理的排查方式、事件期间的清晰沟通,以及在不掩盖风险的前提下自动化重复运维工作的能力。
用这些问题练习简洁回答,并把每个答案连接到项目、实验环境、实习或值班旁听中的真实例子。
SRE 基础
1. 什么是站点可靠性工程,它与 DevOps 有何不同?
答案: SRE 是 Google 在大规模可靠地运行生产系统的方法。
主要原则:
- 将运维视为软件问题
- 最多 50% 的时间用于运维工作(琐事)
- 使用错误预算来平衡可靠性和速度
- 无责事后分析
- 逐步推广和自动回滚
SRE 与 DevOps:
SRE 通过具体的实践和指标来实现 DevOps 原则。
稀有度: 非常常见 难度: 简单
2. 解释 SLI、SLO 和错误预算。
答案: 这些是衡量和管理可靠性的核心 SRE 概念:
SLI(服务级别指标):
- 服务级别的量化指标
- 示例:延迟、可用性、错误率
SLO(服务级别目标):
- SLI 的目标值
- 示例:“99.9% 的请求成功”
错误预算:
- 允许的失败率(100% - SLO)
- 用于平衡可靠性和功能开发速度
稀有度: 非常常见 难度: 中等
3. 什么是琐事(Toil),你如何减少它?
答案: 琐事 是重复性的、手动的运维工作,它:
- 是手动的(需要人工操作)
- 是重复的
- 可以自动化
- 没有持久的价值
- 随着服务增长线性增长
琐事示例:
- 手动重启服务
- 在服务器之间复制文件
- 手动扩展资源
- 重复的工单回复
减少琐事的策略:
SRE 目标: 将琐事保持在 50% 的时间以下,并自动化其余部分。
稀有度: 非常常见 难度: 简单-中等
监控与可观测性
4. 监控和可观测性有什么区别?
答案: 监控: 收集预定义的指标和警报
- 已知-未知:你知道要关注什么
- 仪表板、警报、指标
- 示例:CPU、内存、请求率
可观测性: 从输出来理解系统状态
- 未知-未知:调试你没有预料到的问题
- 日志、指标、跟踪相结合
- 可以回答任意问题
可观测性的三大支柱:
- 指标: 聚合数字(CPU、延迟)
- 日志: 离散事件
- 跟踪: 请求在系统中流动
示例:Prometheus + Grafana + Loki
稀有度: 常见 难度: 中等
5. 如何设置有效的警报?
答案: 好的警报是可操作的、有意义的,并且不会导致疲劳。
警报最佳实践:
1. 警报针对症状,而不是原因:
2. 包括运行手册链接:
3. 使用适当的严重级别:
4. 避免警报疲劳:
- 使用
for:持续时间以避免抖动 - 对相关警报进行分组
- 设置适当的阈值
- 定期审查和调整
稀有度: 非常常见 难度: 中等
事件响应
6. 详细介绍你的事件响应过程。
答案: 结构化的事件响应可以最大限度地减少影响和恢复时间:
事件响应步骤:
1. 检测:
- 警报触发或用户报告问题
- 确认警报
- 创建事件频道
2. 分类:
3. 缓解:
4. 解决:
- 修复根本原因
- 验证指标恢复正常
- 监控是否再次发生
5. 事后分析(无责):
稀有度: 非常常见 难度: 中等
7. 如何对遇到高延迟的服务进行故障排除?
答案: 系统的调试方法:
常见原因:
- 数据库慢查询
- 外部 API 超时
- 内存压力(GC 暂停)
- 网络问题
- 资源耗尽
- 代码路径效率低下
稀有度: 非常常见 难度: 中等
自动化与脚本
8. 编写一个脚本来检查服务是否健康,如果需要则重启它。
答案: 健康检查和自动修复脚本:
稀有度: 常见 难度: 中等
可靠性实践
9. 什么是运行手册,为什么它很重要?
答案: 运行手册 是用于处理运维任务和事件的文档化程序。
运行手册结构:
2. 确定瓶颈
- 检查数据库查询时间
- 检查外部 API 调用
- 检查缓存命中率
- 审查最近的部署
3. 检查依赖项
缓解步骤
快速修复(< 5 分钟)
- 扩展应用程序实例
- 暂时增加缓存 TTL
如果问题仍然存在
- 回滚最近的部署
- 启用速率限制
解决
- 修复根本原因(慢查询,低效代码)
- 部署修复
- 监控 30 分钟
- 缩放回正常容量
升级
如果无法在 30 分钟内解决:
- 升级到:@backend-team
- Slack 频道:#incidents
- 值班:使用 PagerDuty 升级策略
相关
2. 断路器:
3. 超时和重试:
稀有度: 常见 难度: 中等
容器化基础
11. 什么是 Docker,它与虚拟机有何不同?
答案: Docker 是一个容器化平台,它将应用程序与其依赖项打包在一起。
容器 vs 虚拟机:
主要区别:
Docker 基础:
Dockerfile 示例:
构建和运行:
Docker Compose(多容器):
使用 Docker Compose 运行:
最佳实践:
- 使用官方基础镜像
- 最小化层数
- 不要以 root 身份运行
- 使用 .dockerignore
- 正确标记镜像
- 扫描漏洞
稀有度: 非常常见 难度: 简单-中等
版本控制与部署
12. 解释 Git 工作流程以及你如何处理部署。
答案: Git 对于版本控制和部署自动化至关重要。
常见的 Git 工作流程:
基本的 Git 命令:
分支策略:
1. Gitflow:
main:可用于生产的代码develop:集成分支feature/*:新特性release/*:发布准备hotfix/*:紧急修复
2. 基于主干的开发:
部署工作流程:
1. CI/CD 管道(GitHub Actions):
2. 部署脚本:
3. 回滚程序:
部署最佳实践:
- 部署前始终进行测试
- 使用特性标志进行有风险的更改
- 在低流量时段部署
- 准备好回滚计划
- 部署后进行监控
- 使用蓝绿或金丝雀部署
稀有度: 非常常见 难度: 中等
Linux 基础
13. 如何对运行缓慢的 Linux 服务器进行故障排除?
答案: 诊断性能问题的系统方法:
故障排除清单:
1. 检查系统负载:
总结
准备初级 SRE 面试时,要能用实际例子说明 SLO、告警、事件响应、Linux 排障和安全自动化。好的回答不是背命令,而是先确认用户影响,再查看可靠信号,用低风险方式缓解问题,并把经验记录下来。


