京东 Agent开发 暑期一面

1. 自我介绍

2. 介绍一下 AI 智能体的 workflow,以及 RAG 知识库是怎么设计的

智能体 workflow 一般不是一次模型调用,而是多阶段任务流。我会把它拆成意图识别、任务规划、工具选择、检索增强、结果生成、校验和记忆更新几个阶段。比如运营人员问一个商品问题,系统先判断是选品分析、广告诊断、库存预警还是内容优化,再决定调用商品库、广告系统、向量知识库或规则引擎。

RAG 知识库设计上会分离结构化数据和非结构化文档。结构化数据比如商品指标、广告 ROI、库存周转用 MySQL、ClickHouse 或 ES 查询;非结构化内容比如运营 SOP、平台规则、历史案例、达人脚本会做切分、embedding、向量索引和元数据过滤。检索时不能只靠相似度,还要结合租户、类目、时间、权限、文档类型做过滤,否则召回结果会混乱。

用户问题
  -> 意图识别
  -> 任务规划
  -> 查询结构化指标 / 检索 RAG 文档 / 调用工具
  -> rerank
  -> prompt 组装
  -> 模型生成
  -> 证据校验
  -> 结果落库

3. 意图识别用的是哪个大模型,如何判断和测试意图识别结果的准确率

意图识别可以用通用大模型,也可以用小模型或规则加模型混合。项目里我更倾向于先用规则做高确定性识别,比如出现商品 ID、订单号、广告计划 ID 这类字段时先进入对应业务路由;模糊问题再交给大模型做分类。模型可以选 Qwen、DeepSeek、GPT 或 Claude 这类指令跟随能力强的模型,但不能只依赖模型自由发挥。

准确率测试要有标注集。每条样本包含用户原始问题、期望意图、必要槽位和是否需要调用工具。评估时不只看意图标签是否正确,还要看槽位抽取是否完整、是否误触发工具、是否该拒答却没有拒答。线上还要把低置信度、人工改判和用户追问样本回流到评测集。

def eval_intent(pred, gold):
    return {
        "intent_ok": pred["intent"] == gold["intent"],
        "slots_ok": all(pred["slots"].get(k) == v for k, v in gold["slots"].items()),
        "tool_route_ok": pred["need_tool"] == gold["need_tool"]
    }

case = {
    "query": "帮我看下 SKU123 最近广告 ROI 为什么掉了",
    "intent": "ad_diagnosis",
    "slots": {"sku": "SKU123"}
}

4. Redis 做语义向量相似度检索,内部用的是什么算法

Redis 做向量检索通常依赖 RediSearch 的向量索引能力,常见算法是 FLAT 和 HNSW。FLAT 是暴力精确检索,会计算查询向量和所有候选向量的距离,召回准确但数据量大时性能差。HNSW 是分层可导航小世界图,通过图结构近似搜索近邻,查询速度快,适合大规模向量召回,但它是 ANN 近似检索,需要调参数平衡召回率和延迟。

相似度距离一般可以选 cosine、L2 或 inner product。文本语义检索里常用 cosine,但前提是 embedding 模型输出和距离函数匹配。工程上还要关注维度、索引构建耗时、内存占用、topK、元数据过滤和向量版本。向量检索不是只存一个 embedding,通常还要存文档 ID、租户、类目、权限、更新时间等字段。

FT.CREATE rag_idx ON HASH PREFIX 1 doc:
SCHEMA
  tenant TAG
  category TAG
  content TEXT
  embedding VECTOR HNSW 6
    TYPE FLOAT32
    DIM 768
    DISTANCE_METRIC COSINE
# 查询时一般是:元数据过滤 + KNN 向量检索
query = "*=>[KNN 5 @embedding $vec AS score]"

5. 在使用 RAG 的过程中有没有出现大模型幻觉,如何设计兜底方案

出现过。常见情况是检索结果不相关、检索结果缺失、文档过期、prompt 里证据太多导致模型混淆,或者模型把相似案例当成当前事实。RAG 只能降低幻觉,不能消灭幻觉,因为最终生成仍然是概率模型。

兜底方案要从检索和生成两侧做。检索侧设置相似度阈值、元数据过滤、rerank 和文档时效校验;生成侧要求模型必须基于证据回答,没有证据就明确说无法判断。对于高风险问题,要返回引用来源、证据片段和置信度,并允许转人工。更重要的是把“未检索到证据”和“证据支持结论”区分开,不能让模型拿空上下文硬编。

{
  "answer": "当前无法判断广告 ROI 下降的唯一原因",
  "confidence": 0.42,
  "evidence": [
    "最近 7 天广告点击成本上涨 18%",
    "竞品均价下降 12%"
  ],
  "fallback": "建议补充转化漏斗和库存数据后重新诊断"
}

6. JMeter 压测的具体参数是怎么设置的

JMeter 压测不会只设置线程数。一般会先明确目标:是测接口吞吐、P99 延迟、长连接稳定性,还是测模型调用链路的限流能力。常用参数包括线程数、Ramp-Up 时间、循环次数、持续时间、请求超时、连接超时、吞吐量控制器、断言和结果采样。

比如测 Agent 诊断接口,我会把线程数从 50、100、200 逐步加压,Ramp-Up 设置成 60 到 180 秒,避免瞬时打爆。SSE 或长耗时接口要特别关注连接保持时间、服务端活跃连接数和网关超时。压测结果看平均值没有意义,重点看 P95、P99、错误率、线程池队列、数据库连接池、Redis 延迟和模型 API 限流。

Thread Group:
  Number of Threads: 200
  Ramp-Up Period: 120s
  Duration: 20min

HTTP Request:
  Connect Timeout: 3000ms
  Response Timeout: 60000ms

Assertions:
  响应码 = 200
  JSON 字段 status != FAILED

Metrics:
  QPS / P95 / P99 / Error Rate / Active Threads

7. Redis 是单线程的,为什么它还能支持高并发

Redis 的核心命令执行主要是单线程,但它基于内存操作,数据结构实现高效,再加上 IO 多路复用,可以用一个线程处理大量连接事件。单线程避免了复杂锁竞争,命令执行路径短,所以在纯内存读写场景下吞吐很高。

不过“Redis 单线程”不是绝对说法。新版本 Redis 在网络 IO、持久化、异步释放、集群同步等方面会使用多线程或后台线程。真正影响 Redis 高并发能力的不是线程数,而是命令是否会阻塞事件循环。比如大 key、慢 Lua、全量扫描、复杂集合运算和持久化抖动都会让 Redis 延迟飙升。

8. 在实际业务场景中,你怎么判断什么时候需要加缓存,为什么不能只用 MySQL

加缓存通常是因为访问频率高、读多写少、计算代价高、数据允许短暂不一致,或者下游承载不了高并发。比如商品基础信息、类目规则、运营 SOP、用户短期会话、Agent 任务状态和热点榜单,都适合缓存。MySQL 是权威事实源,但它不适合承接所有高频读和临时状态。

不能只用 MySQL 的原因是 MySQL 擅长事务和持久化,不擅长高频低延迟的热点读、分布式限流、临时会话状态和短期幂等标记。如果所有请求都查 MySQL,热点 SKU 或热门活动期间很容易把连接池打满。缓存设计要同时考虑过期时间、穿透、击穿、雪崩、一致性和降级。

public ProductInfo getProduct(String sku) {
    String key = "product:" + sku;
    ProductInfo cached = redis.get(key, ProductInfo.class);
    if (cached != null)

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

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

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

全部评论
可以的,写的很好呀
点赞 回复 分享
发布于 04-26 21:23 北京

相关推荐

头像
昨天 15:11
已编辑
华东师范大学 算法工程师
暑期实习从2月开始投,面了两个月,流程该挂的都挂完了,腾讯字节一共号称是1.7w个hc,不知道都发给谁了,估计今年秋招要难顶。Timeline米哈游、美团、蚂蚁、微软等公司直接简历挂穿,没进面。携程:3.3 投递、测评3.12 笔试3.18 一面3.25 二面4.13 ai面(hr面)4.14 英语测评4.23 offer(已拒)腾讯:2.6 测评2.28 wxg一面3.5 wxg二面(挂)3.11 teg一面3.21 teg二面(取消)3.31 teg一面4.10 teg二面(挂)4.21 wxg一面4.24 wxg二面(挂)字节:1.28 aml约面(取消)3.17 火山一面(挂)4.8 aml一面(挂)4.20 抖音data一面(挂)阿里:3.23 投递、测评3.28 笔试3.31 淘天一面4.8 钉钉一面4.9 淘天二面4.10 阿里控股一面4.12 钉钉二面(取消)4.15 淘天hr面4.16 淘天offer(已接)4.21 高德一面(取消)4.22 淘宝闪购一面(取消)面试最大的感触是,现在撞上ai转型,一堆老业务急着转向,新业务非常不成熟,研究型的组bar非常高根本进不去,业务侧挂着算法的岗位干的都是工程活,面试却又要问算法,另外agent的落地也远没有那么广,绝大多数还是那套写死的系统调一下llm api或者做做rag,其余少部分真的在搭agent的,基本不能在线上服务用什么很智能的模型,现阶段成本太高,进去大概率就是给垃圾模型从工程方面兜底,除了业务场景的应用和数据经验以外,技术方面很难有什么提升。算法岗做不了基模的还是去搜广推好,之前判断失误了完全没投,秋招不知道还进不进得去。
绿糖滑稽:携程这什么雷霆流程时长
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

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