# LinuxSystemAdministrator **Repository Path**: hz_ojoj/linux-system-administrator ## Basic Information - **Project Name**: LinuxSystemAdministrator - **Description**: 这是一份 Linux 系统管理员和 DevOps 相关的面试题集合 - **Primary Language**: Shell - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-12 - **Last Updated**: 2025-11-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Linux 系统管理员/DevOps 面试问题 这是一份 Linux 系统管理员和 DevOps 相关的面试题集合,欢迎大家通过 Pull Request、提交 Issue 或发送邮件的方式贡献题目。 ## 目录 - [通用问题](#通用问题) - [基础 Linux 问题](#基础-linux-问题) - [进阶 Linux 问题](#进阶-linux-问题) - [高级 Linux 问题](#高级-linux-问题) - [专家级 Linux 问题](#专家级-linux-问题) - [网络相关问题](#网络相关问题) - [MySQL 相关问题](#mysql-相关问题) - [DevOps 相关问题](#devops-相关问题) - [Nginx 相关问题](#nginx-相关问题) - [Docker 相关问题](#docker-相关问题) - [趣味问题](#趣味问题) - [实操演练](#实操演练) - [其他参考资料](#其他参考资料) ## [⬆](#目录) 通用问题 - 你昨天/这周学到了什么新东西? - 谈谈你喜欢用的开发/管理环境(操作系统、编辑器、浏览器、工具等) - 说说你最近完成的一个重要的 Linux 项目 - 谈谈你在[近期]犯过的一个严重错误,如果重来你会怎么处理,从中学到了什么? - 为什么我们应该选择你? - DNS 在网络中起什么作用? - HTTP 是什么? - HTTP 代理是什么,它是怎么工作的? - 简单描述一下 HTTPS 的工作原理 - 什么是 SMTP?简单说说邮件是怎么通过 SMTP 发送的 - 什么是 RAID?RAID0、RAID1、RAID5、RAID10 各有什么特点? - 什么是 0 级备份?什么是增量备份? - 描述一下 Linux 系统的文件系统层级结构 - 公钥和私钥 SSH 密钥有什么区别? - 当你需要在生产环境中部署一个关键更新,但团队中没人有相关经验时,你会怎么做? - 如果你发现系统的性能在逐渐下降,但没有明显的错误日志,你会从哪些方面开始排查? - 如何评估和选择开源软件来解决特定的业务问题? - 当你和开发团队在系统架构决策上出现分歧时,如何处理? - 你如何保持自己的技术能力与时俱进? - 你如何衡量和监控系统的健康状况? - 如果让你负责一个全新的基础设施项目,你的第一步会是什么? - 你如何平衡系统安全性和易用性? - 你如何处理紧急故障和计划维护之间的关系? - 你如何评估新技术是否适合在生产环境中使用? ## [⬆](#目录) 基础 Linux 问题 - 管理员用户的名字和 UID 是什么? - 怎么列出目录下的所有文件,包括隐藏文件? - 在 Unix/Linux 中删除目录及其内容的命令是什么? - 用什么命令查看系统的内存使用情况?Linux 中真的有空闲内存吗? - 怎么在目录下的文件中递归查找字符串"my konfu is the best"? - 怎么连接远程服务器?SSH 是什么? - 怎么查看所有环境变量?怎么使用它们? - 执行 ifconfig -a 命令提示"command not found",可能是什么原因? - 连续按两次 TAB 键会发生什么? - 用什么命令查看 Unix/Linux 系统的磁盘空间? - 你知道哪些查看 DNS 记录的命令? - 哪些 Unix/Linux 命令可以修改文件的所有者和权限? - chmod +x FILENAME 这个命令是做什么的? - 文件权限 0750 表示什么意思? - 目录权限 0750 表示什么意思? - 怎么添加一个不能登录的新系统用户? - 怎么给用户添加/删除用户组? - bash 别名是什么? - 怎么设置 root 或其他用户的邮件地址? - CTRL-c 是干什么的? - CTRL-d 是干什么的? - CTRL-z 是干什么的? - /etc/services 文件里都有什么? - 在 bash 中怎么重定向标准输出和错误输出?(> /dev/null 2>&1) - UNIX 和 Linux 有什么区别? - Telnet 和 SSH 有什么区别? - 三个负载平均值是什么意思?怎么看系统的负载情况? - 能说出一个小写字母不是 GNU ls 命令的有效选项吗? - 什么是 Linux 内核模块? - 说说进入单用户模式排查问题的步骤 - 如果遇到网站 404 错误,你怎么排查? - ICMP 协议是什么?为什么需要它? - 怎么查看当前工作目录的绝对路径? - 用什么命令可以查看文件的内容,有哪几种方法? - 怎么创建一个空文件?有几种方法? - 什么是符号链接和硬链接?有什么区别? - 怎么查找一个命令的详细帮助信息? - 什么是 inode?它有什么作用? - Linux 中的设备文件有哪些类型? - 怎么查看系统当前的日期和时间? - 如何在命令行中查看文件的类型? - 什么是管道(pipe)?它是如何工作的? - 什么是进程?如何查看系统中的进程? ## [⬆](#目录) 进阶 Linux 问题 - 下面这些命令是做什么的?怎么用? - tee - awk - tr - cut - tac - curl - wget - watch - head - tail - less - cat - touch - sar - netstat - tcpdump - lsof - 命令后面加个 & 是什么意思? - 命令后面加 & disown 是什么意思? - 什么是包过滤器?它是怎么工作的? - 什么是虚拟内存? - 什么是 swap?用来做什么的? - A 记录、NS 记录、PTR 记录、CNAME 记录、MX 记录都是什么? - 还有其他的 DNS 记录类型吗?用来做什么? - 什么是分离视图 DNS? - 粘滞位是什么? - 不可变位对文件有什么影响? - 硬链接和符号链接有什么区别?删除源文件后会怎样? - inode 是什么?里面包含哪些信息? - 怎么强制在下次重启时检查文件系统? - SNMP 是什么?用来做什么? - 什么是运行级别?怎么查看当前运行级别? - 什么是 SSH 端口转发? - 本地端口转发和远程端口转发有什么区别? - 不用 useradd/adduser 命令怎么添加用户? - 设备文件的主设备号和次设备号是什么? - mknod 命令是做什么的?什么时候用? - 什么情况下会出现"文件系统已满"但 df 显示还有空间? - 删除文件后为什么 df 没有显示空间释放? - ps 命令是怎么工作的? - 孤儿进程是怎么产生的?有什么问题? - 简单解释一下各种进程状态 - 怎么查看哪个进程在监听某个端口? - 什么是僵尸进程?怎么产生的? - 执行 bash 脚本时,既想在终端看到输出又想保存到文件,怎么做? - echo "1" > /proc/sys/net/ipv4/ip_forward 这个命令是做什么的? - 简单说说为 https://foo.example.com 站点创建和安装证书的步骤 - 多个 HTTPS 虚拟主机可以共用一个 IP 吗? - 通配符证书是什么? - 你知道哪些 Linux 文件类型? - 进程和线程有什么区别?fork 后父子进程有什么关系? - exec 和 fork 有什么区别? - nohup 是用来做什么的? - myvar=hello 和 export myvar=hello 有什么区别? - ntp.conf 中配置几个 NTP 服务器比较合适? - ntpq -p 输出中的 reach 列是什么意思? - 要给 100-1000 台服务器升级内核,怎么做比较合适? - 怎么查看 SCSI 磁盘的 Host、Channel、ID、LUN 信息? - 怎么限制进程的内存使用? - bash 的快速替换功能(^x^y)知道吗? - 用过其他 shell 吗?比如? - tarpipe 是什么?怎么复制包括硬链接和特殊文件在内的所有内容? - 怎么判断 httpd 包是否已经安装? - 怎么查看包里包含哪些文件? - openssh-server-5.3p1-118.1.el6_8.x86_64 和 openssh-server-6.6p1-1.el6.x86_64 哪个版本更好? - 块存储和对象存储有什么区别? - 什么是 SELinux?它的工作原理是什么? - 什么是 systemd?它与传统的 SysV init 有什么区别? - 描述一下 Linux 系统中日志管理的机制 - 什么是 namespace?Docker 是如何使用它的? - 什么是 union filesystem?Docker 中如何使用? - 什么是 cron?如何安排定时任务? - 什么是日志轮转(log rotation)?为什么需要它? - 什么是 SSH 密钥认证?如何配置? - 什么是防火墙链(iptables chains)? - 什么是系统调用(system call)? ## [⬆](#目录) 高级 Linux 问题 - 什么是隧道?怎么绕过 HTTP 代理? - IDS 和 IPS 有什么区别? - 平时用哪些快捷键? - 什么是 Linux 标准规范(LSB)? - 什么是原子操作? - 新配置的 HTTP 服务器重启后没启动,怎么办? - ~/.ssh/authorized_keys 文件里放的是什么密钥?这个文件是做什么的? - 公钥已经加到 authorized_keys 里了,但还是要求输密码,可能是什么问题? - 你制作过 RPM、DEB 或 Solaris pkg 包吗? - :(){ :|:& };: 这个命令在系统上会有什么效果? - 怎么在脚本中捕获 Linux 信号? - 能捕获 SIGKILL 信号吗? - Linux 内核什么时候会启动 OOM killer?它怎么选择要杀掉的进程? - 详细描述从开机到出现登录提示符的整个 Linux 启动过程 - 什么是 chroot 监狱? - umount 目录时提示 busy,怎么找出是哪个进程在占用? - LD_PRELOAD 是什么?什么时候用? - 运行一个二进制文件但什么反应都没有,怎么调试? - cgroups 是什么?举个使用场景的例子 - 文件名只有不可打印字符的文件怎么删除? - 怎么调整 Linux 中进程的优先级? - 什么是 Kdump?它是如何工作的? - 解释一下 Linux 内核模块的加载过程 - 什么是 perf?如何使用它进行性能分析? - 什么是 eBPF?它有哪些应用场景? - 如何诊断和解决内存泄漏问题? - 什么是 NUMA 架构?它对性能有什么影响? - 什么是 I/O 调度器?Linux 支持哪些 I/O 调度器? - 解释一下 Linux 中的内存管理机制 - 什么是 soft limit 和 hard limit? - 什么是 inotify?它有什么用途? ## [⬆](#目录) 专家级 Linux 问题 - 一个运行中的进程在读取 socket 时出现 EAGAIN 错误(资源暂时不可用),不杀进程怎么关闭这个坏的 socket/文件描述符? - swapiness 参数控制什么? - 怎么调整 TCP 栈缓冲区?怎么计算合适的值? - 什么是大页(Huge Pages)?为什么默认不启用?什么时候用? - 什么是 LUKS?怎么用? - 如何实现零停机时间的应用部署? - 解释一下 Linux 内核的同步原语,如自旋锁、信号量、RCU 等 - 什么是 I/O 调度器?Linux 中有哪些不同的 I/O 调度器? - 如何调试和优化内核模块? - 什么是用户态和内核态?为什么需要这种区分? - 什么是中断处理?它是如何工作的? - 什么是内存屏障(memory barrier)? - 什么是死锁?如何避免? - 解释一下 Linux 中的虚拟化技术 - 什么是 ASLR?它有什么安全意义? ## [⬆](#目录) 网络相关问题 - localhost 是什么?什么情况下 ping localhost 会失败? - ping 和 traceroute 有什么相似之处?traceroute 怎么找到中间节点的? - 用什么命令查看机器上开放的所有端口和 socket 连接? - 300.168.0.123 是合法的 IPv4 地址吗? - RFC 1918 定义的私有地址段有哪些? - VLAN 是什么? - ARP 是什么?用来做什么? - TCP 和 UDP 有什么区别? - 默认网关是做什么的? - 用什么命令查看 Linux 的路由表? - TCP 连接可以用哪四个要素唯一标识? - 浏览器连接 Web 服务器时,源端口和目标端口分别是什么? - 怎么给特定网卡接口添加 IPv6 地址? - 给 eth0 添加了 IPv4 和 IPv6 地址,ping IPv4 正常但 ping IPv6 报错 sendmsg: operation not permitted,可能是什么问题? - SNAT 是什么?什么时候用? - 怎么通过 SSH 隧道登录到一个丢弃所有新连接的数据包过滤系统? - 怎么应对 DDoS 攻击? - 怎么查看 IP 数据包的内容? - IPoAC 是什么?(RFC 1149) - 绑定端口 0 会发生什么? - 什么是 MTU?如何优化网络性能? - 解释一下 TCP 的三次握手和四次挥手过程 - 什么是连接池?为什么需要它? - 什么是 CDN?它的工作原理是什么? - 如何排查网络延迟问题? - 什么是 VXLAN?它解决了什么问题? - 解释一下 HTTP/2 和 HTTP/1.1 的主要区别 - 什么是负载均衡?有哪些实现方式? - 什么是 SSL/TLS 终止? - 什么是网络命名空间(network namespace)? ## [⬆](#目录) MySQL 相关问题 - 怎么创建用户? - 怎么给用户授权? - "左连接"和"右连接"有什么区别? - 简单说说 InnoDB 和 MyISAM 的区别 - 简述配置主从复制的步骤 - 安装完 MySQL 为什么要执行 mysql_secure_installation? - 怎么查看正在运行的作业? - 怎么备份 MySQL 数据库? - 什么是事务?ACID 属性是什么? - 什么是索引?有哪些类型的索引? - 什么是主键和外键? - 什么是存储过程和触发器? - 如何优化慢查询? - 什么是读写分离? - 什么是分区表? - 什么是死锁?如何避免? - 什么是 MVCC(多版本并发控制)? - 什么是 binlog?它有什么作用? - 如何进行数据库的主从切换? - 什么是数据库连接池? ## [⬆](#目录) DevOps 相关问题 - 写脚本的工作流程是怎样的? - GIT 是什么? - 动态链接和静态链接的文件有什么区别? - "./configure && make && make install" 是做什么的? - puppet/chef/ansible 是做什么的? - Nagios/Zenoss/NewRelic 是做什么的? - Jenkins/TeamCity/GoCI 是做什么的? - 容器和虚拟机有什么区别? - 怎么创建 postgres 用户? - 什么是虚拟 IP 地址?什么是集群? - 怎么打印文件中的所有可打印字符串? - 怎么查找共享库依赖? - Automake 和 Autoconf 是什么? - ./configure 提示缺少 libfoobar 库,可能是什么问题?怎么解决? - 脚本和编译型程序各有什么优缺点? - 持续交付和 DevOps 有什么关系? - 持续集成和部署的关键要素有哪些? - 怎么在 AWS 中实现多个可用区的 EC2 实例共享文件? - 什么是基础设施即代码(IaC)? - Docker 和 Kubernetes 有什么区别? ## [⬆](#目录) Nginx 相关问题 - 什么是 Nginx,它与 Apache 有什么区别? - 请解释 Nginx 的工作原理和架构 - 什么是反向代理?如何配置? - 什么是正向代理?它与反向代理有什么区别? - 如何在 Nginx 中配置虚拟主机? - 如何实现负载均衡?Nginx 支持哪些负载均衡算法? - 什么是 upstream?如何配置? - 如何在 Nginx 中启用 gzip 压缩? - 如何配置 HTTPS 和 SSL 证书? - 什么是 Server Name Indication (SNI)? - 如何限制并发连接数和请求速率? - 如何配置缓存?proxy_cache 和 fastcgi_cache 有什么区别? - 什么是 location 匹配规则?匹配优先级是怎样的? - 如何配置 URL 重写(rewrite)? - 什么是防盗链?如何配置? - 如何实现动静分离? - 什么是 Nginx 的模块?如何添加第三方模块? - 如何进行 Nginx 的性能调优? - 如何监控 Nginx 的状态和性能? - Nginx 如何处理高并发连接? - 什么是 keepalive 连接?如何配置? - 什么是 stub_status 模块?如何使用? - 如何配置访问日志和错误日志? - 什么是 try_files 指令?如何使用? - 如何实现灰度发布? ## [⬆](#目录) Docker 相关问题 - 什么是 Docker?它与传统虚拟化有什么区别? - 请解释 Docker 的架构和核心组件 - 什么是 Docker 镜像?它与容器有什么区别? - 如何编写 Dockerfile?请举例说明 - 什么是 Docker Hub?如何使用? - 什么是 Docker Compose?它的作用是什么? - 如何创建、启动、停止和删除容器? - 如何进入正在运行的容器内部? - 什么是数据卷(Volume)?如何使用? - 什么是绑定挂载(Bind Mount)?它与数据卷有什么区别? - 如何在容器之间共享数据? - 什么是 Docker 网络?有哪些网络模式? - 如何自定义 Docker 网络? - 什么是 Docker Registry?如何搭建私有仓库? - 如何优化 Docker 镜像的大小? - 什么是多阶段构建?如何使用? - 如何进行容器的资源限制(CPU、内存)? - 什么是 Docker Swarm?如何使用? - Docker 容器如何实现开机自启动? - 如何备份和恢复 Docker 数据? - 什么是 Docker 安全最佳实践? - 如何监控 Docker 容器的性能? - 什么是 Docker 命名空间和控制组? - 如何进行容器的日志管理? - 什么是 Docker 插件?有哪些类型? ## [⬆](#目录) 趣味问题 - 粗心的系统管理员执行了 chmod 444 /bin/chmod 命令,怎么修复? - root 密码忘了怎么办? - 重启远程服务器后 10 分钟了还是 ssh 不上去,可能是什么问题? - 如果流落荒岛只能带 5 个命令行工具,你选哪几个? - 如果遇到一台似乎是控制宇宙的命令行电脑,你第一句命令是什么? - 说说你用 SSH 的一个有创意的方法 - 误删了一个正在运行的脚本,怎么恢复? - 2038 年 2 月 30 日会发生什么? - reboot 命令没反应怎么重启系统? - 如果给你一台超级计算机,你会用来做什么? - 如果你可以删除互联网上的任何东西,你会删除什么? - 你用过的最有创意的命令行技巧是什么? - 如果让你设计一个操作系统,你会怎么做? - 你最希望哪种技术从未来穿越到现在? - 如果你可以和任何计算机科学家共进晚餐,你会选择谁? ## [⬆](#目录) 实操演练 ## [⬆](#目录) 其他参考资料