DevOps 面试准备全攻略:从技术栈到答题思路
大家好,我是云萱。
最近在准备 Senior DevOps Engineer 的面试,目标岗位是银行的 FMTPT 团队(Murex 交易处理平台)。这段时间系统地整理了一套面试准备材料,涵盖了 Linux/Bash、Git、CI/CD、Ansible、Docker/K8s、监控、AWS、数据库、Python、微服务架构等几乎所有 DevOps 相关的技术领域。
这篇文章分享一下我的准备思路和方法,不只是”背什么题”,更重要的是”怎么准备”。
一、先搞清楚 JD 在说什么
拿到 JD 之后,不要上来就开始刷题。先把 JD 拆解开,搞清楚每一条要求背后考的是什么。
举个例子,我这个 JD 里的要求:
| JD 原文 | 实际考察点 | 深度要求 |
|---|---|---|
| CI/CD tool chains | Jenkins/GitHub Actions/GitLab CI,Pipeline 设计,蓝绿/灰度/回滚 | 设计+实战 |
| GIT experience | 工作流选型、冲突解决、大仓库优化 | 实操+原理 |
| Ansible / Puppet / Chef | Playbook 设计、幂等性、Role 组织、大规模执行 | 实战+原理 |
| Kibana / Grafana / ES | 日志架构、告警设计、指标体系、ES 优化 | 设计+调优 |
| Kubernetes / Docker | Deployment/Service/Ingress/HPA/PDB,故障排查,调度策略 | 深度+排障 |
| Monitor systems | 监控体系设计、告警分级、故障自愈 | 设计+实战 |
| AWS / GCP | VPC 设计、IAM、EKS/GKE、成本优化 | 架构+实操 |
| 数据库部署运维 | MySQL/PostgreSQL 高可用、备份恢复、性能优化 | DBA 基础 |
| Python 编程 | 自动化脚本、运维工具开发 | 能写能改 |
| 微服务架构 | 服务发现、熔断降级、分布式事务、可观测性 | 架构设计 |
把 JD 拆成这样一张表,你就知道每个领域要准备到什么深度了。Senior 级别不是”用过就行”,而是要能讲清楚 为什么这么做、有什么 trade-off、遇到过什么问题怎么解决的。
二、每个技术领域准备什么
Linux / Bash
准备内容:
- 系统健康检查:CPU、内存、磁盘、IO、网络
- 性能排查方法论(USE 方法、top/htop/vmstat/iostat/sar)
- Shell 脚本能力:awk/sed/grep 三剑客,文本处理
- 进程管理、日志分析、定时任务
高频问题:
- 系统慢怎么排查?(从哪些维度入手?)
- CPU 高但不是用户态是什么原因?(iowait? 上下文切换?)
- 内存泄漏怎么定位?
- 写一个监控 CPU 的脚本?
CI/CD
准备内容:
- Jenkins Pipeline(声明式 vs 脚本式)
- GitHub Actions / GitLab CI
- 流水线设计:构建 → 测试 → 安全扫描 → 镜像构建 → 部署
- 发布策略:滚动、蓝绿、灰度、金丝雀
- 回滚策略
高频问题:
- 你们的 CI/CD 流程是什么样的?
- 怎么保证发布安全?有哪些质量门禁?
- Pipeline 速度慢怎么优化?
- 灰度发布和蓝绿发布的区别?
Kubernetes / Docker
准备内容:
- 核心资源:Pod/Deployment/Service/Ingress/ConfigMap/Secret/HPA/PDB
- 调度策略:亲和性/反亲和性、污点与容忍、资源限制
- 网络模型:CNI、Service 类型、CoreDNS、Ingress 原理
- 存储:PV/PVC、StorageClass
- 故障排查:Pod Pending/CrashLoopBackOff/ImagePullBackOff 的排查思路
- Docker:多阶段构建、镜像优化、非 root 用户、健康检查
高频问题:
- Pod 生命周期?Pod 一直 Pending 怎么排查?
- Service 的几种类型?ClusterIP 和 NodePort 的区别?
- HPA 基于什么指标自动扩缩容?自定义指标怎么做?
- Deployment 和 StatefulSet 的区别?
- Kubernetes 网络原理?CNI 是什么?
监控与可观测性
准备内容:
- 三大支柱:Metrics(Prometheus)、Logging(ELK/Loki)、Tracing(Jaeger/SkyWalking)
- 告警设计:分级策略(P0/P1/P2/P3)、告警抑制、告警风暴处理
- 黄金指标:延迟、流量、错误率、饱和度
- ES 集群优化、Grafana 面板设计
高频问题:
- 你们的监控体系是怎么设计的?
- 日志系统架构怎么设计?
- 告警风暴怎么处理?
- 可观测性三大支柱的区别和联系?
数据库运维
准备内容:
- MySQL:备份方案(mysqldump/xtrabackup/binlog)、主从复制、慢查询优化
- PostgreSQL:VACUUM、WAL、pg_stat_statements、流复制
- 高可用方案对比
- 备份验证和恢复演练
高频问题:
- MySQL 备份方案有哪些?你们怎么备份的?
- 主从延迟高怎么排查?
- PostgreSQL 的 VACUUM 是干嘛的?
- 怎么验证备份是好的?
云平台(AWS/GCP)
准备内容:
- VPC 设计:多 AZ、公有/私有/数据库子网、IGW/NAT、安全组/NACL
- IAM:角色、策略、最小权限原则
- EKS/GKE:集群架构、节点组、网络插件
- 成本优化:预留实例、Spot、自动扩缩容、生命周期策略
- 高可用设计:多 AZ、负载均衡、故障转移
高频问题:
- VPC 怎么设计?有哪些组件?
- 安全组和 NACL 的区别?
- 怎么降低云成本?
- IAM 最佳实践?
微服务架构
准备内容:
- 服务拆分原则(DDD、康威定律)
- 服务注册与发现(Nacos/Consul/Eureka/etcd)
- 服务网关(Kong/APISIX/Spring Cloud Gateway)
- 熔断降级(Sentinel/Resilience4j)
- 分布式事务(2PC/TCC/Saga/可靠消息)
- CAP/BASE 理论
高频问题:
- 怎么设计一个高可用的微服务架构?
- 服务注册中心选 CP 还是 AP?为什么?
- 分布式事务怎么处理?
- Service Mesh 是什么?和 API 网关的区别?
三、面试准备策略
1. 每个领域准备 1-2 个真实项目案例
用 STAR 法则 组织:
- Situation:当时什么背景?遇到了什么问题?
- Task:你的任务是什么?
- Action:你做了什么?具体怎么干的?
- Result:结果怎么样?有数据支撑最好(比如部署时间从 30 分钟降到 5 分钟,故障率降低多少)
千万别只说”我做过 XX”,要说清楚”我怎么干的、遇到什么问题、怎么解决的、结果如何”。
2. 准备 2-3 个故障排查故事
DevOps 面试特别喜欢考故障排查。准备几个你处理过的真实故障,讲清楚:
- 现象是什么?
- 你的排查思路(从哪里入手?一步步怎么定位的?)
- 根因是什么?
- 怎么解决的?
- 后续做了什么改进防止再发生?
排查思路比答案更重要。 面试官不是要你背答案,而是看你遇到问题的时候有没有系统化的排查方法。
3. 设计题说 trade-off
Senior 级别一定会考设计题。说方案的时候记住:没有银弹,只有 trade-off。
比如问”怎么设计一个高可用架构”,不要上来就列一堆技术。要说:
- 我们的目标是什么?(可用性 SLA 是多少?RPO/RTO 是多少?)
- 基于这些目标,我选择 XX 方案,因为…
- 代价是什么?(成本高?复杂度高?)
- 为什么不选另一个方案?(因为那个方案在我们的场景下 XX 方面不满足)
能讲清楚 trade-off,才说明你真的懂。
四、金融行业要点(加分项)
如果面的是金融行业(比如银行、券商),这些点要特别准备:
1. 合规与安全
- 变更审批流程(ITIL、CAB)
- 审计日志(谁什么时候改了什么)
- 环境隔离(开发/测试/预发/生产严格隔离)
- 数据安全(敏感数据脱敏、加密)
2. 高可用与稳定性
- 交易系统 7x24 小时运行,零停机部署
- 灰度发布、金丝雀发布、流量切换
- 完善的回滚预案
- 灾备方案(同城双活、异地灾备)
3. 变更管理
- 变更窗口(非交易时间变更)
- 变更分级(标准/常规/紧急/重大)
- 变更前后检查清单
- 回滚预案必须提前准备好
4. 关于 Murex
- 如果不了解 Murex,不要瞎编
- 可以说:“我之前没有直接用过 Murex,但我有丰富的交易系统运维经验,我相信我可以快速学习和掌握 Murex 平台的运维。”
- 重点强调你”快速学习新业务系统”的能力和过往经历
五、软技能(Senior 级别重点)
很多人技术准备得很好,但软技能方面丢分。Senior 级别,软技能的权重其实很高。
1. 跨团队协作
DevOps 的工作本质上就是跨团队协作。准备一个例子:
- 你是怎么推动其他团队配合的?
- 遇到阻力的时候怎么处理?
- 怎么和开发团队搞好关系?
2. 主动改进意识
不要只说”领导让我做什么我就做什么”。要说你主动发现了什么问题、推动了什么改进、带来了什么收益。
- 例子:发现部署流程效率低 → 主动优化 CI/CD → 部署时间减少 80%
3. 知识共享
- 有没有写文档、做培训、推广最佳实践?
- 有没有建立团队的知识库/运维手册?
4. 沟通表达
- 技术方案能不能清晰地讲给非技术人员听?
- 能不能用简单的语言解释复杂的技术概念?
六、一些实用建议
写在简历上的,一定要能讲清楚
简历上写的每一个技术点、每一个项目,面试官都可能深挖。不要为了好看写一堆自己不熟的东西。 宁可少写,但写上去的都能讲透。
不懂就说不懂,别瞎编
Senior 面试,技术广度深度都有,遇到不会的很正常。直接说”这个我之前没有深入接触过,我下来了解一下”,比瞎编强一百倍。瞎编一个错误答案,面试官一眼就能看出来,直接扣分。
反问环节也要准备
最后面试官问”你有什么问题要问我吗?“,别只说”没有了”。准备几个问题:
- 这个岗位的日常工作内容是什么样的?
- 团队目前的规模和分工是怎样的?
- 目前团队面临的最大挑战是什么?
- 您对这个岗位的期望是什么?
问有质量的问题,也能体现你的思考水平。
写在最后
面试准备是个系统工程,不是刷几道题就能搞定的。尤其是 Senior 级别,更看重的是思维方式、问题解决能力、架构视野,而不是某个具体命令背得熟不熟。
我自己的方法是:先拆解 JD → 每个领域整理知识点 → 每个知识点准备项目案例 → 模拟面试讲出来。
光看不练没用,一定要说出来。可以自己对着镜子讲,或者找朋友互相模拟。你会发现,“心里懂”和”能讲清楚”完全是两回事。
最后,祝大家都能拿到心仪的 offer!💪