运维岗位竞争激烈,如何从众多候选人中脱颖而出?本文基于我多年招聘运维工程师的经验,从简历优化、技术准备、面试技巧、谈薪策略四个维度,系统讲解如何拿到心仪的 Offer。同时附上 50 道高频面试题,帮你全面备战。
一、运维岗位现状
行业趋势
- DevOps 化:传统运维向 SRE/DevOps 转型,要求更高
- 云原生:K8s、Docker 几乎成为必备技能
- 自动化:会写代码(Python/Go)成为硬指标
- 薪资水平:一线城市 1-3 年 15-30K,3-5 年 25-50K,5+ 年 50K+
主流岗位分类
| 岗位 | 核心职责 | 技术栈 |
|---|---|---|
| 系统运维 | 服务器管理、监控、故障处理 | Linux、Shell、Zabbix |
| 应用运维 | 部署、调优、发布 | Nginx、Tomcat、Jenkins |
| DBA | 数据库管理、优化、备份 | MySQL、Redis、MongoDB |
| SRE | 可靠性工程、容量规划 | K8s、Prometheus、Go |
| DevOps | CI/CD、自动化、平台建设 | Jenkins/GitLab CI、Terraform |
| 云运维 | 阿里云/AWS/腾讯云 | 云产品、IaC、计费优化 |
二、简历优化
1. 简历结构
1 | 个人信息 (姓名/电话/邮箱/GitHub) |
2. 项目经历写法(STAR 法则)
错误示范:
负责公司服务器运维工作,部署过多个项目。
正确示范:
【千万级 PV 网站稳定性建设】
- 背景(S):公司业务从日均 50 万 PV 增长到 2000 万 PV,旧架构频繁宕机
- 任务(T):主导稳定性改造,目标可用性 99.95%
- 行动(A):重构为 K8s 微服务架构,引入 Prometheus 监控体系,建立故障应急流程
- 结果(R):可用性提升至 99.98%,故障恢复时间从 30 分钟降至 5 分钟,运维成本降低 40%
3. 量化你的成果
- 维护多少台服务器
- 提升了多少性能(具体数字)
- 处理过哪些重大故障
- 写过哪些自动化工具(用户量、节省工时)
4. 简历排版
- 1 页足够(2 页封顶),简洁明了
- PDF 格式,不要用 Word(排版容易乱)
- 文件名命名:
姓名_岗位_工作年限.pdf,如张三_运维工程师_3年.pdf
三、技术准备
核心知识图谱
1 | 运维工程师技能树 |
四、高频面试题(50 道)
Linux 基础(15 题)
1. 怎么看一个进程占用 CPU 高?
1 | # 1. top 找出 PID |
2. CPU 负载很高但使用率低是怎么回事?
- 大量 IO 等待(
wa高):磁盘或网络瓶颈 - 大量僵尸进程:父进程没回收
- 大量不可中断睡眠进程(D 状态):通常在等 IO
3. 如何查看 Linux 系统的内存使用情况?
1 | free -h # 总览 |
注意区分 可用内存(available) 和 空闲内存(free),available 包含可回收的缓存,真正可用。
4. swap 是什么?什么时候用?
Swap 是磁盘上的交换分区,当物理内存不足时,内核会把不活跃的内存页换出到 swap。长期使用 swap 说明内存不够。
5. 如何排查磁盘 IO 高?
1 | iostat -xz 1 # 看 %util 和 await |
6. 服务器无法 SSH 怎么排查?
- 控制台/VNC 登录
- 检查 SSH 服务状态:
systemctl status sshd - 查看日志:
tail -f /var/log/secure - 检查磁盘是否满:
df -h - 检查防火墙:
iptables -L
7. Linux 启动过程?
1 | BIOS → MBR/UEFI → GRUB → 内核 → init/systemd → 运行级别 → 用户登录 |
8. inode 满了怎么办?
1 | # 查看 inode 使用 |
通常是日志或邮件临时文件过多。
9. 软链接和硬链接的区别?
- 硬链接:指向 inode,不能跨文件系统,删除源文件不影响
- 软链接:指向路径,相当于快捷方式,删除源文件失效
10. 进程、线程、协程的区别?
- 进程:资源分配的最小单位
- 线程:CPU 调度的最小单位,共享进程资源
- 协程:用户态的轻量级线程,Go 语言的 goroutine 就是协程
11. Linux 怎么查看端口监听?
1 | ss -tulnp |
12. OOM Killer 是什么?
当系统内存耗尽时,内核会杀掉一些进程释放内存,这个机制叫 OOM Killer。可以通过 dmesg | grep -i oom 查看。
13. Linux 怎么监控网络流量?
1 | iftop -i eth0 # 实时流量 |
14. 怎么排查 CPU 飙高的 Java 应用?
1 | # 1. 找 PID |
15. 怎么优化 Linux 内核参数?
1 | # /etc/sysctl.conf |
网络基础(10 题)
16. TCP 三次握手?
1 | Client → SYN → Server |
17. TCP 四次挥手?
1 | Client → FIN → Server |
18. TIME_WAIT 状态是什么?为什么?
主动关闭方收到对方的 FIN 后进入 TIME_WAIT,等待 2MSL(通常 2 分钟)确保最后的 ACK 对方能收到,以及让旧连接的包在网络中消失。大量 TIME_WAIT 是正常现象,如果是大量 CLOSE_WAIT 才需要警惕。
19. HTTP 和 HTTPS 的区别?
- HTTPS = HTTP + TLS 加密
- HTTPS 需要 CA 证书
- HTTPS 默认 443 端口,HTTP 是 80
20. HTTP 常见状态码?
- 2xx:成功(200 OK、204 No Content)
- 3xx:重定向(301 永久、302 临时、304 缓存)
- 4xx:客户端错误(400、401、403、404)
- 5xx:服务端错误(500、502、503、504)
21. DNS 解析过程?
1 | 浏览器缓存 → 系统缓存 → hosts 文件 → 本地 DNS 服务器 → 根域名服务器 → 顶级域 → 权威域 |
22. CDN 的工作原理?
- 回源:用户请求 → 边缘节点 → 源站
- 缓存:边缘节点缓存静态资源,过期才回源
- 调度:DNS 或 HTTP 302 把用户引导到最近的节点
23. OSI 七层模型?
1 | 应用层 → 表示层 → 会话层 → 传输层 → 网络层 → 数据链路层 → 物理层 |
实际用的是 TCP/IP 四层:应用层、传输层、网络层、网络接口层。
24. TCP 和 UDP 的区别?
- TCP:面向连接、可靠、有序、重传 → 文件传输、HTTP
- UDP:无连接、不可靠、快 → DNS、视频直播、游戏
25. 502 和 504 的区别?
- 502 Bad Gateway:后端服务没响应(连接被拒)
- 504 Gateway Timeout:后端响应超时
数据库(10 题)
26. MySQL 主从复制原理?
1 | Master 写入 binlog → Slave IO thread 拉取 → 中继日志 relay log → Slave SQL thread 重放 |
27. MySQL 索引原理?B+ 树?
- InnoDB 使用 B+ 树索引
- B+ 树非叶子节点只存索引,叶子节点存数据
- 叶子节点之间用链表连接,适合范围查询
28. 慢查询怎么优化?
EXPLAIN看执行计划- 看是否走索引(type 列)
- 加合适索引
- 避免
SELECT * - 避免在索引列上做函数运算
- 分页优化(延迟关联)
29. MySQL 事务隔离级别?
- 读未提交:脏读
- 读已提交(RC):不可重复读
- 可重复读(RR,InnoDB 默认):幻读(用 MVCC + 间隙锁解决)
- 串行化:性能差
30. MySQL 锁类型?
- 行锁:锁定单行(InnoDB)
- 间隙锁:锁定范围
- 表锁:锁定整张表(MyISAM 默认)
- 意向锁:表级,表明事务要加行锁
31. Redis 数据结构?
- String、Hash、List、Set、ZSet、BitMap、HyperLogLog、GEO、Stream
32. Redis 持久化?
- RDB:快照,定时全量
- AOF:追加日志,增量
- 混合模式(RDB+AOF):Redis 4.0+
33. Redis 缓存穿透、击穿、雪崩?
- 穿透:查不存在的 key → 布隆过滤器
- 击穿:热点 key 过期 → 互斥锁、永不过期
- 雪崩:大量 key 同时过期 → 错峰过期、多级缓存
34. Redis 集群方案?
- 主从复制:读写分离
- 哨兵模式:自动故障转移
- Cluster:16384 槽分片,水平扩展
35. 一条 SQL 查询慢的原因?
- 没走索引
- 表数据量太大
- 锁等待
- 网络问题
- 服务器负载高
容器与 K8s(10 题)
36. Docker 镜像分层原理?
镜像由只读层组成,容器在最上层加可写层。Copy-on-Write 机制,只有修改文件时才复制。
37. Docker 网络模式?
- bridge:默认,NAT 转换
- host:共用宿主机网络
- none:无网络
- container:共享其他容器网络
- 自定义网络:bridge + DNS
38. K8s 核心组件?
1 | 控制平面: |
39. Pod 是什么?
K8s 调度的最小单位,包含一个或多个共享网络和存储的容器。
40. Deployment、StatefulSet、DaemonSet 的区别?
- Deployment:无状态应用
- StatefulSet:有状态应用(数据库)
- DaemonSet:每个节点都跑一个(日志收集)
41. K8s Service 类型?
- ClusterIP:集群内部访问
- NodePort:节点端口暴露
- LoadBalancer:云厂商负载均衡
- Ingress:七层路由
42. Helm 是什么?
K8s 包管理工具,Chart 是模板,Values 是参数,Release 是实例。
43. ConfigMap 和 Secret 的区别?
- ConfigMap 存普通配置
- Secret 存敏感信息(Base64 编码,不是加密)
44. K8s 如何实现高可用?
- 控制平面多副本(至少 3 个 etcd)
- 节点多 AZ 部署
- Pod 多副本 + 反亲和性
- PodDisruptionBudget
45. K8s 自动扩缩容?
- HPA:Horizontal Pod Autoscaler,基于 CPU/内存/自定义指标
- VPA:Vertical Pod Autoscaler,垂直扩缩
- CA:Cluster Autoscaler,节点级扩缩
综合(5 题)
46. 网站打开慢怎么排查?
1 | 用户端 → 网络 → CDN → 负载均衡 → Web 服务器 → 应用服务器 → 数据库 |
按链路顺序排查:
- 多个地点测试,确认是全局还是局部
ping/traceroute看网络- CDN 是否命中
- Web 服务器负载(
top、iostat) - 应用日志、慢接口
- 数据库慢查询
47. 一次完整的故障处理流程?
- 响应:5 分钟内响应
- 止损:重启、回滚、限流、降级
- 定位:日志、监控、链路追踪
- 修复:根因解决
- 复盘:故障报告、改进措施
48. 如何设计监控告警体系?
- 黄金指标:Latency、Traffic、Errors、Saturation
- 业务指标:订单量、支付成功率
- 分级:P0/P1/P2/P3
- 告警收敛:合并、抑制、静默
49. 自动化运维怎么实现?
- CMDB:配置管理数据库
- Ansible:批量执行
- Jenkins/GitLab CI:持续集成
- Terraform:基础设施即代码
50. 谈谈你对 SRE 的理解?
SRE = Site Reliability Engineering,用软件工程的方法解决运维问题。核心:
- SLO/SLI/SLA 体系
- 错误预算(Error Budget)
- 故障演练(Chaos Engineering)
- Toil 减少(自动化一切重复劳动)
五、面试技巧
1. 自我介绍(2-3 分钟)
模板:
1 | 您好,我叫 XX,有 X 年运维经验。 |
2. 项目讲解
准备 2-3 个能体现能力的项目:
- 难度高、规模大
- 有量化成果
- 你在其中起关键作用
3. 反问环节(必问)
不要问薪资(那是 HR 阶段)。
推荐问题:
- 团队规模和分工
- 技术栈和挑战
- 运维自动化程度
- 加班情况(礼貌地问)
4. 软技能
- 沟通:把技术讲清楚,不要装
- 学习能力:展现对新技术的热情
- 稳定性:频繁跳槽是大忌
六、谈薪策略
1. 了解市场行情
- 拉勾、BOSS 直聘搜同岗位
- 看准网、职友集看公司薪资范围
- 脉脉、知乎问同行
2. 报价技巧
- 不要先报价:先问对方薪资范围
- 给范围而不是具体数字:期望 25-30K
- 不要说死:留谈判空间
- 包装自己:项目成果量化、提升了多少
3. 福利别忽视
- 加班费、调休
- 年终奖(几个月)
- 股票/期权
- 培训预算
- 远程/弹性工作
七、offer 选择
评估维度
| 维度 | 权重 | 评估 |
|---|---|---|
| 薪资 | 25% | base + 绩效 + 股票 |
| 技术成长 | 25% | 技术栈、挑战 |
| 团队 | 20% | 领导、氛围 |
| 公司 | 15% | 行业、稳定性 |
| 工作强度 | 15% | 加班、通勤 |
慎入坑
- 面试造火箭,入职拧螺丝
- 频繁 996 但薪资不高
- 团队氛围差(打听在职员工)
- 公司即将裁员(查新闻)
八、总结
找工作是双向选择。准备充分才能拿到心仪的 offer。
学习建议:
- 系统复习:按知识图谱逐项梳理
- 刷题:LeetCode 至少 100 题
- 项目梳理:每个项目能用 STAR 法则讲清楚
- 模拟面试:找朋友或同行互问
- 保持状态:多投多面,面试能力也要练
最后:运维是个越老越吃香的岗位,前提是你一直在成长。学习 + 实战 + 复盘,三年后你会感谢现在努力的自己。