代码改变世界

实用指南:ICT运维面试问那些问题

2026-01-25 16:17  tlnshuju  阅读(0)  评论(0)    收藏  举报

ICT运维的面试题范围非常广,今天整理一份分类的面试题清单,包括基础概念题场景题高频命令题,并附上考察点和答题思路。


一、Linux 基础与核心概念

这类问题考察候选人的基本功是否扎实。

  1. 1. 请描述一下 Linux 的启动过程。

    • • 考察点:对系统初始化流程的理解。

    • • 参考答案

      1. 1. 加电自检:BIOS/UEFI 进行硬件检查。

      2. 2. 引导加载程序:GRUB2 等被加载,显示启动菜单。

      3. 3. 加载内核:引导程序加载内核和 initramfs 到内存,并解压初始化。

      4. 4. 初始化进程:内核启动第一个用户空间进程 systemd(或旧的 init)。

      5. 5. 执行目标systemd 根据默认 target(如 multi-user.target 或 graphical.target)启动相应的服务和单元。

      6. 6. 登录界面:启动 getty 或显示管理器,等待用户登录。

  2. 2. 什么是负载均衡?Linux 下如何查看平均负载?

    • • 考察点:对系统性能基础指标的理解。

    • • 参考答案

      • • 负载均衡:指系统在一段时间内,处于可运行状态和不可中断状态的进程平均数量。它反映了系统的忙碌程度。

      • • 查看命令uptime 或 top 命令输出中的 load average: 1.05, 5.10, 15.00

      • • 解读:三个数字分别代表 1分钟、5分钟、15分钟的平均负载。通常,如果平均负载持续高于 CPU 核心数,就意味着系统可能过载。

  3. 3. 硬链接和软链接的区别是什么?

    • • 考察点:对文件系统底层原理的理解。

    • • 参考答案

      • • 硬链接

        • • 是原文件的另一个入口,与原文件共享相同的 inode。

        • • 不能跨文件系统。

        • • 删除原文件,硬链接依然有效(只是链接数减一)。

        • • ln source hard_link

      • • 软链接

        • • 是一个独立的文件,内容指向原文件的路径,拥有自己的 inode。

        • • 可以跨文件系统。

        • • 删除原文件,软链接将失效(“断链”)。

        • • ln -s source soft_link

  4. 4. 简述 vi 编辑器的三种模式及其切换。

    • • 考察点:对最基础文本编辑工具的熟练度。

    • • 参考答案

      • • 命令模式:刚进入 vi 时的模式,可以执行复制、粘贴、删除、查找等命令。

      • • 插入模式:按 iao 等键进入,可以进行文本编辑。

      • • 底线命令模式:在命令模式下按 : 进入,可以保存、退出、查找替换等。

      • • 切换ESC 键可以从插入模式或底线命令模式退回命令模式


二、网络管理与故障排查

这是运维的核心技能,问题会非常深入。

  1. 1. 当用户报告“网站打不开”,你的排查思路是什么?

    • • 考察点:系统化的故障排查能力和逻辑思维。

    • • 参考答案

      1. 1. 明确问题:是个别用户还是所有用户?是某个页面还是所有页面?

      2. 2. 本地排查:自己尝试访问,使用 curl -I 查看 HTTP 状态码。

      3. 3. DNS 解析nslookup 或 dig 查看域名是否能正确解析到 IP。

      4. 4. 网络连通性ping 测试服务器是否可达;traceroute 跟踪路由路径。

      5. 5. 端口与服务telnet <IP> <port> 或 nc -zv <IP> <port> 检查服务端口是否开放。

      6. 6. 服务器状态:登录服务器,systemctl status nginx/php-fpm 检查服务状态;top/htop 查看资源使用;df -h 查看磁盘空间;tail -f /var/log/nginx/error.log 查看错误日志。

      7. 7. 防火墙与安全组:检查 iptables/firewalld 以及云服务商的安全组规则。

  2. 2. netstat** 和 ss 命令有什么区别?你常用哪个?**

    • • 考察点:对网络工具的了解和使用习惯。

    • • 参考答案

      • • ss 是 netstat 的现代替代品,它直接从内核空间获取信息,速度更快

      • • netstat 通过遍历 /proc 文件系统来收集信息,在连接数非常多时速度较慢。

      • • **我常用 **ss,因为它更高效。例如查看所有 TCP 连接:ss -tlnp

  3. 3. 解释一下 TCP 三次握手和四次挥手的过程。为什么是三次和四次?

    • • 考察点:对 TCP 协议核心机制的理解。

    • • 参考答案

      • • 三次握手

        1. 1. 客户端发送 SYN

        2. 2. 服务端回复 SYN-ACK

        3. 3. 客户端再回复 ACK

        4. 4. 为什么是三次:三次握手已经足够确认双方的收发能力都正常,防止了已失效的连接请求报文突然又传送到服务器而产生错误。

      • • 四次挥手

        • • 为什么是四次:因为 TCP 是全双工的,关闭连接需要双方都确认关闭。第二步和第三步不能合并,是因为被动方可能还有数据需要发送。

        1. 1. 主动方发送 FIN

        2. 2. 被动方回复 ACK

        3. 3. 被动方准备好后,也发送 FIN

        4. 4. 主动方回复 ACK


三、Shell 脚本与自动化

考察实际动手能力和编程思维。

  1. 1. 如何统计一个日志文件中 IP 地址的访问次数并排序?

    • • 考察点:文本处理能力,对 awksortuniq 等命令的熟练度。

    • • 参考答案

# 假设日志格式为:... [ip] ... 或 IP 在第一列
awk '{print $1}' access.log | sort | uniq -c | sort -nr
    * `awk` 提取 IP 列。
    * `sort` 排序,为 `uniq -c` 做准备。
    * `uniq -c` 统计并计数。
    * `sort -nr` 按计数倒序排列。
  1. 2. 写一个脚本,定时检查某个进程是否存在,如果不存在则自动重启。

    • • 考察点:基本的脚本编写和流程控制能力。

    • • 参考答案

#!/bin/bash
PROCESS_NAME="nginx"
if ! pgrep -x "$PROCESS_NAME" > /dev/null
then
    echo "$(date): $PROCESS_NAME is down, restarting..." >> /var/log/process_monitor.log
    systemctl start $PROCESS_NAME
fi
    * 然后使用 `crontab -e` 添加定时任务:`* * * * * /path/to/script.sh`。

四、服务管理与安全

  1. 1. 简述 systemctl 和 service 命令的区别与联系。

    • • 考察点:对 Linux 服务管理演进的理解。

    • • 参考答案

      • • service 是 SysV init 系统的脚本管理命令,它是一个兼容性脚本。

      • • systemctl 是 systemd 系统的原生命令,功能更强大,可以管理服务、挂载点、套接字等所有“单元”。

      • • 在 systemd 系统中,service xxx start 实际上会被转发给 systemctl start xxx 执行。

  2. 2. 如何排查服务器遭受 SSH 暴力破解?如何处理?

    • • 考察点:安全意识和应对能力。

    • • 参考答案

      • • 排查grep "Failed password" /var/log/secure 或 journalctl -u ssh,查看大量失败登录记录。

      • • 处理

        1. 1. 立即封禁 IP:使用 fail2ban 工具自动封禁,或手动 iptables -A INPUT -s <攻击IP> -j DROP

        2. 2. 强化 SSH

          • • 修改默认端口。

          • • 禁止 root 用户直接登录 (PermitRootLogin no)。

          • • 使用密钥认证,禁用密码认证 (PasswordAuthentication no)。

          • • 使用强密码策略。


五、场景与行为面试题

这类问题没有标准答案,考察综合能力和软技能。

  1. 1. 假设一台线上服务器 CPU 使用率突然达到 100%,你的处理流程是什么?

    • • 考察点:应急处理能力、压力下的逻辑思维。

    • • 答题思路

      1. 1. 快速定位top -> 按 1 看每个核心,按 P 按 CPU 排序,找到占用最高的进程。

      2. 2. 深入分析

        • • 如果是 Java 应用,用 jstack 抓取线程栈,分析是否死锁或死循环。

        • • 用 strace -p <PID> 跟踪进程的系统调用。

        • • 用 perf 工具进行性能剖析。

      3. 3. 临时解决:如果是非核心业务进程,可以谨慎 kill

      4. 4. 长远解决:根据分析结果修复代码或调整系统配置。

  2. 2. 你如何保证你所维护的服务的高可用性?

    • • 考察点:架构设计思想和运维体系规划能力。

    • • 答题思路

      • • 消除单点:应用层负载均衡,数据库主从/集群,多机房部署。

      • • 容错与自愈:服务健康检查、自动故障转移、弹性伸缩。

      • • 监控与告警:建立完善的监控体系,出现问题第一时间发现并通知。

      • • 备份与恢复:定期备份数据并演练恢复流程。

      • • 变更管理:灰度发布、蓝绿部署,减少变更风险。

  3. 3. 你平时是如何学习新技术,跟上行业发展的?

    • • 考察点:学习能力和职业热情。

    • • 答题思路:结合自身情况,可以提到:

      • • 关注技术博客/社区(如 InfoQ, GitHub, Stack Overflow)。

      • • 系统学习在线课程。

      • • 在个人项目或实验环境中动手实践。

      • • 参加技术沙龙和会议。

      • • 阅读官方文档和经典书籍。


面试准备建议

  • • 理解原理:不要死记硬背命令,要理解其背后的工作原理。

  • • 动手实践:所有命令和场景最好都在自己的实验环境里操作过。

  • • 准备项目:准备好1-2个你解决过的复杂运维案例,能清晰地描述背景、你的角色、采取的行动和最终的结果。

  • • 保持诚实:遇到不会的问题,坦诚承认,并说明你的解决思路,这比瞎猜要好。