百度大模型算法岗一二三面:手撕、道路索引设计与微调数据
- 轮次
- 一面~三面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 手撕:实现最长递增子序列,输出结果并讲优化思路。
- 深挖实习项目、科研论文的实现细节、难点与个人贡献。
- 系统设计:千万级道路 ID 连续片段数据集,提前构建索引;给定超长道路查询序列,快速匹配所有完全连续重合的片段,要求索引构建成本最低、查询效率最优。
- 手撕:最大子数组和,写完整实现与优化思路。
- 大模型微调场景下,如何搭建高质量微调数据集?
- 微调数据的标准格式、清洗规则、构造策略怎么设计?
- 日常开发常用哪些 AI 编码工具?
- 具体说明你用 AI 工具辅助算法开发、代码落地的流程。
- 长期使用 AI Coding 的心得、优势与现存问题。
- 对 AI Agent 自动生成的工程代码,你是否人工 Review?Review 的维度和校验流程是什么?
- 如何规避 AI 生成代码的隐藏 Bug 和逻辑漏洞?
- 个人职业规划、技术深耕方向与长期发展。
《参考解析》
最长递增子序列:O(n²) 的 DP 是 dp[i] = max(dp[j]+1),j<i 且 nums[j]<nums[i];O(n log n) 用贪心 + 二分维护 tails 数组,tails[i] 表示长度为 i+1 的递增子序列的最小结尾,遍历时二分找到第一个大于等于当前数的位置替换,长度即为答案。要输出具体序列,需要额外记录前驱索引和每个长度对应的末尾位置,最后回溯。注意严格递增与非严格递增的二分边界不同。
道路片段索引设计:把每条道路表示成 (road_id, start_offset, end_offset),查询序列是一串道路 ID 的连续拼接。核心是把“连续重合”转成“序列匹配”。一种方案:对每个道路 ID 建偏移索引,查询时以序列第一个道路为锚点,取出所有包含该道路的片段候选,再逐段验证后续道路是否按顺序连续;为了降低候选量,用“稀有道路”做锚点(倒排表按出现频率排序),或对长度为 k 的查询先匹配 k-gram 的哈希。索引构建成本要低,可以只建道路到片段的倒排 + 片段内道路序列的滚动哈希;查询时先用倒排取候选,再用哈希/双指针验证。要讲清复杂度、内存、更新(新增片段)和误匹配处理。
最大子数组和:Kadane 算法,cur = max(nums[i], cur + nums[i]),ans = max(ans, cur),O(n) 时间 O(1) 空间;要输出区间就记录起点。全负数时答案是最小负数,初始化不能设 0。追问可以讲分治解法(跨中点最大和)和前缀和解法。
微调数据集:先定义任务和评测标准,再收集数据:真实业务日志(脱敏)、人工标注、专家构造、开源数据、模型合成。每条样本包含 instruction/input/output,必要时加 system、工具调用轨迹、拒答样本。清洗规则:去重(精确 + 语义近邻)、去隐私、去低质(长度、语言、格式)、去污染(与评测集重叠)、平衡分布(任务类型、难度、长度)、统一格式。构造策略:难例挖掘、错误纠正样本、多轮对话、负样本、边界样本;训练集/验证集/测试集按时间或业务切分,避免泄漏。数据量不是越多越好,质量和小规模高质量 SFT 往往更有效。
AI Coding 与 Review:流程可以是“拆任务 → 给上下文和约束 → 生成 → 静态检查/单测 → 人工 Review → 小流量验证”。Review 维度:正确性(边界、异常、并发)、安全性(注入、越权、密钥)、性能(复杂度、N+1、内存)、可维护性(命名、重复、耦合)、测试覆盖。隐藏 Bug 常见于空值、类型转换、时区、浮点、并发竞态、错误吞掉、资源泄漏;用 lint/typecheck、单测、fuzz、代码扫描和人工走查兜底。Agent 生成的代码要特别看它是否“看起来合理但调用了不存在的 API”。
职业规划:短期做深大模型应用链路(RAG、Agent、评测),中期在某个业务域形成端到端落地能力,长期往算法架构或技术负责人走。要结合百度/岗位业务说,不要泛泛而谈。