linux怎么学面试
linux怎么学面试详细介绍
准备 Linux 相关面试,需要系统梳理核心知识、强化实战能力,并针对常见考点进行针对性复习。以下是分阶段的学习和面试准备建议:
一、核心知识体系梳理
1. 基础命令(必考点)
- 文件 / 目录操作:
ls/ll/lsattr、cd、mkdir/rmdir、cp/mv/rm、cat/more/less/head/tail、find/locate、grep/egrep、which/whereis、tar/gzip/gunzip、du/df。 - 权限管理:
chmod(数字 / 符号模式)、chown/chgrp、权限掩码umask、ACL 权限(setfacl/getfacl)。 - 进程管理:
ps(aux/ef)、top/htop、kill/killall、pkill、bg/fg、nohup、jobs、进程优先级(nice/renice)。 - 系统状态:
uname、uptime、free、vmstat、dmesg、last/lastlog。 - 网络工具:
ping/traceroute、netstat/ss、nmap、telnet/nc、wget/curl、ifconfig/ip、route、netplan。 - 文本处理:
vim(模式切换、常用命令)、echo、printf、sed、awk(重点!面试常考文本处理案例)、sort/uniq/wc。
2. 系统管理(高频考点)
- 用户 / 组管理:
useradd/userdel/usermod、groupadd/groupdel、密码管理(passwd/shadow/gshadow)、sudo 配置(visudo)。 - 磁盘与文件系统:分区工具(
fdisk/parted)、格式化(mkfs)、挂载 / 卸载(mount/umount)、交换分区(swap)、LVM 逻辑卷管理(创建 / 扩容 / 缩减卷组)。 - 服务与启动:Systemd(
systemctl start/stop/enable/disable)、传统 SysVinit 脚本对比、服务状态查看(status/journalctl)、开机启动项管理(systemd-analyze)。 - 日志管理:常见日志路径(
/var/log/下的syslog/dmesg/auth.log等)、日志切割(logrotate配置)、日志分析工具(grep/awk/sed/cut)。
3. 网络服务与架构
- 基础服务配置:SSH(远程连接、密钥认证)、HTTP/HTTPS(Nginx/Apache 配置,虚拟主机、反向代理、负载均衡)、FTP/SFTP、DNS(BIND 配置)、DHCP。
- 高级主题:NAT / 端口转发(
iptables/nftables)、TCP/IP 协议栈(三次握手 / 四次挥手,常见端口号)、代理服务(Squid)、VPN(OpenVPN)。 - 容器与云原生(加分项):Docker(镜像构建、容器管理、Docker Compose)、Kubernetes(Pod/Service/Deployment 概念)。
4. 性能优化与故障排查
- 资源监控:CPU(
top/htop/pidstat)、内存(free/vmstat/pmap)、磁盘 I/O(iostat/dstat/iotop)、网络(iftop/nethogs)。 - 性能调优:进程优先级调整、swap 分区优化、文件描述符限制(
ulimit)、内核参数优化(/etc/sysctl.conf)。 - 故障排查场景:系统卡顿、服务无法启动、网络不通、磁盘空间满(
df/du排查大文件)、进程僵尸状态(ps -A -o stat,ppid,pid,cmd | grep -w defunct)。
5. Shell 脚本与自动化
- 基础语法:变量、条件判断(
if)、循环(for/while)、函数、输入输出重定向(>,>>,2>&1)。 - 实战场景:批量文件处理、定时任务(
crontab编写脚本)、监控脚本(如检查服务状态并重启)。 - 进阶工具:expect(自动化交互)、awk 复杂案例(如统计日志中 Top10 的 IP)。
二、面试高频问题举例(附答题思路)
1. 基础命令类
- 问题:如何统计一个文本文件中包含 “error” 的行数?
答:grep -c "error" filename(-c参数直接计数)。 - 问题:如何查看 8080 端口是否被占用?
答:netstat -tunlp | grep 8080或ss -tunlp | grep :8080(推荐ss,更高效)。
2. 系统管理类
- 问题:如何将一个用户添加到 sudo 组?
答:编辑/etc/sudoers(通过visudo),添加username ALL=(ALL) ALL,或使用usermod -aG sudo username(Ubuntu/Debian 系)。 - 问题:LVM 如何扩容逻辑卷?
答:步骤:① 新增物理磁盘并创建 PV;② 将 PV 加入 VG;③ 用lvextend扩容 LV;④ 用resize2fs(ext 文件系统)或xfs_growfs(XFS)更新文件系统。
3. 故障排查类
- 问题:服务器磁盘空间满了,但
df -h和du -sh显示不一致,如何处理?
答:可能存在被删除但仍被进程占用的文件,用lsof | grep deleted找到进程,重启对应服务释放句柄。 - 问题:如何排查 SSH 连接缓慢的问题?
答:检查/etc/ssh/sshd_config中是否开启UseDNS yes(改为no关闭 DNS 反向解析),或通过ssh -v查看详细日志。
4. 脚本与优化类
- 问题:写一个脚本,每天凌晨 2 点备份
/data目录到/backup,保留 7 天内的备份。
答:使用crontab定时执行脚本,脚本中用tar打包,并结合find /backup -mtime +7 -exec rm {} \;删除过期文件。 - 问题:如何限制一个进程的 CPU 使用率不超过 50%?
答:用nice调整优先级(范围 - 20~19,值越大优先级越低),或用cgroups(Linux 控制组)进行资源限制。
三、实战准备建议
- 搭建实验环境:
- 使用虚拟机(VMware/VirtualBox)或云服务器(阿里云 / 腾讯云免费套餐),实操用户管理、服务部署、故障模拟(如人为占满磁盘、杀死关键进程)。
- 推荐项目:部署 LNMP 环境(Nginx+MySQL+PHP),配置 HTTPS(Let’s Encrypt),用 Docker 部署一个 WordPress 服务。
- 刷经典题目与资源:
- 书籍:《Linux 命令行与 shell 脚本编程大全》《鸟哥的 Linux 私房菜》(基础)、《深入理解 Linux 内核》(进阶,可选)。
- 在线平台:LeetCode(shell 脚本题)、Linux Academy、B 站免费教程(如 “Linux 系统管理实战”)。
- 面试题库:牛客网、脉脉 Linux 面试题汇总,重点看大厂高频问题(如阿里、腾讯的 Linux 系统工程师岗位常考 LVM、Docker、网络优化)。
- 模拟面试与复盘:
- 找同行或前辈模拟面试,重点练习 “口述排查过程”(如 “假设你遇到服务器 CPU 占用 100%,如何一步步定位?”)。
- 记录薄弱点,如忘记
iptables端口转发命令(iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE),反复实操直到熟练。
四、面试加分技巧
- 突出项目经验:如果有实际运维 / 开发经验,详细描述曾解决的问题(如 “通过优化 Nginx 缓存策略,将页面响应时间从 2s 降至 300ms”)。
- 关注新技术:若目标岗位涉及云计算,掌握 Docker/K8s 基础概念(如 Pod 与容器的关系、K8s 服务发现机制);若偏安全,补充 SELinux/AppArmor 知识。
- 展现排查思路:回答问题时先讲逻辑步骤,再写具体命令(如 “首先用
top定位高 CPU 进程,然后用strace追踪系统调用,最后分析日志定位问题”)。
五、学习计划参考(1-3 个月)
- 第 1 个月:掌握基础命令(每天 30 分钟实操),完成用户 / 权限 / 磁盘管理实战(如创建 3 个用户,设置不同权限,挂载 U 盘并配置自动挂载)。
- 第 2 个月:深入系统服务(部署 Nginx/Apache,配置 FTP 服务器),学习 shell 脚本(完成 3 个自动化脚本,如日志切割、定时备份)。
- 第 3 个月:专攻面试高频场景(性能优化、故障排查),模拟实战环境(用 Docker 搭建多容器服务,模拟网络故障并排查)。
通过 “理论 + 实战 + 复盘” 的闭环,结合面试真题针对性强化,可大幅提升通过概率。重点记住:Linux 面试重实操,少背命令多动手,遇到不会的问题诚实说明,但清晰表达解决思路(如 “虽然我没直接处理过,但可以尝试用 XX 工具排查 XX 方面”)。