蚂蚁 AI应用开发 一面

1. 先做一下自我介绍

2. 讲讲你做的这个项目

这个项目可以设计成面向投研分析师的问答和报告辅助系统,支持财报解析、公告问答、指标对比和结论摘要。整体链路一般包括文档接入、结构化解析、分块索引、检索增强、模型生成和结果回溯。我主要负责的是文档清洗、分块策略、Embedding 入库、重排、长上下文裁剪和推理链路监控。项目里比较难的点在于文档质量参差不齐,表格、脚注和跨页内容很多,直接切分会严重影响召回效果,所以后面会专门做表格提取和层级切片。

3. 怎么解决大事务问题,为什么会导致这些风险

大事务的风险主要在于占锁时间长、回滚成本高、undo log 膨胀、主从延迟和数据库连接占用时间过久。尤其是在消息发送、文件处理、远程调用都包进一个事务时,事务边界会被拉得很长,任何一个步骤慢下来都会把整个链路拖住。解决思路通常不是简单把超时时间调大,而是拆事务边界,把核心写库操作和外部副作用操作分开,必要时结合本地消息表、状态机和补偿逻辑来做最终一致性。

@Transactional
public void createTask(Task task) {
    taskMapper.insert(task);
    outboxMapper.insert(buildEvent(task));
}

4. JVM 调优的完整步骤你一般怎么讲

JVM 调优最好按“现象、定位、验证、调整”这个顺序讲。先看线上现象,是吞吐下降、延迟抖动、Full GC 频繁还是 OOM,再结合监控判断堆、元空间、线程数和对象分配速率。接着看 GC 日志、jstat、jmap、jstack、Arthas 或 MAT,确认是内存泄漏、对象生命周期不合理、线程池堆积还是大对象分配问题。最后才是调参数,比如堆大小、分代比例、GC 策略和停顿目标。真正的重点不是背参数,而是知道为什么调以及调完如何验证。

5. JVM 调优时重点要关注哪些内容

重点一般是堆内存使用趋势、Young GC 和 Full GC 的频率与耗时、对象晋升情况、老年代增长速度、元空间占用、线程数量、直接内存和系统负载。很多人只盯堆,其实线上问题常常不只是堆,像线程暴涨、频繁创建大对象、网络缓冲区占用异常也会把服务拖垮。对于大模型应用,还要特别注意长文本处理、Embedding 批量任务和缓存对象是否会把堆打满。

6. 挑一个你熟悉的消息队列讲讲底层原理

如果讲 Kafka,可以从顺序写磁盘、分区、副本机制、消费位点和批量拉取说起。Kafka 为什么吞吐高,关键不是“用了磁盘”,而是它把磁盘写入做成了顺序追加,再配合页缓存、批量发送和零拷贝。消费者侧通过 offset 自己维护进度,Broker 只负责存储消息和提供拉取能力。这样设计带来的好处是读写职责清晰,但也意味着重复消费和消息幂等要靠上层业务兜底。

7. JVM GC 的过程讲一下,以及对应的回收器怎么理解

GC 的过程可以从根可达性分析开始,先找到不可达对象,再根据不同区域和回收器策略做回收。新生代一般是复制算法,老年代常见是标记整理或者标记清除整理结合。像 G1 会把堆拆成很多 Region,按收益优先回收一部分区域;CMS 更强调低停顿,但会有碎片问题。真正面试时不要只说算法名,更要结合为什么这个阶段用这种算法,比如新生代对象朝生夕灭,复制算法更适合。

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务