面灵AI→

百度二面:从兴趣爱好聊到 HTTPS 握手、URI 与 HTTP/2 多路复用

轮次
二面
时间
2026-10
来源
牛客网

《面试题目》

  1. 说说自己的兴趣爱好,为什么选计算机专业?
  2. 实验室平时做什么项目?你最擅长什么语言?
  3. 现在求职进展如何,投了多少家、有没有 offer?为什么只投后端开发?
  4. 你觉得自己哪方面比较薄弱?哪门课相对熟悉?
  5. 最常用的传输层协议是什么?TCP 和 UDP 的区别和使用场景?
  6. 打开一个网页,走的是什么协议?
  7. 你怎么确定它走的是 HTTP/2?
  8. 长连接 / 多路复用具体是什么?
  9. URI 是什么?
  10. HTTP 和 HTTPS 的区别是什么?
  11. HTTPS 的证书、签名、TLS 握手流程是怎样的?
  12. HTTPS 为什么走 443?80 和 443 能不能改、能不能互换?
  13. HTTP 协议后面为什么是两个斜杠 //?
  14. HTTP 是谁、由哪个组织提出的?
  15. 你用哪些服务器和操作系统?
  16. 平时用哪些模型?用 Pro 还是 Plus 版?
  17. 平时用哪些 AI 编程工具?Claude Code 和 Codex 的区别说三点。
  18. Codex 的 goal 模式是什么?它的前身是什么,怎么演化来的?

《参考解析》

「怎么确认它走的是 HTTP/2」要答成可操作的方法,而不是背特性:浏览器 DevTools 的 Network 面板把 Protocol 列打开就能看到 h2 / h3 / http/1.1;命令行用 curl -I --http2 https://站点 看响应头与协商结果;也可以看响应头里有没有 alt-svc: h3=":443"(说明支持 HTTP/3)。协议升级的两条路是 HTTPS 下走 ALPN 在 TLS 握手阶段协商 h2,明文下走 Upgrade: h2c(浏览器基本不用)。

多路复用要讲清它解决了什么:HTTP/1.1 一个 TCP 连接同一时刻只能跑一个请求(pipelines 理论可行但队头阻塞),浏览器只能开 6 个左右并发连接,于是有了域名分片和雪碧图这些骚操作;HTTP/2 把消息拆成带 stream id 的二进制帧,同一连接上交错发送、按 id 重组,所以一个连接就够,还附带 HPACK 头压缩和服务端推送(后来基本废弃)。真正的队头阻塞在 HTTP/2 里下沉到了 TCP 层(丢一个包整连接都卡),这正是 HTTP/3 换 QUIC / UDP 的动机。

TLS 握手的四步骨架:ClientHello(支持的版本、套件、随机数、SNI)→ ServerHello + 证书链(含公钥)→ 客户端验证证书链(是否由受信 CA 签发、域名匹配、是否过期、是否被吊销 / CRL / OCSP)→ 密钥交换(RSA 时代用公钥加密预主密钥,现在基本都是 ECDHE)→ 双方用随机数 + 预主密钥导出会话密钥 → Finished 校验。证书上的签名是 CA 用自己私钥对「站点公钥 + 身份信息」的摘要签名,客户端用 CA 公钥验签,这是整条信任链的关键;HTTPS 做的三件事就是加密、身份认证、完整性校验。

80 与 443 只是 IANA 分配的默认端口约定,服务端完全可以把 HTTPS 挂在 80、把 HTTP 挂在 443(自签或内网很常见),能不能互换取决于服务端配置和客户端地址栏省略端口的默认值;反过来,浏览器对 443 以外的端口做 HSTS 或混合内容判断时会有额外约束。

URL 里两个斜杠是历史包袱:scheme://authority/path 这个形式沿袭自 Tim Berners-Lee 时代的约定,作者本人后来也承认双斜杠没必要(但改不掉,兼容性压倒一切)。HTTP 是 CERN 的 Tim Berners-Lee 在 1989-1991 年提出,标准由 IETF 与 W3C 发布(HTTP/1.1 是 RFC 2616 后被 7230-7235 取代,HTTP/2 是 RFC 7540,HTTP/3 是 RFC 9114)。

AI 编程工具那几问是这家在探「你到底怎么用 AI」:Claude Code 与 Codex 的差别可以落在交互形态(终端里的 agent 循环 vs IDE / 云端任务)、上下文与工具能力(文件读写 + 命令执行 + MCP 扩展 vs 更偏代码补全与 PR 生成)、以及权限模型(本地逐步确认 vs 沙箱化执行)。答自己真实用过、踩过什么坑比背参数更可信。