面灵AI→

百度大模型算法岗一二三面:手撕 LIS、道路片段索引设计与微调数据构建

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

《面试题目》

一面

  1. 手撕:实现最长递增子序列,输出对应结果并说明优化思路。
  2. 深挖实习项目与科研论文:实现细节、难点、你个人的核心贡献分别是什么?
  3. 系统设计:现有千万级道路 ID 连续片段数据集,需要提前构建索引;给定超长道路查询序列,要快速匹配出所有完全连续重合的片段,要求索引构建成本最低、查询效率最优,说说整体设计方案。

二面

  1. 继续追问实习与论文中的技术方案、实验细节、参数设计,以及踩过的坑怎么复盘?
  2. 手撕:最大子数组和,写出完整实现并说明优化思路。

三面

  1. 大模型微调场景下,如何完整搭建一份高质量的微调数据集?
  2. 微调数据的标准格式、清洗规则、构造策略分别怎么设计?
  3. 日常开发中常用哪些 AI 编码工具?
  4. 具体说说你用 AI 工具辅助算法开发、代码落地的流程。
  5. 长期使用 AI Coding 的实战心得、优势和现存问题有哪些?
  6. 对 AI Agent 自动生成的工程代码,你会不会人工 Review?Review 的维度和校验流程是什么?
  7. 结合自身经历,怎么规避 AI 生成代码的隐藏 Bug 和逻辑漏洞?
  8. 聊聊个人职业规划、技术深耕方向和长期发展选择。

《参考解析》

最长递增子序列(输出具体序列):只求长度是经典的 O(n log n)——维护 tails[i] 表示长度为 i+1 的递增子序列里最小的结尾值,每来一个数二分找第一个不小于它的位置替换。要求输出序列本身,就要额外记 prev 和每个元素在 tails 里的入位下标:替换位置 pos 的前驱是 pos-1 位置的元素,最后从 tails 末位回溯。常见的坑有两个:二分要用 lower_bound(严格递增),以及回溯必须用「入位时的下标」而不是当前 tails 数组的下标。

最大子数组和:Kadane 一遍扫,dp = max(a[i], dp + a[i]),同时维护 start/end 就能输出区间;全负数时要返回最大的那个单元素而不是 0。追问常往三个方向走:不允许取空子数组、允许删除一个元素(正反两遍 Kadane 拼起来)、返回和最大的区间(分治维护「区间和 / 最大前缀 / 最大后缀 / 最大子段」四元组)。

道路片段索引这道设计题:本质是「在一篇长文本里找出所有出现过的词典词」,把道路 ID 当成字符即可。几个可讲的方案:

  • AC 自动机:把所有片段建成 Trie 加失配指针,查询序列扫一遍就能报出所有命中位置,查询 O(n + 命中数),构建 O(片段总长度)。这是最贴合「超长查询序列 + 要全部命中」的解法,代价是内存——千万级片段的全量 Trie 很大,需要按首 ID 分片、或者用双数组 Trie / 持久化结构落到磁盘。
  • 首尾指纹 + 倒排:索引只存每段的「起点 ID → 段列表」和段长、终点 ID,查询时对序列里每个位置按首 ID 查倒排,再用哈希或逐位比较校验整段。构建成本极低(一条片段一条记录),代价是查询要看候选数,重复首 ID 多时会退化。
  • 滚动哈希滑窗:对每条片段算 (长度, 哈希) 存哈希表,查询序列上按每个不同长度做滑窗哈希,O(n × 不同长度数)。适合长度种类少的场景,代价是可能有哈希碰撞,需要二次校验。

答的时候把「索引构建成本 / 查询复杂度 / 增量更新 / 内存」四件事分开说,再点明「连续重合」是子串完全匹配、不能只比首尾,基本就是面试官想听的结构。

微调数据集怎么搭:先定任务形态再定格式——单轮指令用 prompt/completion,多轮对话用 messages(system、user、assistant 分开),偏好训练则要成对的 chosen/rejected。数据来源通常是业务日志、人工标注和模型合成三条线,关键是留一份独立的评测集,别让训练集和评测集同源。清洗至少做四件事:完全去重 + 近重复(MinHash / SimHash)、脱敏、去掉模板化废话和截断样本、检查标签与参考答案的一致性。构造上做难度分层和配比(难例、长尾、多语言各占多少),并用小模型或规则先做一遍质量过滤。最后一定要有「训练前 baseline → 微调后同一评测集」的对比,否则没法证明数据集真的有用。

AI Coding 的实战口径:提效主要落在样板代码、单测、重构和读陌生代码库;问题集中在三类——编造不存在的 API、隐式假设业务约束、上下文给不全导致改错地方。比较稳的用法是先让它读代码、复述方案,人确认后再让它出小 diff,每步都跑测试和类型检查;大块生成一次几百行,Review 成本比手写还高。

Review Agent 生成代码的维度:正确性(边界、空值、并发与幂等)、安全(注入、越权、密钥硬编码、日志泄露)、性能(N+1 查询、无界循环、复杂度)、可维护性(命名、重复逻辑、抽象是否过度)、依赖与许可证、测试是否真的覆盖了改动。校验流程一般是:静态检查 + 单测先行 → 人读关键路径 diff → 灰度或影子流量 → 监控告警兜底。

职业规划这类开放题:讲清楚「现在的能力盘子 → 想深耕的方向 → 为什么这个方向对业务有价值」三段即可,避免空喊「想成为专家」;能给出一个近一年的具体动作(比如把某个方向的论文复现到线上、把某类数据 pipeline 做稳定)比宏大叙事更可信。