Linux 基础
校招考察频度:★ 高频(日常开发必备·面试基础生命线) 复习主线:Linux 是后端服务交付与运行的物理底座,容器本质也是 Linux 进程。校招面试对 Linux 的考查聚焦于高频日常操作与生产应急排查,拒绝晦涩难懂的偏门指令,紧扣五大核心场景:文件与目录浏览操作、查看日志与追踪(
tail -f/less)、文本三剑客与管道(grep/awk/sed)、进程管理与信号(ps/kill -9vs-15/nohup)、网络端口与磁盘排查(netstat/ss/lsof/df/free)。
在现代工程实践中,无论是云服务器、Docker 容器、K8s Pod 还是生产故障排查,终端命令行都是后端开发工程师的“第一工作台”。
分类考频地图
| 专题 | 核心页面 | 校招考频星级 | 重点考查要点 |
|---|---|---|---|
| 文件与目录操作 | 文件与目录常用操作 | ★ 高频(日常必备) | cd/pwd/ls -lh、mkdir -p/rm -rf 安全规范、软链接 vs 硬链接、大文件查看(cat/less/head/tail -f 追踪日志)、find 文件查找、tar 解压缩 |
| 文本三剑客与管道 | 文本三剑客与管道 | ★ 高频(日志排查) | 输入输出重定向(>/>>/<)、2>&1 与 /dev/null 原理、grep 异常过滤与前后上下文(-C/-A/-B)、awk 列提取与统计 access.log PV/UV、sed 批量替换、sort/uniq/wc |
| 进程与服务管理 | 进程管理与日常命令 | ★ 高频(高频必考) | ps -ef/ps aux 进程筛选、kill -15(优雅停机)vs kill -9(内核强杀)本质区别、nohup ... & 后台守护机制、jobs/fg/bg、systemctl 服务启停配置 |
| 权限体系与系统排查 | 权限体系与系统排查 | ★ 高频(工程必问) | rwx 权限三元组与八进制表示(chmod 755/644)、chown 属主变更、端口占用排查(netstat/ss/lsof -i)、内存查看(free -h)、磁盘爆满排查(df -h/du -sh *)、环境变量 $PATH |
30 秒高频命令速查卡
后端日常 Linux 四大核心模块
| 场景需求 | 常用一行命令 | 关键参数与解析 |
|---|---|---|
| 实时追踪应用日志 | tail -f -n 200 app.log | -f 持续滚动追踪,-n 200 显示最新 200 行 |
| 搜索包含 Exception 的日志及前后 5 行 | grep -rn -C 5 "NullPointer" app.log | -r 递归,-n 行号,-C 5 显示上下文前后 5 行 |
| 统计访问日志中各 IP 的访问次数并降序 | awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 10 | 经典面试组合拳:提取首列 IP → 排序 → 去重计数 → 逆序排序 → 取 Top 10 |
| 查看 8080 端口被谁占用 | lsof -i :8080 或 ss -tunlp | grep 8080 | 查看监听 8080 端口的进程名称与 PID |
| 查看服务进程并查找 PID | ps -ef | grep "java -jar" | grep -v grep | ps -ef 列出所有进程,grep -v grep 过滤自身命令 |
| 后台持久运行 Java 服务 | nohup java -jar app.jar > app.log 2>&1 & | 忽略挂断信号,标准输出与错误输出合并重定向,后台运行 |
| 安全终止进程 | kill -15 <pid>(无效时再用 kill -9) | 15 为 SIGTERM 优雅退出,9 为 SIGKILL 内核强杀 |
| 排查磁盘是哪个大文件占满了 | df -h && du -sh /data/* | sort -hr | head -n 10 | df -h 先看挂载点空间,du -sh 找出目录下前 10 大文件/文件夹 |
| 解压 .tar.gz 压缩包 | tar -zxvf package.tar.gz -C /opt/ | -z gzip 解压,-x 提取,-v 显示过程,-f 指定文件,-C 解压到目标目录 |
| 赋予脚本执行权限 | chmod +x deploy.sh | 赋予属主及所有人可执行权限(等同于增加 x 位) |
生产故障应急排查决策流程
线上故障快速应急定位流程图
知识定位与分工
- 本项目 Linux 基础:侧重日常命令使用、日志检索、三剑客、进程维护、端口与磁盘排查,满足业务开发与求职面试的基础操作需求。
- 本项目 部署与云原生:侧重 Docker 容器技术与 K8s 编排调度,容器运行时基于 Linux 进程隔离与 Cgroups。
- 本项目 计算机网络:侧重 TCP 握手挥手、2MSL 治理、HTTP/2 及网络抓包排障。
校招高频面试追问
- 日常排查线上接口报错,你的日志排查流程是怎样的?
- 先用
tail -n 200 app.log或tail -f app.log查看最新报错; - 若错误较多或已知关键词,使用
grep -n -C 10 "Error|Exception" app.log提取报错详情与上下文异常堆栈; - 若日志量巨大(GB 级别),切忌使用
cat直接输出或vim打开,应使用less app.log结合/搜索,或用awk/grep过滤输出到临时文件后再分析。
- 先用
kill -9和kill -15有什么区别?为什么生产环境推荐先用kill -15?kill -15(SIGTERM)是正常终止信号,操作系统会通知目标进程,进程可以捕获该信号并执行清理逻辑(如释放数据库连接池、刷盘缓冲区、优雅完成正在处理中的 HTTP 请求);kill -9(SIGKILL)由内核直接强制回收进程资源,目标进程无法捕获也无法忽略该信号,容易导致事务中断、临时文件未清理或分布式锁未释放。
- 如何查看某个端口(如 8080)是否被监听?占用它的 PID 是多少?
- 使用
lsof -i :8080可以直接查看正在使用该端口的 COMMAND、PID、USER; - 或者使用
ss -tunlp | grep 8080(现代推荐)或netstat -tunlp | grep 8080,参数-t代表 TCP,-u代表 UDP,-n代表显示数字 IP 端口,-l代表监听状态,-p代表显示所属 PID。
- 使用