HTTP/1.1 的队头阻塞发生在哪里,为什么流水线没能解决它
围绕“HTTP/1.1 的队头阻塞发生在哪里,为什么流水线没能解决它”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须定位在应用层:响应必须按请求顺序返回,并说明流水线因慢响应阻塞后续而极少启用。
程序员面试题库第 43 页,收录第 2101–2150 题,共 5000 道完整解析,覆盖前端、JavaScript、React、Vue、Node.js、AI Agent、网络、数据库与系统设计。
按稳定语义路径排序
围绕“HTTP/1.1 的队头阻塞发生在哪里,为什么流水线没能解决它”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须定位在应用层:响应必须按请求顺序返回,并说明流水线因慢响应阻塞后续而极少启用。
围绕“HTTP/1.1 时代为绕过并发限制有哪些优化手段,各自的代价是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖完整回答要覆盖多开连接、域名分片、资源合并与内联,并指出它们与缓存粒度和连接开销的矛盾。
围绕“HTTP/2 的二进制分帧层如何组织帧、流与消息”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲清一个 TCP 连接上多条 stream、每条 stream 由带流标识的帧组成这一结构。
围绕“HTTP/2 连接合并(coalescing)是什么,它对域名分片策略有什么影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲同证书同 IP 的多个域名可复用一条连接,从而反转 HTTP/1.1 时代域名分片的做法。
围绕“HTTP/2 的流控窗口如何按流和连接两级工作”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分每 stream 与整连接两级窗口及 WINDOW_UPDATE 的增量更新机制,并指出它只管接收缓冲不管网络拥塞,不与 TCP。
围绕“HTTP/2 的 HPACK 头部压缩如何利用静态表、动态表和 Huffman 编码”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲动态表在连接内跨请求共享上下文带来的压缩收益,以及索引表与编码的协同。
围绕“HTTP/2 的 SETTINGS_MAX_CONCURRENT_STREAMS 如何影响客户端并发发送”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲服务端通过 SETTINGS 帧限制并发流数与客户端排队行为,以及该值对代理合并连接的影响。
围绕“HTTP/2 多路复用解决了哪一层队头阻塞,仍残留哪一层”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须明确解决 HTTP 应用层队头阻塞但 TCP 层丢包仍阻塞所有流的残留问题,为引出 HTTP/3 留边界但不展开 QUIC。
围绕“HTTP/2 Server Push 的设计意图是什么,为什么实践中被弃用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明主动推送省往返的初衷与缓存匹配困难、推送浪费带宽的实际问题,并给出 103 Early Hints 或 preload 的替代方。
围绕“HTTP/2 的流优先级依赖树如何工作,为什么实际部署效果常不理想”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲 weight 与依赖树表达浏览器加载意图的机制,并指出实现不一致导致优先级信号常被忽略。
围绕“在丢包率较高的网络中为什么 HTTP/2 可能比 HTTP/1.1 多连接更慢”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释单连接丢包重传阻塞全部流,而 HTTP/1.1 六条连接分散了丢包影响。
围绕“客户端如何发现一个站点支持 HTTP/3,Alt-Svc 与 HTTPS DNS 记录各起什么作用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲首次仍走 TCP 经 Alt-Svc 响应头或 HTTPS/SVCB DNS 记录获知 QUIC 端点并缓存,以及升级失败回退。
围绕“HTTP/3 为什么要放弃 TCP 转而基于 QUIC”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须从 TCP 队头阻塞、握手开销、协议僵化三个 TCP 无法在传输层内解决的问题作答。
围绕“HTTP/3 与 HTTP/2 在语义上保持一致,差异主要在哪些层”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须强调请求响应语义、头部字段不变,差异在分帧映射、流控承载于 QUIC 与头部压缩换成 QPACK。
围绕“HTTP Keep-Alive 连接复用如何工作,空闲连接超时设置不当会有什么后果”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲清同一 TCP 连接串行处理多个请求的机制,以及代理中间件超时短于客户端导致的竞态错误。
围绕“QPACK 为什么不能直接照搬 HPACK,它如何避免队头阻塞”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释 QUIC 流乱序到达使 HPACK 动态表同步失效,QPACK 用独立编码流与确认机制换取不阻塞其他流。
围绕“QUIC 的拥塞控制与 TCP 有什么继承关系,为什么可以在用户态更快迭代”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 RFC 9002 沿用慢启动等 TCP 成熟机制但因实现在用户态可按应用升级替换算法。
围绕“QUIC 的连接迁移如何在 WiFi 切换蜂窝网络时保持连接不断”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲用 Connection ID 而非四元组标识连接、地址变化后经路径验证继续通信,并说明 NAT 重绑定场景。
围绕“QUIC 默认加密大部分传输层元数据带来什么好处与运维代价”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲防中间盒篡改以对抗僵化与保护隐私的收益,以及网络排障、被动测量变难的代价。
围绕“QUIC 如何把传输与 TLS 握手合并,0-RTT 的原理与风险是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲传输与 TLS 1.3 在同一握手中协商及会话恢复实现 0-RTT,并指出 0-RTT 数据可被重放需要应用层幂等防护。
围绕“QUIC 的丢包检测相比 TCP 有哪些改进”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖完整回答要覆盖单调递增包号消除重传歧义、显式 ACK 延迟信息、更多 ACK 范围这三点及其对 RTT 估算的好处。
围绕“QUIC 的流内有序、流间独立交付如何消除传输层队头阻塞”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须用丢包只暂停所属 stream、其他 stream 可继续交付给应用这一机制作答,并指出流内仍有序。
围绕“企业网络封禁 UDP 时 HTTP/3 如何优雅回退,设计上有哪些考虑”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲 Happy Eyeballs 式并行竞速与 Alt-Svc 失败标记后回退 HTTP/2 的策略,以及回退不能破坏请求幂等性。
围绕“QUIC 为什么选择构建在 UDP 之上而不是直接设计新的传输协议”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释中间盒对未知协议号的阻断与 TCP 选项僵化,UDP 加用户态实现可快速迭代。
围绕“TCP 拥塞控制的慢启动、拥塞避免、快恢复各阶段如何运转”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲清 cwnd 指数增长、线性增长及丢包后进入快恢复的状态迁移,不对比 CUBIC 与 BBR。
围绕“客户端经过四层负载均衡时连接被静默断开如何排查与规避”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须定位 LB 空闲超时短于应用 keep-alive 导致的半开连接,并给出让客户端超时短于 LB 或开启 TCP kee。
围绕“TCP 的拥塞窗口 cwnd 和接收窗口 rwnd 有什么区别,实际发送窗口取哪个”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明一个反映网络承载力、一个反映接收方缓冲,实际发送窗口取二者较小值。
围绕“TCP 为什么挥手要四次,TIME_WAIT 存在的意义是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释被动关闭方数据未发完导致 FIN 与 ACK 分离,以及 TIME_WAIT 对最后 ACK 丢失和旧报文的防护。
围绕“TCP 把丢包当拥塞信号有什么局限,基于时延的拥塞控制思路有什么不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须指出 bufferbloat 下丢包信号滞后,以及以 RTT 变化为信号可在丢包前减速,不深入 BBR 建模细节。
围绕“Nagle 算法与延迟确认叠加为什么会引发 40ms 级延迟,何时应关闭 Nagle”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释小报文等 ACK 与 ACK 等数据的相互等待,并给出实时性敏感场景开 TCP_NODELAY 的判断。
本题归纳TCP可靠性机制:确认应答、序列号、超时/快速重传与校验和,说明各机制解决丢失、乱序、重复和损坏的关系,并用文件传输场景解析触发与边界。
围绕“TCP 的重传超时时间 RTO 是如何估算的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明基于平滑 RTT 与偏差动态调整以及 Karn 算法对重传报文不采样的原因。
本文解释TCP SACK选择性确认解决的具体问题:只重传真正丢失的段,避免窗口式盲重发;并介绍D-SACK用于发现不必要的重传,以及其适用边界。
本题解释TCP滑动窗口通过接收窗口限速的机制,重点说明零窗口时持续计时器与窗口探测报文如何打破死锁,并明确与拥塞窗口的区别。
围绕“TCP 慢启动为什么叫「慢」却增长很快,它对短连接性能有什么影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释每 RTT cwnd 翻倍但起点低,以及小文件传输常在慢启动内结束导致带宽利用率低。
围绕“TCP 为什么存在粘包和拆包,应用层协议应如何处理”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明字节流无消息边界是本质原因,并给出长度前缀、分隔符、定长三种应用层分帧方案,不归咎于「网络问题」。
围绕“TCP 为什么是三次握手,两次握手会出现什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明历史报文导致的重复连接与双方序列号同步问题。
围绕“高并发短连接下服务器大量 TIME_WAIT 如何定位和缓解”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分主动关闭方才会产生 TIME_WAIT,并给出连接复用、调整谁主动关闭等方案,不泛泛谈内核参数清单。
围绕“TCP 超时重传与快速重传的触发条件有什么不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须用三个重复 ACK 触发快速重传与 RTO 到期触发超时重传的对比作答。
围绕“TCP 和 UDP 的核心差异是什么,如何为实时音视频和文件传输分别选型”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须从可靠性、有序性、拥塞控制和头部开销四个维度对比,并落到两个具体场景的选型理由。
围绕“UDP 打洞穿透 NAT 的基本原理是什么,为什么 TCP 打洞更难”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讲双方同时发包在 NAT 上建立映射表项的过程,以及 TCP 需要握手状态机导致更难的差异。
围绕“在 UDP 之上自建可靠传输需要实现哪些机制,与直接用 TCP 如何取舍”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须列出序号、ACK、重传、拥塞控制这些需自建的部分,并从定制灵活性与维护成本角度取舍。
围绕“Java 中 ArrayList 和 LinkedList 在随机访问、插入删除和内存占用上分别适合什么场景”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖要求基于底层数组与双向链表结构判断各操作的复杂度与适用边界。
围绕“CAS 的 ABA 问题是什么,AtomicStampedReference 如何解决,为什么高竞争下 LongAd”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答 ABA 判定与版本号方案及分段思想降低竞争的判断。
围绕“泛型方法中 <T extends Comparable<? super T>> 这样的上界声明解决什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明上界如何提供编译期可用的成员能力。
围绕“Java 受检异常与非受检异常在设计上如何取舍,业务代码该怎么选”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出可恢复性与 API 契约维度的判断标准。
围绕“Java 类加载的双亲委派模型是什么,什么时候需要打破它”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断委派顺序与 SPI、热部署场景下的打破方式。
围绕“Collections.unmodifiableList、List.of 与直接复制构造的不可变性有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断视图包装与真正不可变副本在源变化时的行为差异。
围绕“CompletableFuture 的 thenApply、thenCompose 与 thenCombine 分别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断同步转换、扁平化异步与两结果合并三种组合模式的边界。
围绕“CompletableFuture 不指定 Executor 会有什么隐患,IO 型异步任务该如何选线程池”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断默认 commonPool 对阻塞任务的饥饿风险及显式 Executor 的必要性。