linux面试题记录
1.什么是孤儿进程,系统会怎么解决
孤儿进程指的是一个父进程已经终止退出,但子进程依旧在运行
liunx系统为了解决孤儿进程占用系统资源,当一个进程的父进程终止时,该孤儿进程会被系统的init进程(PID=1)收养,成为init的子进程,而init会周期性的调用wait()来回收这些孤儿进程的资源,确保他们不会变成僵尸进程,并完成清理工作。
2.给出ip地址 192.168.1.0/24,问有多少个子网地址可用
可用 IP 数 = 2^(32 - n) - 2,254个
3.输入url到页面返回发生了什么
输入url,首先进行DNS解析,浏览器解析URL提取出域名,向DNS服务器发起查询,获取域名对应服务器的ip地址
获取IP地址后,建立TCP连接向服务器的 80(HTTP)或 443(HTTPS)端口发起 TCP 三次握手,建立可靠的连接。
TCP连接完后,浏览器会构造一个HTTP请求报文,通过tcp连接发送给服务器。如果是 HTTPS,还会先进行 TLS 握手,协商加密密钥,对通信进行加密。
服务器接收到请求后,根据路径和参数进行处理,发送回一个HTTP响应报文
数据传输完毕后,通常会发起 TCP 四次挥手来断开连接
4.shell命令删除给定目录下的已“.log”为结尾的文件,要求只能用一条指令
假设目录/etc
find /etc -name "*.log" -type f -delete
find
: 查找命令/etc
: 指定的目录路径-name "*.log"
: 匹配所有以.log
结尾的文件名-type f
: 确保只匹配普通文件,排除目录-delete
: 对找到的文件执行删除操作
5.对于cpu平均负载这个概念是怎么理解的?
CPU 平均负载是指系统在特定时间间隔内(1分钟、5分钟、15分钟),处于可运行状态和不可中断状态的平均进程数。
可运行状态: 正在使用 CPU 或正在等待使用 CPU 的进程(R状态)。
不可中断状态: 正在等待 I/O(如磁盘读写)完成的进程(D状态)
6.top指令可以看到哪些信息?
第一行(top): 系统当前时间、系统运行时间、当前登录用户数、系统平均负载(1min, 5min, 15min)。
第二行(Tasks): 进程总数、正在运行的进程数、睡眠的进程数、停止的进程数、僵尸进程数。
第三行(%Cpu(s)): CPU 使用率百分比。
us:用户空间进程占用
sy:内核空间进程占用
ni:优先级被调整的进程占用
id:空闲CPU
wa:等待 I/O 完成的CPU时间(I/O等待)
hi:硬件中断占用
si:软件中断占用
st:被虚拟机偷取的时间(对于虚拟化环境)
第四、五行(KiB Mem & KiB Swap): 物理内存和交换空间的使用情况(总大小、已用、空闲、缓冲/缓存)。
PID: 进程ID
USER: 进程所有者
PR/NI: 优先级/Nice值
VIRT/RES/SHR: 虚拟内存/常驻物理内存/共享内存使用量
%CPU/%MEM: 进程使用的 CPU 和物理内存百分比
TIME+: 进程使用的总 CPU 时间
COMMAND: 启动进程的命令行
7.redis缓存雪崩,如何解决
缓存雪崩是指在同一时段内,大量的缓存 key 同时失效或者 Redis 服务宕机,导致所有请求瞬间都落到数据库上,造成数据库压力巨大甚至崩溃。
解决方案
为了预防大量的缓存 key 同时失效, 给缓存数据设置过期时间时,加上一个随机值(例如:基础时间 + 随机几分钟),避免大量 key 在同一时刻失效。
为了预防Redis 服务宕机,用 Redis Sentinel(哨兵)或 Redis Cluster(集群)来实现高可用,即使个别节点宕机,整个集群也能继续提供服务。
在系统启动或高峰期来临之前,提前加载一部分热点数据到缓存中。