HTTP 和 HTTPS 面试全攻略:状态码、缓存、TLS 握手

HTTP 协议是后端面试的基础题。

HTTP 的演进

HTTP 1.0:每个请求一个 TCP 连接,用完就关。效率低。

HTTP 1.1:长连接(Connection: keep-alive)+ 管道化(Pipelining)。但还是有队头阻塞的问题。

HTTP 2.0:多路复用(一个 TCP 连接并发多个请求)、头部压缩、服务器推送。但 TCP 的队头阻塞还在。

HTTP 3.0:基于 QUIC(UDP),彻底解决队头阻塞。

常见状态码

  • 200:OK
  • 301:永久重定向(搜索引擎会更新 URL)
  • 302:临时重定向
  • 304:Not Modified(缓存有效,不用重传)
  • 400:请求参数错误
  • 401:未认证(需要登录)
  • 403:没有权限
  • 404:资源不存在
  • 500:服务器内部错误
  • 502:网关错误(上游服务器挂了)
  • 503:服务不可用(过载或维护)

HTTPS = HTTP + TLS

TLS 握手过程(简化版):

  1. 客户端发送支持的加密套件
  2. 服务端选择加密套件 + 发证书
  3. 客户端验证证书 + 生成对称密钥(用服务端公钥加密发送)
  4. 双方用对称密钥加密通信

缓存头

  • Cache-Control: max-age=3600:缓存 1 小时
  • ETag:资源版本标识,配合 If-None-Match 做条件请求
  • Last-Modified:最后修改时间,配合 If-Modified-Since

面试话术

HTTP 1.1 到 2.0 的核心改进是多路复用——一个 TCP 连接承载多个请求。2.0 到 3.0 的核心改进是 QUIC 协议——基于 UDP 彻底解决了 TCP 的队头阻塞。HTTPS 通过 TLS 握手交换对称密钥,之后用对称加密保护通信内容。

记状态码和缓存策略,实际开发中每天都会遇到。

关于 Zihao Zhang

后端开发工程师。关注 Java/Spring Boot/Redis/MySQL 技术栈,分布式系统,OLAP 数据库,AI Agent 开发与应用。

评论

评论已关闭。