运维开发工程师经典面试题及答案解析

本文汇总运维开发工程师高频面试题,涵盖Linux系统、网络协议、容器技术、自动化工具等核心领域,提供详细技术解析与实战案例,助力求职者系统化备战面试。

一、Linux系统与命令

1. 如何快速扩容Linux根分区?  

使用LVM扩展逻辑卷:  

bash

# 方法1:在线扩容(需xfs_growfs或resize2fs支持)

growpart /dev/vda 1

resize2fs /dev/vda1

# 方法2:新增磁盘并扩展

fdisk /dev/sdb  # 创建新分区并设置类型为8e(LVM)

pvcreate /dev/sdb1

vgextend datavg /dev/sdb1

lvextend -r -L +100%FREE /dev/mapper/datavg-lv01

2. 僵尸进程如何处理?  

通过`ps aux | grep Z`定位僵尸进程,终止其父进程:  

bash

kill -9 <父进程PID>  # 父进程终止后,init进程会接管并清理僵尸进程

3. 如何查看系统资源占用?  

使用`top`、`htop`实时监控,结合`pidstat`分析具体进程:  

bash

top -c  # 显示完整命令行

pidstat -u 1  # 每秒刷新CPU使用率

二、网络协议与故障排查

4. DNS解析过程及常见问题排查  

解析流程:本地缓存→Hosts文件→递归查询DNS服务器→根域名服务器→顶级域→权威DNS。  

排查工具:  

bash

nslookup example.com  # 检查解析结果

dig example.com +trace  # 跟踪递归过程

systemctl restart systemd-resolved  # Linux清除DNS缓存

5. OSPF邻居无法建立的原因?  

关键检查点:  

- 接口IP是否在同一网段  

- Hello/Dead计时器是否匹配  

- MTU是否一致  

- ACL是否阻塞OSPF组播(224.0.0.5/6)  

调试命令:  

bash

show ip ospf neighbor  # 查看邻居状态

debug ip ospf events  # 开启OSPF事件调试

6. VLAN间互访不通的排查步骤  

- 确认设备端口VLAN划分正确  

- 检查三层交换机SVI接口配置  

- 验证IP路由功能是否启用  

- 检查ACL是否阻断流量  

命令示例:  

bash

show vlan brief  # 查看VLAN划分

show ip route  # 检查路由表

三、容器与编排技术

7. Docker与传统虚拟机的区别  

| 维度 | Docker| 虚拟机|

|----------------|--------------------------------|--------------------------|

| 启动速度 | 秒级| 分钟级 |

| 资源占用 | 共享内核,轻量级| 独立操作系统,资源消耗大 |

| 隔离性| 进程级隔离| 系统级隔离|

| 安全性| 较弱(容器root与宿主机root同权)| 较强|

8. Kubernetes中Pod的常见调度方式  

- 节点选择器:通过`nodeSelector`指定标签  

- 亲和性调度:`nodeAffinity`/`podAffinity`实现复杂规则  

- 污点与容忍度:`taints`/`tolerations`控制Pod分配  

示例配置:  

affinity:

nodeAffinity:

requiredDuringSchedulingIgnoredDuringExecution:

nodeSelectorTerms:

- matchExpressions:

- key: disktype

operator: In

values: ["ssd"]

9. 如何实现K8s集群高可用?  

- 控制平面高可用:多Master节点+etcd集群  

- 数据平面高可用:DaemonSet部署节点监控,Pod通过`replicas`保证副本数  

- 存储高可用:使用StorageClass动态配置持久化存储  

10. 如何审计Linux系统操作?  

- Auditd:配置规则监控文件访问、命令执行:  

# 添加规则:监控/etc/passwd修改

echo "-w /etc/passwd -p wa -k passwd_changes" >> /etc/audit/rules.d/audit.rules

- Sysmon(Windows)或OSSEC(跨平台)作为替代方案。  

---

四、容器与Kubernetes

11. Kubernetes中如何实现服务发现?  

- Service资源:通过ClusterIP、NodePort或LoadBalancer暴露服务。  

- DNS解析:Kube-DNS或CoreDNS为Pod提供域名解析(如`<service-name>.<namespace>.svc.cluster.local`)。  

- Ingress:通过Nginx/Traefik等Ingress Controller实现七层路由。  

12. Pod的QoS类别有哪些?如何划分?  

- Guaranteed:CPU/Memory请求=限制(优先级最高)。  

- Burstable:请求<限制(可弹性伸缩)。  

- BestEffort:未指定资源限制(优先级最低,易被驱逐)。  

13. 如何排查Kubernetes Pod启动失败?  

- 查看事件:`kubectl describe pod <pod-name>`。  

- 检查日志:`kubectl logs <pod-name> --previous`(查看崩溃前日志)。  

- 验证资源:检查CPU/Memory限制是否足够。  

---

五、自动化与DevOps

14. Ansible的Playbook执行流程是什么?  

- Gather Facts:收集目标主机信息(如IP、OS版本)。  

- Task执行:按顺序执行Playbook中定义的Task(如安装包、启动服务)。  

- Handlers触发:当Task修改配置时,通知Handlers执行重启等操作。  

未经 qmjianli.com 同意,不得转载或采集本站的文章。