侧边栏壁纸
博主头像
LLJJJJ的博客

行动起来,活在当下

  • 累计撰写 5 篇文章
  • 累计创建 6 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

运维面试题库(来自网上)

Administrator
2026-07-16 / 0 评论 / 0 点赞 / 2 阅读 / 0 字

运维面试题库(附答案)

一、系统基础与常用命令

1. 你常用到的命令?不要说过于简单的命令如cp、mv、cd

答:

· top:查看CPU状态

· free -h:查看内存使用量

· fdisk -l:查看磁盘分区

· df -h:查看磁盘使用情况

· netstat 或 lsof -i:端口号:查看服务端口

· telnet:查看端口是否可以连通

· ping:查看是否可以连接

· scp:将文件传输到另一台服务器上

· find:在系统中查找文件

二、网络基础(数通)

2. TCP的三次握手、四次挥手?

答:

· 三次握手(建立连接):

  1. 客户端发送SYN报文给服务端

  2. 服务端回复SYN+ACK报文

  3. 客户端回复ACK,连接建立

· 四次挥手(断开连接):

  1. 客户端发送FIN报文

  2. 服务端回复ACK

  3. 服务端发送FIN报文

  4. 客户端回复ACK,连接关闭

3. OSI七层网络模型都是什么?

答: 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。(简化记忆:物、数、网、传、会、表、应)

三、开发与脚本(Shell)

4. Shell是基础,进阶学了什么?

答: 进阶学了Go(web框架是Gin)和Python(web框架是Django和Flask)。

5. 如何把一个命令定义成一个变量?

答: 使用变量赋值语法,例如:name='ls /root',后续使用 $name 或 ${name} 来引用。

6. awk、grep、sed分别用来做什么?

答:

· grep:过滤

· awk:列过滤

· sed:替换

7. Shell脚本中for循环和if条件判断怎么用?

答:

· if判断:

```bash

if [ 条件 ]; then

    执行语句

elif [ 条件 ]; then

    执行语句

else

    执行语句

fi

```

· for循环:

```bash

for i in 列表; do

    执行语句

done

```

8. 如何写一个日志切割脚本?或者给nginx做日志切割?

答:

```bash

#!/bin/bash

file1=/var/log/nginx/nginx.log

date=$(date +%F)  # 格式如2025-03-13

# 不能用mv直接切割,否则不重启服务将不再产生新日志文件

cp $file1 ${file1}_$date

echo ' ' > $file1

```

然后用 crontab -e 添加定时任务:

```

0 0 * * * sh /root/nginx.sh

```

四、容器化(Docker)

9. 你用过哪些docker命令?

答:

· docker build:打包镜像

· docker push:上传镜像

· docker pull:拉取镜像

· docker run:启动镜像(所有参数都有可能被问)

· docker rm $(docker ps -qa):删除所有不在运行的容器

· docker rmi $(docker images -qa):删除所有不在运行的镜像

10. 大厂可能会问docker的概念,你怎么理解?

答: Docker是一种容器化技术,通过命名空间(Namespace)实现资源隔离,通过Cgroups实现资源限制。它比虚拟机更轻量,因为共享宿主机内核,启动速度快,资源占用少。

五、自动化(Ansible)

11. Ansible常用模块有哪些?你用过哪些?

答: 常用模块包括:command、shell、copy、file、yum、service、template、user、ping 等。

12. 谈谈你对DevOps理念的理解?

答: DevOps是开发(Development)和运维(Operations)的结合,强调自动化、持续交付、快速反馈。核心是打破开发和运维的壁垒,通过CI/CD流水线实现代码的自动构建、测试、部署,提高交付效率和质量。

六、数据库(MySQL)

13. MySQL主从复制的原理是什么?

答:

· 主服务器(Master):负责处理所有的写操作和事务,将所有更改(如INSERT、UPDATE、DELETE)记录到binlog(二进制日志)中。

· 从服务器(Slave):通过读取主服务器的binlog来获取数据更改信息,并应用到自身数据中。

· 核心机制:从服务器通过一个I/O线程连接到主服务器,读取binlog并将其存储到本地的relay log(中继日志)中;然后由SQL线程从relay log中读取事件并应用到从服务器的数据库中。

14. MySQL常用的查询语句?

答:

· show databases; — 查询所有数据库

· show tables; — 查询当前库的所有表

· select * from 表名 where 条件; — 条件查询

· update 表名 set 字段名=修改值 where 条件; — 条件更新

· mysqldump -u 用户名 -p 密码 数据库名 表名 > info.sql — 备份导出

七、中间件

Nginx

15. 如何不重启nginx服务来重载配置文件?

答:

1. 先用 nginx -t 确认配置文件正确性

2. 再用 nginx -s reload 重载配置文件

16. Nginx负载均衡是在四层做的还是七层做的?用什么模块?

答: 都可以。

· 四层(TCP层):基于IP+端口,使用 stream 模块

· 七层(HTTP层):基于IP+端口+URL,使用 upstream 模块

17. 反向代理和正向代理的原理分别是什么?

答:

· 正向代理:代理的是客户端。客户端通过代理服务器访问外部资源,服务端不知道真实客户端是谁。

· 反向代理:代理的是服务端。客户端访问代理服务器,代理将请求转发给后端的真实服务器,客户端不知道真实服务端是谁。

18. Nginx的正则匹配规则有哪些?

答:

· =:精确匹配

· ~:正则匹配,区分大小写

· ~*:正则匹配,不区分大小写

· ^~:匹配普通字符,优先级比空格高;表示不进行正则匹配,匹配的字符串越长,优先级越高

Keepalived

19. Keepalived高可用的原理是什么?

答: 主服务器通过VRRP协议向从服务器发送心跳检测。如果主服务器不再发送心跳,从服务器将会认为主服务器挂了,就会接替主服务器继续工作(VIP漂移)。

20. 脑裂问题是怎么引发的?怎么解决?

答:

· 引发原因:当主从服务器之间的网络断开时,从服务器收不到主服务器的心跳,误认为主服务器已挂,于是自己也接管VIP,导致两台服务器同时拥有VIP,造成冲突。

· 解决方法:增加仲裁机制,例如通过第三方设备或ping网关等方式来确认主服务器是否真的挂了,避免误判。

Redis

21. Redis哨兵(Sentinel)模块的原理是什么?

答: 哨兵是一个独立的进程,用于监控Redis主从集群。它会定期向各节点发送心跳检测,如果发现主节点不可达,哨兵会通过投票机制从从节点中选举出一个新的主节点,实现自动故障转移。

22. Redis集群模式的原理是什么?

答: Redis集群采用槽位(Slot)分区,总共16384个槽位,分布在各个主节点上。每个key通过CRC16算法取模映射到对应的槽位,从而实现数据分片。集群支持主从复制和自动故障转移。

23. Redis有哪几种基本数据类型?

答: String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Sorted Set(有序集合)。

八、监控(Prometheus)

24. Prometheus监控生态包含哪些组件?

答: Prometheus + Grafana + Alertmanager + Exporter。

25. 你都监控什么东西?

答:

· 服务器层面:CPU、内存、磁盘、网络(使用率和I/O)

· 中间件监控:MySQL(连接数)、Redis(连接数)、RocketMQ(消费情况)

· 应用层面:端口和接口监控(是否正常)

· Exporter分类:

  · node_exporter:监控服务器

  · mysql_exporter:监控MySQL

  · blackbox_exporter:监控端口和接口探活

九、云计算

26. 你用过哪些云计算产品?

答: ECS服务器、RDS数据库、Redis缓存、OSS对象存储(或OBS、NAS)、ELB负载均衡、WAF防火墙。

十、Kubernetes(K8S)

27. K8S需要掌握哪些内容?

答: 部署方式、核心组件、探针(Probe)、亲和性(Affinity)、网络模型、Pod状态、控制器类型、标签(Label)、污点(Taint)。

十一、扩展学习方向(附在笔记中作为进阶建议)

· 尽量去学一下Java微服务:Nacos、RocketMQ、Kafka、ZooKeeper、XXL-JOB

· 去了解Nginx日志,防止DDOS攻击

· 全链路监控:微服务调用方式和调用时间

0

评论区