看到一些试题,融合自己的理解,做了一些补充,慢慢总结更新。

1. 简述客户端请求网页里 a.css 的过程

这个问题主要要结合缓存说一下,那么就涉及协商缓存和强缓存。

每个 header 详细的作用规则,其实很难记住的。我找了两张图

这个图讲了大致的过程,没有什么要解释的。

这个是原博主的一个参考答案

其实两个答案都不算严谨,当然我也给不出严谨的答案。因为细节涉及其实挺多的,涉及 HTTP 协议的版本,浏览器的实现,以及多个缓存相关字段如何相互作用等。每次遇到这种问题,都是针对性的去梳理逻辑。

简单梳理了一下涉及到缓存的一些 Header:

通用 Header

  • Cache-Control(1.1 之后)
  • Pragma(1.1 之前)

请求 Header

  • If-Match/If-None-Match
  • If-Modified-Since/If-Unmodified-Since

响应 Header

  • Etag
  • Expires
  • Last-Modified

2. Linux 如何查看某个进程的线程?

  1. ps -T -p pid,结果中 spid 就是线程号
  2. top -H -p pidtop -p pid 然后按「H」
  3. pstree -p pid

3. 软连接的原文件删除,能否编辑此软链接?

可以编辑,编辑之后保存,相当于创建了新的文件,文件名和原文件相同。

4. 如何识别文件是否是硬链接

-w487

索引数大于 2,就存在硬链接。

5. 什么场景会造成 CPU 低而负载很高?

首先负载应该是指 Load Average 吧,Load Average 是指单位时间内,系统处于可运行状态不可中断状态的平均进程数。

可运行状态进程包含两种:

  • 正在使用 CPU 的进程
  • 等待使用 CPU 的进程

不可中断状态进程:

  • 正处于内核关键流程中的进程,这些进程不可打断。常见的就是等待硬件设备的 IO 响应

所以 CPU 低而负载很高,一般就是“等待使用 CPU 的进程”多,对应 CPU 抢占的情况。或者“不可中断状态进程”多,一般就是 IO 操作密集,或磁盘故障。

6. 为什么普通用户没有 /etc/passwd 的写权限,却可以修改密码?

因为 passwd 命令设置了 SetUID 权限。

相关命令

chmod u+s myfile # 设置 SetUID 权限
chmod g+s myfile # 设置 SetGID 权限
chmod o+t mydir  # 设置粘滞位(stick bit) 权限

7. 查看 Linux 版本

cat /etc/issue