百度二面:从兴趣爱好聊到 HTTPS 握手、URI 与 HTTP/2 多路复用
- 轮次
- 二面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 说说自己的兴趣爱好,为什么选计算机专业?
- 实验室平时做什么项目?你最擅长什么语言?
- 现在求职进展如何,投了多少家、有没有 offer?为什么只投后端开发?
- 你觉得自己哪方面比较薄弱?哪门课相对熟悉?
- 最常用的传输层协议是什么?TCP 和 UDP 的区别和使用场景?
- 打开一个网页,走的是什么协议?
- 你怎么确定它走的是 HTTP/2?
- 长连接 / 多路复用具体是什么?
- URI 是什么?
- HTTP 和 HTTPS 的区别是什么?
- HTTPS 的证书、签名、TLS 握手流程是怎样的?
- HTTPS 为什么走 443?80 和 443 能不能改、能不能互换?
- HTTP 协议后面为什么是两个斜杠
//? - HTTP 是谁、由哪个组织提出的?
- 你用哪些服务器和操作系统?
- 平时用哪些模型?用 Pro 还是 Plus 版?
- 平时用哪些 AI 编程工具?Claude Code 和 Codex 的区别说三点。
- 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 沙箱化执行)。答自己真实用过、踩过什么坑比背参数更可信。