某小厂 Java 实习一面:订单号计数表、秒杀与 RAG
- 轮次
- 一面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 自我介绍。
- 实习都做了什么?
- 简历上写的订单号独立计数表是什么?怎么设计的?
- 介绍一下秒杀项目。
- 智能体项目做了哪些功能?
- 你还有什么想问的?
《参考解析》
订单号用「日期 + 序号」生成,核心是并发下不重号。独立计数表按天一行,用 update ... set seq = seq + 1 where day = ? 原子自增再读回,或者用数据库序列/Redis INCR;要注意事务边界和跨天切换。单机可以用原子变量,多机必须走共享存储。高并发下更好的方案是雪花算法或号段模式,避免每次生成都打数据库。
秒杀项目的标准链路:前端限流 → 网关校验 → Redis 预扣库存(Lua 保证原子)→ 写入消息队列 → 消费端落订单并扣数据库库存 → 异步通知。要点是超卖防护(Redis 原子扣减 + 数据库唯一约束兜底)、幂等(订单号唯一)、削峰(队列)和降级(售罄直接返回)。
智能体项目讲清 RAG 和工具调用的分工:知识类问题走检索增强,操作类需求走工具调用;再加上意图识别、上下文管理和失败兜底。
面试官不问八股,说明小厂更看重能不能直接干活:把项目的链路、你写的代码、遇到的问题讲清楚,比背概念有效。