Skip to main content

蚂蚁网商银行 - AI 中台基础平台

面试基本信息
  • 日期: 2025-12-22
  • 岗位描述
    • 负责基础架构方向大模型应用场景的探索落地,以及相关 AI 平台系统的架构设计与开发,利用 RAG / Agent 等技术提升技术研发效能;
    • 负责大模型性能分析和进行调优,识别和解决瓶颈问题,包括不限模型微调训练和模型评测等,提升模型效果和推理速度;
    • 负责日常业务、产品以及关联技术方沟通协同,快速理解业务问题并转化技术方案,保障平台产品能力交付,并形成技术能力持续沉淀;
    • 学习跟踪业界大模型在效能领域的最新进展,并探索大模型在技术风险 / 研发效能方向的机会点和提升改进落地效果;
  • 面试时长: 40 分钟
面试复盘

面试流程整体考察过往项目、AI 应用经验、日常 AI 中的使用经验等。面试官希望的候选人画像为: 深耕 Java、积累技术深度而非广度、反哺业务团队、对 AI 和前沿探索有相对较深的实践和研究。

01 简历工作项目

1.1 你们现在大语言模型是自研、私有化部署,还是直接调用外部 API?为什么?

公司内部中台私有化部署的开源大模型,有经过微调,主要考虑数据隐私和定制化需求。

1.2 LLM 生成的结果你们是如何做校验/反幻觉的?

我们没有试图从模型层彻底解决幻觉,据我了解中台部门没有对基座大模型进行过度的微调,一方面微调和后训练会影响模型的泛化能力,另一方面也会增加模型的不可控性。这些工程上可以进行控制和兜底的逻辑就放在各个业务部门来调整。

  • Prompt 强约束
    • 基于提示词的强约束,明确限定只能基于输入事实生成。
    • 禁止编造未提供的信息,返回体中必须以 JSON 格式输出带有参考来源的结果。
    • 不涉及隐私、政策、合规层面的敏感内容。这部分还是由固定模板来拼接。
  • 后端规则校验
    • 把生成结果中的商品 / 类目
    • 与用户真实历史设计过的 1 级和 2 级类目所构造的倒排索引进行匹配
  • 质量模型打分
    • 使用基于文本质量打分的小模型 BERT 架构
    • 对可读性、营销风格做评分
  • 失败回退
    • 校验不通过 → 回退到模板消息

1.3 你提到 “基于规则的生成结果验证”,规则是如何设计的?数据事实来源是什么?

1.4 在 LLM 生成链路中,哪些环节是你们自己负责,哪些是中台或第三方提供的?

  • 自研负责环节
    • Prompt 工程、Query 改写、结果校验、业务逻辑适配、用户反馈的埋点上报。
  • 中台提供环节
    • 基座大模型的调用能力、数据中台提供的针对单个用户的历史行为数据。
    • 数据中台对历史行为数据进行清洗、入库、压缩、统一格式和控制 token 规模。

02 RAG

RAG 基础理解

2.1 你如何理解 RAG?它解决的核心问题是什么?

检索增强生成(Retrieval-Augmented Generation)是一种将 “信息检索” 与 “大模型生成” 结合的技术,通过在生成前从外部知识库检索相关信息,将其作为上下文输入给大模型,辅助生成更准确、有依据的回答。

核心解决问题

  • 大模型幻觉问题:解决模型 “一本正经说假话” 的痛点,让回答有权威数据支撑。
  • 知识时效性问题:无需重新训练大模型,通过更新知识库即可让模型掌握最新信息(如政策变动、产品更新)。
  • 知识专业性问题:针对垂直领域(如法律、医疗),通过检索专业知识库,让通用大模型具备专业回答能力。
维度RAG微调
成本低(无需大算力训练,仅需维护知识库)高(需大量标注数据 + GPU 算力)
时效性强(知识库实时更新,立即生效)弱(微调周期长,无法快速响应知识变化)
灵活性高(支持多来源知识库,可快速切换)低(微调后模型固化,改造成本高)
适用场景知识密集型、时效性强的场景(如客服、知识库问答)特定任务优化(如特定格式生成、风格迁移)

RAG 是性价比更高的 知识注入 方案,只有当 RAG 效果无法满足需求(如需要模型深度掌握特定任务范式)时,才考虑微调。

2.2 为什么很多工程项目会选择 RAG,而不是微调 / 后训练大模型?

2.3 RAG 的整体流程你能系统性地讲一遍吗?

2.4 文本切分你了解哪些方式? 这些切分方式的优缺点是什么?

RAG 进阶 & 变体

2.5 什么是 Graph-based RAG?它和传统 RAG 有什么区别?

2.6 多模态 RAG 一般是怎么做的?

2.7 多模态向量和文本向量如何对齐?

RAG 检索与质量问题

2.8 向量检索 Top-K 之后,是否需要重排(Re-rank)?为什么?

2.9 为什么有时候 “明明很相关的数据却召回不到”?

2.10 如果检索效果不好,你会从哪些层面排查?

03 上下文工程 / Memory / Token 优化

你提到滑动窗口策略可以降低约 60% token,具体是怎么做的?

如果窗口外的信息被丢弃,如何保证不会丢掉关键信息?

历史对话压缩一般有哪些做法?

  • 摘要
  • 外部存储

信息压缩 vs 信息完整性,你如何权衡?

你如何理解上下文工程(Context Engineering)?

上下文工程和 RAG 的关系是什么?

你如何看待错误记忆 / 幻觉记忆问题?

是否了解通过强化学习惩罚错误记忆的思路?你怎么看它的工程可行性?

04 数据 / 数仓 / 特征工程

你们用户行为数据主要来自哪里?

数仓整体是如何设计的?

  • 原始数据
  • 清洗链路
  • 冷数据 / 热数据

为什么选择 ClickHouse?它在你们系统中承担什么角色?

你们是否会把非结构化数据(客服对话、文本)带入 LLM?为什么?

05 分布式系统 / 后端工程

分布式任务调度

为什么最初用 ZooKeeper 做分布式锁?

ZooKeeper 锁是如何实现的?(临时节点 / TTL)

你们遇到了什么问题?

  • 死锁
  • 任务未触发

为什么后来改成 Spring Batch?

ZooKeeper 锁 vs 外部调度服务,各自优劣是什么?

后端技术选型

你个人项目中为什么频繁切换语言和技术栈?

Java/Python/Go 在 AI 应用中的优劣你怎么看?

如果只是小规模数据和并发,复杂架构是否有意义?

06 Java/Go 底层基础

Java 和 Go 的内存管理机制有什么区别?

维度JavaGo
内存分配基于堆分配,对象在堆上创建,通过 new 生成,逃逸分析支持栈上布局堆栈混合分配,小对象优先栈上,通过 make 或 new 创建,逃逸分析更激进
垃圾回收分代 GC,覆盖新生代与老年代,提供 Serial、Parallel、G1、ZGC 多种算法非分代 GC,采用三色标记与写屏障,并发执行,停顿短,适合大内存场景
主体自动内存管理,开发者无需干预以自动 GC 为主,unsafe 包可用于手动管理但通常不推荐
模型依照 JMM 规范线程与主内存交互,保障可见性、原子性与有序性依据 Go Memory Model,借助 goroutine 与 channel 维持并发安全

Java 的 GC 你了解多少?(新生代/老年代/触发机制)

Go 的内存管理你了解吗?

你平时是否会阅读底层源码?为什么?

  • 学习优秀的代码设计模式和工程实践,应用到自己的项目中。
  • 理解设计理念背后的动机和权衡,提升架构设计能力。
  • 利用 AI 工具进行整体层面的理解,再对关键模块进行精读。

07 工程视角 & 认知类问题

你做这么多项目的核心目的是什么?

在 AI 时代,工程能力和算法能力你如何看待?

为什么很多 RAG 系统只能做到 50 分,但做到 70+ 非常难?

在资源受限(算力、数据)的情况下,你会如何选择技术路线?

平台型 AI Infra 和业务型 AI 应用的本质差异是什么?

08 职业 & 个人相关

国内和国外工作的工程文化有什么差异?

为什么从算法背景转向偏开发 / 工程?

为什么选择回国发展?

你未来更偏向 AI 应用 / AI Infra / 平台化方向?