京东科技AI后端研发一面(日常实习)
面试题目
项目深挖
- 介绍项目背景、整体架构、扮演的角色、遇到的痛点 & 难点以及解决方案
- 为什么选这个项目?自己实现了哪些部分?
- 项目难点在哪?
- 秒杀和防止超卖是加锁,锁的东西是什么?有模拟测试过吗?
- 本地缓存怎么保证数据一致性?TTL 设置了多久?Caffeine 了解多少?
实习经历
- 随便挑一个实习介绍背景 + 负责部分 + 遇到的困难
- 实习公司的主要产品是什么?用的什么大模型?为什么不直接调 API 而是要设计这样的架构?
- Agent 的 memory 模块是怎么做的?用的什么数据库?为什么没用 xxx?
- 实习还有什么其他难点吗?
八股(约 10 min)
- 了解哪些 JDK 版本?
- Java 内存模型(JMM)
- RPC 框架用过哪些?
- HTTP 协议了解哪些?
- 还对后端哪块比较了解?
参考解析
秒杀防超卖加锁
- 锁的对象通常是库存 key(如 Redis 中的商品库存字段),可用
DECR原子操作或 Lua 脚本保证原子性。 - 也可使用数据库行锁(
SELECT ... FOR UPDATE)或乐观锁(版本号)防止超卖。 - 压测建议用 JMeter 或 wrk 模拟并发,观察库存是否跌为负数。
本地缓存一致性 & Caffeine
- 本地缓存与数据库一致性常见方案:TTL 过期淘汰 + 数据库更新时主动失效(发 MQ 通知各节点)。
- Caffeine 是基于 W-TinyLFU 算法的高性能本地缓存,支持
expireAfterWrite/expireAfterAccess。 - TTL 时长视业务容忍度而定,秒杀场景通常设置较短(几秒到几十秒),或结合版本号做细粒度失效。
Agent Memory 模块
- 常见分层:短期记忆(当前会话上下文,存内存/Redis)、长期记忆(历史摘要,存向量数据库如 Milvus/Qdrant)。
- 选型理由需结合检索方式:语义检索选向量库,结构化查询选关系型DB,混合场景可组合使用。
- 面试时说清楚为什么不用某个库,一般从性能、运维成本、团队熟悉度角度回答。
不直接调大模型 API 而自建架构
- 直接调 API 缺乏路由、限流、多模型切换、成本控制、审计日志等能力。
- 自建网关层可统一鉴权、做 Prompt 管理、支持 fallback 切换模型,提升稳定性。
Java 内存模型(JMM)
- JMM 定义了线程如何通过主内存与工作内存交互,解决可见性、有序性、原子性问题。
- 核心关键字:
volatile(可见性+禁止指令重排)、synchronized、happens-before规则。
RPC 框架
- 常见:Dubbo、gRPC、Spring Cloud OpenFeign、Thrift。
- 回答时可对比协议(HTTP2 vs TCP)、序列化方式(Protobuf vs JSON)、服务发现机制。
HTTP 协议要点
- 重点掌握 HTTP/1.1 vs HTTP2(多路复用、头部压缩)、HTTPS 握手流程、常见状态码、keep-alive、幂等性方法区分。