得物客户端秋招二面:大模型幻觉、Git 与 HTTPS 全链路
- 轮次
- 二面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 面试官介绍团队。
- 自我介绍。
- 你的学习路线是什么样的?
- 工作中大模型的幻觉如何治理?
- 大模型给的代码是错误的,如何排查?
- 你是如何把 AI 结合进开发工作流的?
- git 的 rebase 和 merge 有什么区别?
- 页面发起请求到完成响应的全过程是怎样的?
- 拆解一下 HTTPS 协议。
- 反问。
《参考解析》
幻觉治理要分「输入端、生成端、输出端」三层。 输入端把不确定的问题变成确定的问题:要求模型先复述需求、给出假设、缺信息就追问,而不是直接开写;给足上下文(相关代码、接口定义、错误日志),并用结构化提示(角色、约束、输出格式)。生成端降低随机性:温度调低、要求引用来源、把大任务拆成小步骤、让模型先给方案再给代码。输出端做校验:Schema/类型检查、单元测试、静态分析、编译与运行、以及让另一个模型或人做 review。工程上还要有兜底:关键路径不让模型直接产出最终结果、保留人工确认、记录每次调用的输入输出以便回溯。评估上不能只看单次效果,要建一批固定用例做回归,统计事实错误率、格式错误率、以及人工修改成本。
AI 生成的代码报错怎么排查。 第一步是「不要相信它给的错误解释」,先自己复现:拿到完整堆栈、定位第一行业务代码、确认是编译期还是运行期、是环境问题还是逻辑问题。第二步是缩小范围:把代码切成最小可复现片段,检查依赖版本、类型定义、空值与边界、以及 API 是否真实存在(模型最爱编不存在的方法和参数)。第三步是验证假设:加日志、写一个最小测试、对照官方文档或源码,而不是继续让模型「再改一版」。第四步是修正 prompt:把真实报错、相关代码、期望行为一起给它,要求它先解释原因再给 diff。要强调一点:模型给的代码必须过编译、过测试、过 review 才能进主干,不能因为「看起来对」就直接提交。
rebase 与 merge 的区别。 merge 保留真实历史:把两个分支的提交和一个 merge commit 合在一起,历史是分叉再汇合的,优点是安全、可追溯,缺点是提交图杂乱。rebase 是「把当前分支的提交逐个摘下来,重新应用到目标分支的最新提交之后」,历史变成一条直线,优点是清晰、方便 review 和 bisect,缺点是改写了提交哈希——已经推送并被别人拉取的分支不要 rebase,否则会给协作者制造冲突。实践约定:个人 feature 分支在合入前用 rebase 整理提交(squash/fixup),公共分支(main/develop)只用 merge;rebase 过程中冲突要逐个解决并 --continue,实在乱了用 reflog 找回。还要提一句「不要 rebase 公共分支」和「force push 用 --force-with-lease」。
一次页面请求的完整链路。 浏览器侧:解析 URL → 查缓存(Memory Cache、Disk Cache、Service Worker)→ DNS 解析(浏览器缓存、系统 hosts、递归解析器、根/顶级/权威服务器)→ 建立 TCP 连接(三次握手)→ TLS 握手(证书校验、密钥协商、ALPN)→ 发送 HTTP 请求(方法、路径、Header、Cookie、缓存协商头)→ 服务端处理(负载均衡、网关、应用、缓存、数据库)→ 返回响应(状态码、响应头、压缩、缓存策略)→ 浏览器解析 HTML 构建 DOM、CSSOM → 渲染树 → 布局 → 绘制 → 合成;JS 可能阻塞解析,defer/async 可缓解。客户端(App)场景则把浏览器换成 WebView/原生网络库,重点在 DNS、连接复用、TLS、HTTP/2 多路复用、以及弱网下的重试与降级。回答时按「网络层 → 服务端 → 渲染层」分段,每段点出可观测指标(DNS 耗时、TTFB、首屏时间),比背流程更加分。
HTTPS 拆解。 HTTPS = HTTP + TLS。握手阶段:客户端发 ClientHello(支持的版本、密码套件、随机数、SNI);服务端回 ServerHello(选定套件、随机数)和证书链;客户端验证证书(签名链、有效期、域名、吊销状态),用证书公钥加密预主密钥(RSA 密钥交换)或直接用 ECDHE 协商(前向安全);双方用随机数 + 预主密钥派生会话密钥,发 Finished 验证握手完整性。之后用对称加密(AES-GCM/ChaCha20-Poly1305)传输应用数据,MAC/AEAD 保证完整性。要能说清几个点:非对称只用于握手和身份认证,业务数据用对称加密(性能);证书解决的是「公钥属于谁」,需要 CA 信任链;TLS 1.3 把握手压到 1-RTT(甚至 0-RTT),删掉了 RSA 密钥交换和一堆弱套件;中间人攻击的防线是证书校验,客户端不能忽略证书错误。再补一句「HTTPS 不能防什么」:不能防服务端被攻破、不能防内容本身泄露给服务端,也不能替代业务层的鉴权与加密。