{SITE.title} logo 云萱笔记
职业发展 · · 2 分钟阅读

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 chainsJenkins/GitHub Actions/GitLab CI,Pipeline 设计,蓝绿/灰度/回滚设计+实战
GIT experience工作流选型、冲突解决、大仓库优化实操+原理
Ansible / Puppet / ChefPlaybook 设计、幂等性、Role 组织、大规模执行实战+原理
Kibana / Grafana / ES日志架构、告警设计、指标体系、ES 优化设计+调优
Kubernetes / DockerDeployment/Service/Ingress/HPA/PDB,故障排查,调度策略深度+排障
Monitor systems监控体系设计、告警分级、故障自愈设计+实战
AWS / GCPVPC 设计、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!💪