初级DevOps / SRE面试题
初级DevOps / SRE面试的考察重点、常见题目,以及如何用即时 AI 反馈练习。
初级阶段的考察重点
考察 Linux/网络基础、脚本,以及在引导下完成运维任务。
DevOps / SRE常见面试题示例
- 技术面某个服务变慢了。讲讲你如何从操作系统层往上排查。好回答应覆盖
- top/htop/uptime排查CPU/内存/IO
- iostat/vmstat/ss查看磁盘/网络瓶颈
- 慢查询日志与APM工具(如Jaeger)
- strace/perf追踪系统调用
- 瓶颈分解法:自上而下逐层缩小范围
查看范例答案
首先用top或htop查看系统整体资源使用情况,确认CPU、内存、磁盘IO或网络是否有异常。如果CPU高,再用perf或strace采样进程内部热点;如果磁盘IO高,用iostat检查磁盘队列长度和等待时间,并用iotop定位具体进程;网络方面用ss或iftop查看连接数与吞吐量。接着进入应用层,使用APM工具(如Jaeger或SkyWalking)追踪慢请求的完整调用链,定位耗时在数据库查询还是外部API。数据库层面开启慢查询日志,检查全表扫描或索引缺失。最后检查配置变更或限流是否导致排队。常见陷阱是忽略内核上下文切换和软中断(如软网络中断高)。
- 技术面当你输入一个 URL 并按下回车,一步步会发生什么?好回答应覆盖
- DNS解析(递归/迭代,本地缓存)
- TCP三次握手与TLS握手
- HTTP请求构建与负载均衡
- 应用处理(中间件、业务逻辑、数据库查询)
- 响应渲染与浏览器渲染
查看范例答案
首先浏览器从缓存中查找URL对应的IP,若未命中则进行DNS递归查询获取目标IP。然后通过TCP三次握手建立连接;若为HTTPS,在TCP之后进行TLS握手协商加密参数。浏览器构建HTTP请求并发送,若存在CDN或负载均衡器,请求先被它们处理。后端服务解析请求,经过中间件(如认证、限流)、路由到业务逻辑,可能调用数据库或微服务,最后生成HTTP响应。响应返回后浏览器解析HTML、CSS、JS,构建DOM树、CSSOM树,执行渲染,期间可能发起额外请求(如图片、API)。常见陷阱是忽略HTTP/2多路复用或浏览器并发连接限制。
- 技术面Kubernetes 的 liveness 和 readiness 探针有什么区别?好回答应覆盖
- liveness探针:监控进程是否存活,失败则重启容器
- readiness探针:监控服务是否就绪,失败则从Service端点摘除
- 启动初期需区分就绪与存活延迟
- 常见配置:httpGet/tcpSocket/exec
- 误区:使用readiness实现依赖检查(如数据库)需注意初始延迟
查看范例答案
liveness探针用于判断容器是否处于运行状态,如果探测失败,kubelet会根据重启策略重启容器。常用于检测死锁或内部故障。readiness探针则判断容器是否准备好处理请求,失败时Pod会从Service的端点列表中移除,不会接收到流量,但不会被重启。常见配置包括HTTP请求、TCP端口检查或执行命令。两者都需要设置合理的initialDelaySeconds以避免启动时误判。关键区别:liveness影响容器生命周期,readiness影响流量路由。实际中常配置readiness检查上游依赖(如数据库)是否可达,但依赖超时可能导致级联摘除,需要权衡。
- 编程写一个脚本,解析日志并报告错误率最高的几项。好回答应覆盖
- 使用awk统计日志中的ERROR等级
- 按错误信息分组并计数
- 排序输出前N个高频错误
- 处理日志格式:时间 级别 组件 消息
- 适用场景:异常监控、故障定位
查看范例答案
可以通过awk或Python快速实现。下面是一个bash+awk脚本,假设日志格式为'[时间] [级别] [组件] 消息',例如'[2025-03-15 10:00:00] [ERROR] [auth] Invalid token'。脚本提取级别为ERROR的行,按消息内容分组统计,并按计数降序输出前5项。同时给出Python版本。
参考代码bash #!/bin/bash # 统计错误日志前5高频错误消息 awk '/\[ERROR\]/ { for(i=4;i<=NF;i++) msg=msg" "$i; count[msg]++; msg="" } END { for(m in count) print count[m], m }' /var/log/app.log | sort -rn | head -5 - 系统设计设计一条支持安全、渐进式生产发布的 CI/CD 流水线。好回答应覆盖
- 代码提交触发自动构建与单元测试
- 安全扫描(SAST/DAST/镜像扫描)
- 部署到staging环境进行集成测试
- 渐进式发布(金丝雀、蓝绿、滚动更新)
- 自动回滚与人工审批门禁
查看范例答案
设计一条安全高效的CI/CD流水线:开发者提交代码后首先触发Pre-commit hooks(如lint、格式检查),然后构建镜像并进行SAST(静态应用安全测试)和镜像漏洞扫描。通过后将镜像部署到staging环境,运行集成测试和压力测试。验证通过后,进入自动化渐进式发布阶段:首先将新版本部署至金丝雀(如5%流量),观察错误率和延迟指标,若正常则逐步扩大流量至100%。若出现异常,自动触发回滚。全程配置堡垒审批节点,对关键环境(如生产)要求人工确认。常见陷阱是忽略数据库变更的兼容性,需在流水线中集成数据库迁移脚本的版本控制。
- 系统设计为一个多区域服务设计监控和告警。好回答应覆盖
- 基础设施监控:CPU/内存/网络/磁盘(Prometheus+Node Exporter)
- 应用性能监控:请求延迟/错误率/吞吐量(OpenTelemetry+Jaeger)
- 分布式追踪标识跨区域请求链路
- 日志聚合(ELK/Loki)与告警规则(基于SLO)
- 全球负载均衡器与区域健康监测
查看范例答案
为多区域服务设计监控时,首先要统一采集层:每个区域部署Prometheus实例收集基础设施和业务指标,并使用Thanos或Cortex进行全局聚合。应用层采用OpenTelemetry SDK注入trace和metrics,通过Jaeger或Grafana Tempo实现跨区域链路追踪。日志方面使用Loki或Elasticsearch,按region索引,方便按区域检索。关键告警规则基于SLO(如99.9%可用性),设置燃烧速率告警(例如错误预算消耗速度超过阈值)。此外,配置全球负载均衡器(如Cloudflare或AWS Global Accelerator)的健康检查,一旦区域故障自动切换。常见陷阱是跨区域监控延迟导致的误判,需要合理设置评估周期和静默期。
- 行为面讲一次你主导处理的故障,以及复盘后采取的行动。好回答应覆盖
- 情境:线上支付接口延迟激增,成功率下降
- 任务:快速恢复服务并查明根因
- 行动:立即回滚上一个版本,同时分析慢查询日志
- 行动:定位到数据库索引缺失,DBA紧急添加索引
- 结果:服务恢复,事后引入数据库变更审计流程
查看范例答案
在一次主导的故障处理中,发现支付接口P99延迟从50ms飙升到5s,成功率降至80%。紧急启动Incident Response流程,先回滚了最近一次的代码变更,延迟降回1s但仍偏高。同时与DBA分析数据库慢查询,发现一条新SQL缺少索引导致全表扫描。立即添加索引后延迟恢复至正常。事后复盘发现原因是开发未在预发布环境执行索引检查,因此我们采取了以下行动:在CI流水线中增加数据库索引分析步骤,要求所有数据库变更必须经DBA审批,并设置索引缺失告警。这次事件强调了可观测性和快速回滚的重要性。
- 行为面你如何在可靠性工作和功能需求之间取得平衡?好回答应覆盖
- 定义SLO与错误预算指导决策
- 优先处理影响SLO的可靠性问题
- 与产品团队协作,为可靠性预留时间
- 使用故障注入测试评估新功能风险
- 避免零和博弈,追求可持续交付节奏
查看范例答案
平衡可靠性工作与功能需求的关键是数据驱动。首先为服务定义明确的SLO(如99.9%可用性)和错误预算(每月允许的不可用时间)。当错误预算充足时,团队可以优先投入新功能开发;当预算消耗过快时,暂停功能开发,集中精力解决可靠性问题。与产品团队透明沟通这些指标,共同制定迭代计划。另外,通过故障注入测试(如Chaos Engineering)提前发现新功能可能引入的可靠性风险,从而在设计中修复。常见陷阱是过度追求100%可靠性导致交付缓慢,而合理的SLO和预算能够量化风险容忍度。
面试官重点考察什么
Linux 与网络
进程、文件系统、DNS、TCP/IP 与排障工具。
CI/CD 与 IaC
流水线、Terraform,以及可复现的自动化部署。
容器与编排
Docker、Kubernetes 调度、网络与扩缩容。
可观测性
指标、日志、链路追踪、SLO 与有意义的告警。
可靠性
故障响应、无指责复盘与容量规划。
如何准备
- 从第一性原理排障——面试官想看到系统化、分层的方法。
- 把答案围绕 SLO、错误预算和无指责复盘来组织。
- 在答案里把一切都自动化;手动步骤会被视为危险信号。
常见问题
DevOps/SRE 面试会考哪种编程?
通常是脚本(日志解析、自动化),有时也有数据结构题,外加大量排障和系统设计。
Kubernetes 对 SRE 面试有多重要?
在中高级非常常见——会问调度、网络、探针和扩缩容。
如何准备 SRE 面试?
练习分层排障,复习 SLO 和故障响应等可靠性概念,并在模拟面试中演练各种场景。
用即时 AI 反馈刷DevOps / SRE面试题
Offersly 会根据你的简历和目标岗位定制一场模拟面试,并从相关性、深度、清晰度和正确性四个维度为每个回答打分。