3940 字
约 13 分钟
5
S02-X01 · 面试问答速查:操作系统 / 计算机网络 / 网络编程

定位:速查附录,可跳读。只做"题干 → 一句话答案 → 正文小节"的索引,不重复正文。
前置:S02-B01–B10。
覆盖旧文:A-2323(34 道操作系统八股,449 点)、A-2639(操作系统面试题及答案,329 点)、A-2320(63 道计算机网络八股,1,086 点)、A-2611(网络编程面试题,368 点)、A-1897(操作系统学习路线,85 点)= 2,317 点。
上一篇:S02-B10 · 从 OpenAPI 到可执行工具:API 描述如何变成插件
下一篇:S02-J01 · TCP 排障与调优。

使用说明:括号里是正文小节(如 B03 §2)。先读正文再背答案——只有答案没有机制,追问一句就露馅。
标注 ⚠ 的条目是旧文口径需要修正的地方,正文里已说明原因。


1. 操作系统(A-2323 / A-2639)

# 问题 一句话答案 正文
1 进程与线程的区别 进程是资源分配单位,线程是调度单位;线程共享地址空间 B02 §2
2 线程共享哪些资源 堆、全局变量、代码段、fd 表;栈与寄存器独立 B02 §2
3 为什么线程切换比进程切换便宜 线程切换不换页表,无 TLB/cache 大范围失效 B02 §4
4 协程为什么轻 用户态切换 + 小栈(KB 级);不经过内核调度 B02 §5
5 线程越多越好吗 否;CPU 密集受核数限制,切换开销随数量上升 B02 §3(实测)
6 用户态与内核态 两档权限;系统调用是穿越通道 B01 §5.1
7 系统调用为什么有开销 保存/恢复上下文 + 权限切换 B02 §4
8 什么是中断 打断当前执行去处理事件;分硬中断(网卡)与软中断(延后处理) B01 §5.4
9 软中断为什么会影响网络性能 收包在软中断上下文处理,高流量下 ksoftirqd 吃满 CPU B01 §5.4、J01
10 进程创建过程 fork 复制地址空间(写时复制)+ exec 换程序 B02 §6
11 什么是写时复制(COW) fork 后父子共享物理页,写入才真正复制 B02 §6
12 多线程程序能 fork 吗 能但要立刻 exec;其他线程在子进程中不存在 B02 §6
13 进程有哪些状态 新建/就绪/运行/阻塞/终止 B01 §9.1
14 进程间通信方式 管道、消息队列、共享内存、信号、socket B01 §9.1
15 共享内存为什么最快 不需要内核拷贝,但要自己做同步 B01 §9.1
16 什么是僵尸进程 子进程退出但父进程未 wait 回收 B01 §9.1、S15
17 孤儿进程 父进程先退出,子进程被 init/systemd 收养 B01 §9.1
18 守护进程 脱离终端、在后台长期运行 B01 §9.1
19 死锁的四个必要条件 互斥、占有并等待、不可剥夺、循环等待 B01 §9.1、S05
20 如何避免死锁 破坏任一条件:统一加锁顺序、超时、资源一次性分配 S05
21 常见调度算法 FCFS、SJF、时间片轮转、优先级、多级反馈队列 B02 §7
22 Linux 用的什么调度器 CFS(按虚拟运行时间分配,交互任务优先) B02 §7
23 什么是虚拟内存 进程看到连续地址,实际映射到物理页 B01 §5.3
24 页表 / 快表 / MMU 映射表 / TLB 缓存 / 地址转换硬件 B01 §5.3
25 缺页中断 访问的页不在内存,内核从磁盘取入 B01 §5.3
26 页面置换算法 FIFO、LRU、Clock、OPT(理论最优) B01 §9.1、S05
27 局部性原理 时间局部性 + 空间局部性,是缓存有效的前提 B01 §9.1
28 内存覆盖与交换 手工复用内存 / 整进程换出到磁盘 B01 §9.1
29 为什么 socket 缓冲不算进程堆内存 它是内核内存,不受 -Xmx 限制 B01 §5.3
30 磁盘调度算法 FCFS、最短寻道(SSTF)、电梯(SCAN) B01 §9.1
31 总线/输入输出设备 连接 CPU、内存与外设的通道 B01 §9.1
32 学习路线建议 先机制(进程/内存/IO)再算法(调度/置换),配合命令验证 附录 A

2. 计算机网络(A-2320)

# 问题 一句话答案 正文
33 OSI 七层与 TCP/IP 四层 教学模型 vs 实现模型;排障按四层看 B01 §6
34 交换机与路由器的区别 交换机按 MAC(链路层),路由器按 IP(网络层) B01 §9.2
35 三次握手过程 SYN → SYN+ACK → ACK B03 §2
36 为什么是三次不是两次 双向确认收发能力;两次无法让服务端确认自己的 SYN 被收到 B03 §2.1
37 什么是半连接队列 收 SYN 未完成握手的连接;SYN Flood 的攻击目标 B03 §2.2
38 accept 队列满了会怎样 已完成握手但应用 accept 慢;ss -lnt 的 Recv-Q 逼近 Send-Q B03 §2.2
39 四次挥手过程 FIN → ACK → FIN → ACK B03 §3
40 为什么挥手是四次 全双工,两个方向各自关闭;被动方可能还有数据要发 B03 §3
41 TIME_WAIT 为什么存在 保证最后 ACK 可达 + 让旧包消亡(2×MSL) B03 §4.2
42 TIME_WAIT 出现在哪一端 主动关闭方(实测:30 次主动关闭 → 多 30 条) B03 §4.1
43 端口耗尽怎么办 连接池/keepalive(根治);tcp_tw_reuse 仅对出向有效 B03 §4.3
44 tcp_tw_recycle 能用吗 ⚠ 不能,新内核已移除,NAT 下会导致连接失败 B03 §7
45 TCP 如何保证可靠 序号、确认、超时重传、窗口 + 拥塞控制 B04 §1
46 什么是快重传 收到 3 个重复 ACK 立即重传,不等超时 B04 §3.1
47 RTO 是什么 重传超时,按 RTT 动态计算;最小 200 ms 级 B04 §3.2
48 流量控制与拥塞控制的区别 前者怕撑爆接收方(window),后者怕撑爆网络(cwnd) B04 §3.3–3.4
49 慢启动与拥塞避免 cwnd 指数增长 → 到阈值后线性增长 B04 §3.4
50 BDP 与吞吐的关系 吞吐 ≈ 窗口 / RTT;跨国高延迟必须放大窗口 B04 §3.5
51 丢包为什么让吞吐断崖 丢包被当作拥塞信号 → cwnd 砍半/回 1(实测 472 MB/s → 0.27 MB/s) B04 §2
52 TCP 与 UDP 的区别 连接/可靠/有序/字节流 vs 无连接/不可靠/数据报 B04 §4
53 UDP 什么时候更好 数据迟到就没用(音视频、游戏、DNS、QUIC) B04 §4.1
54 什么是粘包 ⚠ 术语误导:TCP 是字节流,边界要应用层自己划 B05 §1
55 粘包怎么解决 长度前缀 / 分隔符 / 定长;Netty 有对应解码器 B05 §4
56 HTTP 报文结构 起始行 + 头部 + 空行 + 体 B06 §3
57 常见状态码 200/201/204;301/302/304;400/401/403/404/429;500/502/503/504 B06 §3
58 301 与 302 的坑 301 会被浏览器长期缓存,改错难挽回 → 调试用 302 B06 §3
59 HTTP 与 HTTPS 的区别 HTTPS = HTTP + TLS;加密在 TCP 之上 B06 §1
60 HTTPS 加密发生在哪一层 传输层之上、应用层之下(TLS 记录层) B06 §1
61 证书链如何验证 叶→中间→根;根必须在客户端信任库 B06 §5
62 证书验证的三个检查 链可信、域名匹配、时间有效 B06 §5
63 SNI 是什么 ClientHello 里带的域名,服务器据此选证书 B06 §5.1
64 TLS 1.3 比 1.2 强在哪 1-RTT、强制前向安全、精简套件 B06 §4
65 0-RTT 有什么风险 数据可被重放 → 只能用于幂等请求 B06 §4.1
66 HTTPS 挡不住什么 域名(SNI)、流量特征、服务端泄露、应用漏洞 B06 §6
67 HTTP/1.1 → 2 → 3 队头阻塞 → 多路复用 → QUIC(UDP) B01 §9.2、B06
68 HPACK 省什么 重复头部只传索引号;高频小请求收益最大 B09 §3.1
69 WebSocket 握手过程 HTTP Upgrade → 101 Switching Protocols B07 §3
70 Sec-WebSocket-Accept 怎么算 base64(SHA1(key + GUID)) B07 §3.2
71 SSE 与 WebSocket 的区别 单向文本流(内置续传) vs 双向二进制 B07 §4
72 长轮询与短轮询 挂起等数据 vs 定时问;实时性与连接数此消彼长 B07 §4
73 WebSocket 断线怎么办 心跳发现 + 退避重连 + 序号补发 + 幂等去重 B08 §3–5
74 TCP keepalive 够用吗 不够;默认 7200 s 才探测,且穿不透应用层代理 B08 §3
75 心跳间隔怎么定 < min(LB/NAT 空闲超时)/2;并计入额外 QPS B08 §3.1
76 重连为什么要抖动 防重连风暴(服务端恢复瞬间被打挂) B08 §4
77 HTTP 与 RPC 的区别 HTTP 是传输协议,RPC 是调用模型(可跑在 HTTP/2 上) B09 §1
78 RPC 为什么更快 二进制序列化 + 头部压缩 + 多路复用 + 语义开销小 B09 §3
79 什么时候用 gRPC 内部高频、强契约、需要流式 B09 §5
80 DNS 解析过程 递归/迭代查询;本机 hosts → 本地 DNS → 根/顶级/权威 B01 §2.1
81 ARP 的作用 本地网段内 IP → MAC B01 §4
82 网关的作用 跨网段的出口 B01 §2.2
83 子网掩码 划分网络号与主机号 B01 §9.2
84 ping 用的是什么协议 ICMP B01 §9.2、J01
85 中间人攻击能防吗 HTTPS 能防(除非客户端信任了攻击者根证书) B06 §6
86 SQL 注入属于网络问题吗 不是;属应用层安全(S13) B01 §9.2
87 数字签名作用 完整性 + 来源认证(私钥签、公钥验) B06 §5
88 对称与非对称加密 AES 快(传数据);RSA/ECDHE 慢但能协商密钥 B06 §4
89 有状态 vs 无状态协议 TCP 维护连接状态;UDP 不维护 B04 §4

3. 网络编程(A-2611)

# 问题 一句话答案 正文
90 socket 编程的基本步骤 服务端 socket/bind/listen/accept;客户端 connect B01 §3
91 四元组是什么 源 IP/端口 + 目的 IP/端口,唯一确定连接 B01 §3
92 端口与进程的关系 绑定关系;一个端口可承载多连接 B01 §3
93 阻塞/非阻塞/IO 多路复用 等结果 vs 立即返回 EAGAIN vs 一次等多个 fd B01 §9.2、S05
94 select / poll / epoll 的区别 fd 上限、是否轮询、是否事件驱动 S05
95 水平触发与边缘触发 有数据就通知 vs 只在状态变化时通知 S05
96 为什么 epoll 更适合高并发 无需线性扫描全部 fd S05
97 一次 recv 能拿到多少 缓冲区当前可用的字节数,与 send 次数无关 B05 §2
98 为什么会出现半包 数据还没到齐;解析要判断"够不够一条" B05 §5
99 长度字段为什么要校验上限 伪造长度可打爆内存 B05 §5.1
100 SO_REUSEADDR 干什么 允许复用处于 TIME_WAIT 的地址 B03 §4
101 TCP_NODELAY 的作用 关闭 Nagle,减少小包合并带来的延迟 B05 §8
102 如何优雅关闭连接 shutdown(SHUT_WR) 发 FIN,再等对端关闭 B03 §3
103 为什么不要用 RST 关闭 RST 会丢弃未读数据,对端看不到完整报文 B03 §3
104 长连接怎么保活 应用心跳 + 调小 keepalive 作兜底 B08 §3
105 单机能撑多少连接 受 fd 上限、内存(每连接缓冲)、端口范围约束 J03
106 连接数与内存怎么估算 每连接缓冲 × 连接数 + 内核结构开销 B08 §6、J03
107 如何诊断连接数异常 ss -s、ss -tan state 分类统计 B01 §3、J01
108 ss -ti 里的 cwnd 是什么 拥塞窗口(单位 MSS),长期很小说明被限速 B03 §6
109 如何看是否在重传 nstat -az | grep TcpRetransSegs 看增量 B04 §5
110 抓包没权限怎么办 需要 CAP_NET_RAW/NET_ADMIN;容器内常受限,用 ss/nstat 替代 J01

附录 A · 学习路线(A-1897 的重排)

阶段 内容 对应正文
第 1 周 分层模型、封装、端口与 socket B01
第 2 周 进程/线程/内存/中断 B01 §5、B02
第 3 周 TCP 握手挥手、可靠传输 B03、B04
第 4 周 应用层协议:HTTP/HTTPS、实时通信 B05–B08
第 5 周 调用模型与工具化 B09、B10
进阶 抓包排障、TLS 深水区、连接数工程 J01–J03

原则:每个概念都配一条命令验证(getent、ss、curl -v、openssl s_client、nstat)。只看不练,一周就忘。

附录 B · 旧文口径修正清单

# 旧说法 修正 正文
1 "TCP 粘包" 术语误导:字节流无边界 B05 §1
2 "tcp_tw_recycle=1 解决 TIME_WAIT" 新内核已移除,NAT 下导致连接失败 B03 §7
3 "开了 keepalive 就不用心跳" 默认 2 小时才探测 B08 §3
4 "RPC 比 HTTP 快" RPC 常跑在 HTTP/2 上,差距来自序列化/头部 B09 §1
5 "WebSocket 天生支持重连" 协议不提供,必须自己实现 B07 §7
6 "加了 HTTPS 就安全" 只保护传输 B06 §6

本篇属于系列《S02 · 计算机与网络基础》,是基础层附录。旧文来源:A-2323/2639/2320/2611/1897;每条答案均可在对应正文小节核对。

S02-X01 · 面试问答速查:操作系统 / 计算机网络 / 网络编程
https://www.clxhxhhr.top/posts/5197/
作者
clxstart
发布于
2024-12-31
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。