本文整理了50道常见运维工程师面试题,并为每道题提供了详细答案,涵盖Linux、网络、自动化运维、监控、故障排查等核心知识,助力求职者高效备考面试。
答案:
运维工程师负责IT系统的部署、维护、监控和优化,确保业务系统稳定运行。主要工作包括服务器管理、系统监控、故障排查、自动化脚本编写、数据备份恢复、安全加固等。
答案:
常用工具有:top、htop、vmstat、iostat、free、sar、dstat、netstat、iftop、iotop等。
答案:
可以使用命令:
`netstat -tuln` 或 `ss -tuln`
答案:
1. 客户端发送SYN包到服务器,进入SYN_SEND状态。
2. 服务器收到后,回SYN+ACK包,进入SYN_RECV状态。
3. 客户端收到后,回ACK包,连接建立,双方进入ESTABLISHED状态。
答案:
1. 使用`top`或`htop`查看占用高的进程。
2. 用`ps aux --sort=-%cpu`进一步定位。
3. 分析进程日志,判断是否为业务异常、死循环等。
4. 检查最近的变更和计划任务。
答案:
使用命令:
`ps aux | grep 进程名`
或
`ps -ef | grep 进程名`
详细状态可查看 `/proc/进程ID/` 目录下相关文件。
答案:
客户端向本地DNS查询,本地DNS若无缓存则递归查询根DNS、顶级域DNS、权威DNS,最终返回IP地址。
答案:
1. 使用`df -h`监控磁盘空间。
2. 配置监控工具(如Zabbix、Nagios、Prometheus)自动监控并设置阈值,超限告警。
答案:
- RAID 0:条带化,无冗余,提升性能,不提供容错。
- RAID 1:镜像,数据完全冗余,容错能力强,容量减半。
- RAID 5:条带+奇偶校验,兼顾性能与数据安全,允许一块硬盘坏。
答案:
使用`crontab`命令编辑定时任务:
`crontab -e`,按格式添加任务。
系统任务可编辑`/etc/crontab`或`/etc/cron.d/`目录。
答案:
主库将数据更改写入binlog,从库通过I/O线程读取binlog,SQL线程重放日志,实现数据同步。
答案:
1. 检查本地网络和DNS。
2. ping和traceroute测试连通性。
3. 检查服务器状态和端口监听。
4. 查看web服务日志。
5. 检查防火墙和安全组设置。
答案:
使用命令:
`find / -type f -size +500M`
或
`du -sh * | sort -hr | head -20`
答案:
用`uptime`或`top`查看。
load average表示单位时间(1、5、15分钟)内系统平均运行队列长度,反映系统繁忙程度。
答案:
- Apache:功能强大,模块丰富,配置复杂。
- Nginx:高并发、低资源消耗,反向代理能力强。
- Tomcat:Java Web专用,处理Servlet/JSP。
答案:
1. 用`show processlist;`查看当前连接。
2. 检查应用连接池配置。
3. 查看慢查询和SQL执行情况。
4. 优化SQL和索引,调整max_connections参数。
答案:
代理服务器接收客户端请求后转发给后端服务器,常用于负载均衡、缓存、隐藏真实服务器IP等。
答案:
iptables用于配置Linux防火墙规则。常用命令:
- 查看规则:`iptables -L`
- 添加规则:`iptables -A INPUT -p tcp --dport 80 -j ACCEPT`
- 删除规则:`iptables -D ...`
答案:
1. `lsof -i :端口号` 或 `netstat -tunlp | grep 端口号` 找到PID。
2. `kill PID` 或 `kill -9 PID` 杀死进程。
答案:
- IaaS:基础设施即服务,如虚拟机、存储。
- PaaS:平台即服务,如开发平台、数据库服务。
- SaaS:软件即服务,如邮箱、CRM等应用。
答案:
使用`last 用户名`命令查看登录记录。
答案:
NFS主要用于Linux间文件共享,Samba用于Linux与Windows间文件共享。
答案:
- Zabbix:功能全,易用,自动化强。
- Nagios:插件丰富,配置复杂。
- Prometheus:适合云原生,时序数据处理强,告警灵活。
答案:
1. 本地生成密钥对:`ssh-keygen`
2. 将公钥复制到目标主机:`ssh-copy-id user@host`
3. 测试免密登录。
答案:
- 挂载:`mount /dev/sdX1 /mnt/dir`
- 卸载:`umount /mnt/dir`
答案:
制定演练计划,模拟常见故障(如断网、宕机),测试应急流程、备份恢复、告警通知等,完善预案。
答案:
- 备份:`mysqldump -u user -p dbname > db.sql`
- 恢复:`mysql -u user -p dbname < db.sql`
答案:
基于容器技术,隔离应用运行环境。优点:轻量、易部署、一致性强、便于微服务和持续集成。
答案:
CI/CD指持续集成/持续交付,自动化测试、构建、部署。常用工具:Jenkins、GitLab CI、Travis CI等。
答案:
常见日志目录在`/var/log/`,如`/var/log/messages`、`/var/log/syslog`、`/var/log/auth.log`等。
答案:
可用`cgroups`限制资源,或用`ulimit`设置用户级限制。Docker容器可在启动时指定`--cpus`和`--memory`参数。
答案:
LVS为四层(传输层)负载均衡,性能高,适用于大流量。Nginx为七层(应用层),支持内容分发和更多策略。
答案:
- 查看:`ls -l 文件名`
- 修改:`chmod 权限 文件名`,如`chmod 755 file`
答案:
- logrotate:自动轮转、压缩日志。配置于`/etc/logrotate.conf`。
- 手动切割可用`mv`和`kill -USR1 进程号`。
答案:
监控主机异常行为,检测未授权访问。常用工具:OSSEC、AIDE、Tripwire等。
答案:
程序未释放不用的内存,导致内存占用持续增长。排查可用`top`、`ps`、`valgrind`等工具。
答案:
- kube-apiserver:API入口
- etcd:集群数据存储
- kube-scheduler:调度
- kube-controller-manager:控制器
- kubelet:节点管理
- kube-proxy:网络代理
答案:
编辑crontab:
`crontab -e`
添加:`0 3 * * * /sbin/reboot`
答案:
- 设置时间:`date -s "2024-06-01 12:00:00"`
- 设置时区:`timedatectl set-timezone Asia/Shanghai`
答案:
`netstat -an | grep ESTABLISHED | wc -l`
或
`ss -s`
答案:
- Ansible:无代理,YAML配置。
- SaltStack:分布式,适合大规模。
- Puppet/Chef:功能强大,适合复杂环境。
答案:
内容分发网络,将内容缓存到各地节点,用户请求就近获取资源,降低延迟、减轻源站压力。
答案:
`uname -r` 或 `cat /proc/version`
答案:
- 查看:`free -h`
- 清理:`sync; echo 3 > /proc/sys/vm/drop_caches`
答案:
SELinux是Linux的安全增强模块。临时关闭:`setenforce 0`。
答案:
- CPU:`lscpu`
- 内存:`free -h`
- 硬盘:`lsblk`、`fdisk -l`
- 详细:`dmidecode`
答案:
常用Shell、Python、Perl、Ruby等编程语言。
答案:
使用自动化工具(Ansible等)、CI/CD、脚本化批量操作、标准化部署、监控告警自动化等方式。
答案:
定期备份、异地备份、权限控制、加密传输、日志审计、定期灾备演练等。
答案:
关注技术社区、官方文档、博客、订阅行业资讯、参加培训和技术会议、主动实践新技术。
如需更多面试题及答案,欢迎留言或关注本站获取更新!
未经 qmjianli.com 同意,不得转载或采集本站的文章。