运维工程师面试 50 题
经典运维面试题集,覆盖 OSI 七层模型、Linux 系统管理、网络协议、数据库、虚拟化、监控等基础领域。 与 devops-interview-guide(云原生/K8s 侧重)形成互补,覆盖运维基础面全套考点。 与 k8s-interview-100-questions(K8s 专项)形成三级面试体系。
一、网络基础
1. OSI 七层网络模型
| 层 | 名称 | 功能 | 典型协议/设备 |
|---|---|---|---|
| 7 | 应用层 | 各种应用软件 | HTTP, FTP, SMTP, DNS |
| 6 | 表示层 | 数据格式标识、压缩加密 | JPEG, SSL/TLS |
| 5 | 会话层 | 控制应用程序间会话 | RPC, NetBIOS |
| 4 | 传输层 | 端到端传输 | TCP, UDP |
| 3 | 网络层 | IP 编址、路由 | IP, ICMP, 路由器 |
| 2 | 数据链路层 | 数据帧格式、MAC 寻址 | MAC, 交换机 |
| 1 | 物理层 | 底层数据传输 | 网线, 网卡, 集线器 |
3. TCP 三次握手与四次挥手
三次握手(建立连接):
Client → [SYN] → Server
Client ← [SYN+ACK] ← Server
Client → [ACK] → Server
四次挥手(断开连接):
Client → [FIN] → Server
Client ← [ACK] ← Server
Client ← [FIN] ← Server
Client → [ACK] → Server
为什么是三次? 防止已失效的连接请求到达服务端产生错误。如果只有两次,服务端收到 SYN 就建立连接,而客户端可能已经放弃。
17. HTTP 与 HTTPS 区别 + SSL 握手
- HTTP: 明文传输,端口 80
- HTTPS: HTTP + SSL/TLS 加密,端口 443
- SSL 握手:客户端请求 → 服务端发证书 → 客户端验证 → 协商密钥 → 加密通信
参见 nginx-security-config-guide(SSL 配置实践)。
38. 路由器与交换机区别
| 路由器 | 交换机 | |
|---|---|---|
| 工作层 | 网络层(L3) | 数据链路层(L2) |
| 转发依据 | IP 地址 | MAC 地址 |
| 功能 | 跨网段路由、NAT、防火墙 | 同网段转发 |
二、Linux 系统管理
2. LVM 根分区扩容步骤
# 1. 新建分区
fdisk /dev/sda → n → p → w
# 2. 创建 PV
pvcreate /dev/sda3
# 3. 扩展 VG
vgextend <vg_name> /dev/sda3
# 4. 扩展 LV
lvextend -L +10G /dev/<vg_name>/root
# 5. 扩展文件系统
xfs_growfs / # XFS
resize2fs /dev/... # ext4
4. RAID 级别对比
| 级别 | 最少盘 | 容量利用率 | 冗余 | 特点 |
|---|---|---|---|---|
| RAID 0 | 2 | 100% | 无 | 条带化、高性能、零冗余 |
| RAID 1 | 2 | 50% | 1 盘 | 镜像、读性能好 |
| RAID 5 | 3 | (N-1)/N | 1 盘 | 分布式奇偶校验、读好写一般 |
| RAID 10 | 4 | 50% | 每组 1 盘 | 先镜像再条带、性能最好 |
5. 硬链接与软链接
| 硬链接 | 软链接 | |
|---|---|---|
| inode | 相同 | 不同 |
| 跨文件系统 | ❌ | ✅ |
| 删原文件 | 仍可访问 | 失效 |
| 目录 | ❌ | ✅ |
ln source hard_link # 硬链接
ln -s source soft_link # 软链接
9. 进程管理
| 命令 | 用途 |
|---|---|
ps aux |
查看所有进程 |
top |
实时进程监控 |
kill -9 PID |
强制终止 |
nohup cmd & |
后台运行(忽略 HUP) |
nice -n 10 cmd |
以低优先级运行 |
13. Linux 文件权限
chmod 755 file # rwxr-xr-x
chmod 644 file # rw-r--r--
chown user:group file
权限数字:r=4, w=2, x=1。777 = rwxrwxrwx。
18. sed 与 awk 基础用法
# sed 替换
sed 's/old/new/g' file
# sed 删除空行
sed '/^$/d' file
# awk 按列输出
awk '{print $1, $3}' file
# awk 条件过滤
awk '$3 > 100 {print $1, $3}' file
20. 查看日志常用命令
tail -f /var/log/messages # 实时跟踪
tail -n 100 /var/log/syslog # 最后 100 行
grep 'ERROR' /var/log/app.log # 过滤关键字
head -n 20 /var/log/boot.log # 前 20 行
33. 查找大文件
# 当前目录下大于 100MB 的文件
find . -type f -size +100M
# 磁盘使用排序
du -sh /* 2>/dev/null | sort -rh | head -10
参见 linux-disk-space-troubleshooting(磁盘空间排查完整流程)。
34. 系统启动流程
BIOS → MBR → GRUB → Kernel → init/systemd → runlevel → rc.local
39. 查看系统发行版
cat /etc/os-release
lsb_release -a
cat /etc/redhat-release # CentOS/RHEL
47. inode 与 block
- inode: 存储文件元数据(权限、大小、时间、block 位置)
- block: 存储文件实际数据
df -i查看 inode 使用情况
三、网络服务与管理
22. DNS 解析流程
浏览器 → hosts 文件 → 本地 DNS 缓存 → DNS 服务器
→ 根域名服务器 → 顶级域服务器 → 权威 DNS → 返回 IP
常见记录类型:A(IPv4)、AAAA(IPv6)、CNAME(别名)、NS(DNS 服务器)、MX(邮件)、TXT(文本/SPF)。
参见 k8s-coredns-custom-domain-resolution(CoreDNS 自定义域名)。
23. Nginx 反向代理与负载均衡
upstream backend {
server 10.0.0.1:8080 weight=3;
server 10.0.0.2:8080 weight=1;
server 10.0.0.3:8080 backup;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
负载算法:轮询、权重、ip_hash、least_conn。参见 nginx-config-pitfalls 和 nginx-pre-launch-checklist。
24. iptables 规则管理
三个默认链:INPUT、OUTPUT、FORWARD。三张常用表:filter(过滤)、nat(地址转换)、mangle(修改)。
# 允许端口 22
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 拒绝某个 IP
iptables -A INPUT -s 192.168.1.100 -j DROP
# 保存规则
iptables-save > /etc/iptables/rules.v4
参见 ssh-brute-force-protection-guide(fail2ban + iptables 防暴力破解)。
29. 网络故障排查工具
| 工具 | 用途 | 层级 |
|---|---|---|
| ping | 连通性测试 | L3 |
| traceroute | 路由追踪 | L3 |
| nslookup/dig | DNS 解析 | L7 |
| netstat/ss | 连接状态 | L4 |
| tcpdump | 抓包分析 | L2-L7 |
| curl | HTTP 测试 | L7 |
| telnet | 端口连通 | L4 |
参见 network-troubleshooting-order(分层七步法)。
四、数据库与中间件
10. MySQL 主从复制原理
Master: 数据变更 → binlog
Slave: IO Thread 读取 binlog → Relay Log
SQL Thread 执行 Relay Log → 数据同步
参见 mysql-replication-guide(主从复制深度解析)。
11. MySQL 常见存储引擎
| 引擎 | 事务 | 锁级别 | 特点 |
|---|---|---|---|
| InnoDB | ✅ | 行锁 | 默认引擎、支持外键、崩溃恢复 |
| MyISAM | ❌ | 表锁 | 读快、不支持事务、易损坏 |
21. MySQL 忘记 root 密码
# 1. 停服并跳过授权表启动
mysqld_safe --skip-grant-tables &
# 2. 免密登录修改密码
mysql -u root
> FLUSH PRIVILEGES;
> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
# 3. 正常重启
systemctl restart mysqld
41. MySQL 常用存储引擎对比 — MyISAM vs InnoDB
| 特性 | MyISAM | InnoDB |
|---|---|---|
| 事务 | ❌ | ✅ (ACID) |
| 行锁 | ❌ (表锁) | ✅ |
| 外键 | ❌ | ✅ |
| 全文索引 | ✅ | ✅ (5.6+) |
| 崩溃恢复 | ❌ | ✅ |
| 适用 | 读多写少 | 高并发写 |
43. MySQL 慢查询排查
-- 开启慢查询日志
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 2;
-- 查看慢查询
SHOW VARIABLES LIKE 'slow_query%';
-- 分析慢查询
EXPLAIN SELECT ...;
参见 mysql-slow-query-case-study(4.7s→23ms 优化案例)和 mysql-performance-config(性能调优配置)。
五、系统服务
6. systemd 管理服务
systemctl start nginx # 启动
systemctl stop nginx # 停止
systemctl restart nginx # 重启
systemctl enable nginx # 开机启动
systemctl status nginx # 状态
systemctl list-units # 列出所有单元
8. Shell 脚本基础
#!/bin/bash
# for 循环
for i in {1..10}; do echo $i; done
# if 判断
if [ -f /etc/nginx/nginx.conf ]; then
echo "config exists"
fi
# case 分支
case $1 in
start) systemctl start nginx ;;
stop) systemctl stop nginx ;;
esac
# 位置参数
echo "Script: $0, Arg1: $1, All: $@, Count: $#"
25. 正则表达式基础
^ # 行首
$ # 行尾
. # 任意字符
* # 零次或多次
+ # 一次或多次
[abc] # 字符集
[^abc] # 排除字符集
\d # 数字
\w # 单词字符
30. 进程前后台切换
command & # 后台启动
ctrl+z # 暂停当前进程
jobs # 查看作业列表
fg %1 # 调到前台
bg %1 # 调到后台继续运行
六、虚拟化与容器
49. 虚拟化技术对比
| 类型 | 代表技术 | 特点 |
|---|---|---|
| 完全虚拟化 | KVM, ESXI, Hyper-V | 软件模拟硬件,隔离性好 |
| 半虚拟化 | Xen | 修改 Guest OS,性能较高 |
| 容器化 | Docker | 共享宿主机内核,轻量级 |
参见 docker-production-pitfalls(Docker 生产踩坑)和 docker-image-optimization(镜像优化)。
14. Docker 核心组件
| 组件 | 作用 |
|---|---|
| Docker Daemon | 管理容器、镜像、网络 |
| Docker Client | 命令行交互 |
| Image | 容器模板(分层构建) |
| Container | 镜像的运行实例 |
| Registry | 镜像仓库 |
七、监控与运维
7. Zabbix 监控系统
核心概念:
- 主机(Host): 被监控设备
- 监控项(Item): 具体监控指标
- 触发器(Trigger): 告警条件
- 动作(Action): 告警后的操作
- 模板(Template): 复用监控配置
参见 server-security-hardening-checklist(安全配置联动监控)。
40. 如何保证服务高可用
- 集群部署 + 负载均衡
- 主备切换(Keepalived/VRRP)
- 数据库主从 + 自动故障转移
- 定期备份 + 异地容灾
- 监控告警 + 自动恢复
参见 keepalived-nginx-ha(Keepalived + Nginx 高可用)。
44. 备份策略
- 全量备份: 完整数据备份,占空间大、耗时长
- 增量备份: 只备份上次以来的变化,恢复慢
- 差异备份: 备份上次全量以来的变化,折中方案
- 原则:定期全量 + 每日增量/差异 + 异地存储 + 定期恢复演练
八、日常运维
26. 磁盘空间告警处理
# 快速定位大目录
du -sh /* 2>/dev/null | sort -rh | head -5
# 清理日志
find /var/log -name "*.log" -mtime +30 -delete
# 找被删除但占用的文件
lsof | grep deleted
参见 linux-disk-space-troubleshooting(完整清理流程)。
28. 服务器负载高排查
top # 看进程 CPU
free -h # 看内存
iostat -x 1 # 看 IO
vmstat 1 # 看整体
参见 server-performance-four-dimensions(五维排查)和 online-troubleshooting-checklist(四维速查清单)。
32. 服务器时间同步
# 手动同步
ntpdate ntp.aliyun.com
# 自动同步
systemctl enable chronyd
systemctl start chronyd
timedatectl set-ntp true
48. 禁止 root SSH 登录
# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no # 只用公钥
systemctl restart sshd
参见 ssh-connection-debugging-guide 和 ssh-brute-force-protection-guide。
50. 线上配置修改规范
- 告知运维经理和相关开发人员
- 在测试环境验证并备份原配置
- 测试无误后修改生产环境
- 观察是否正常、是否有告警
- 完成配置更改后归档记录
参见 nginx-pre-launch-checklist(上线前检查清单方法论可迁移至此)。
关联页面
| 页面 | 关联点 |
|---|---|
| devops-interview-guide | 云原生/K8s 面试 59 题(互补覆盖) |
| k8s-interview-100-questions | K8s 专项 100 题 |
| online-troubleshooting-checklist | 四维排查速查清单 |
| server-performance-four-dimensions | 五维性能排查框架 |
| network-troubleshooting-order | 网络分层七步排查法 |
| linux-disk-space-troubleshooting | 磁盘空间排查流程 |
| nginx-config-pitfalls | Nginx 配置踩坑指南 |
| nginx-security-config-guide | Nginx 安全配置 |
| mysql-replication-guide | MySQL 主从复制 |
| mysql-slow-query-case-study | MySQL 慢查询优化案例 |
| docker-production-pitfalls | Docker 生产踩坑 |
| ssh-brute-force-protection-guide | SSH 安全加固 |
| keepalived-nginx-ha | Nginx 高可用 |
| linux-compression-tools-comparison | |
| linux-raid-lvm-basics-guide | Linux RAID 与 LVM 基础入门 — RAID 0/1/5/6/10 级别对比、LVM 分 |
| linux-kernel-tuning-production | 内核参数调优 |