二面
一、项目为什么选择 RAG 项目和优惠券项目作为练手项目?1.1 这两个项目分别有哪些有价值或者有难度的技术点?什么场景下需要考虑并发设计?
字数: 852 | 语雀原文
一、项目
-
为什么选择 RAG 项目和优惠券项目作为练手项目? 1.1 这两个项目分别有哪些有价值或者有难度的技术点?
-
什么场景下需要考虑并发设计? 2.1 结合优惠券项目,抢券场景为什么属于高并发场景?
2.2 高并发抢券场景下,系统整体需要做哪些处理?
- 项目中为什么使用 Redis 做缓存? 3.1 为什么没有使用本地缓存?
3.2 多机部署场景下,本地缓存会带来什么问题?
- 如果只有一张优惠券,多个用户同时抢券,系统如何保证不超卖? 4.1 Redis Lua 脚本在抢券流程中起什么作用?
4.2 为什么使用 Lua 脚本后不需要再额外加锁?
- 从用户点击抢券开始,到数据库最终扣减完成,完整链路是怎样的? 5.1 Redis 在链路中负责哪些校验和扣减逻辑?
5.2 RocketMQ 在链路中负责哪些异步削峰和后置处理?
-
如何判断用户是否达到优惠券领取上限? 6.1 用户领取次数为什么放在 Redis 中判断,而不是每次查询数据库?
-
抢热门优惠券时,热点 Key 问题如何处理? 7.1 如果大量请求同时访问同一个 Redis Key,Redis 单节点成为瓶颈怎么办?
7.2 Redis 主从架构为什么不能完全解决 Lua 写操作的热点问题?
7.3 如果 Redis 主节点写入压力过大,业务层面可以如何拆分库存或分摊流量?
- 如果 Redis 宕机或者缓存失效,请求直接打到 MySQL,如何兜底? 8.1 如何解决缓存击穿问题?
8.2 如果缓存 Key 永久不过期,如何避免 Redis 内存持续增长?
- 平时是否使用 AI Coding 工具辅助开发? 9.1 使用 AI Coding 完成一次开发任务的完整流程是什么?
9.2 如何让 AI 更准确理解需求并生成高质量代码?
9.3 是否开发过自己的 Skill 或 AI 辅助工具?
9.4 Codex 的 Skill 目录结构和运行机制是否了解?
9.5 Codex 是否会保留项目上下文?多窗口之间记忆是否互通?
- RAG 系统完整链路是怎样的? 10.1 除了向量检索,还有哪些轻量化知识检索方案?
10.2 AI Coding 工具做代码检索时,底层是否完全依赖 RAG?
10.3 如果自研代码检索 Agent,整体会如何设计?
二、八股
- Redis 过期 Key 的删除机制是什么? 1.1 惰性删除和定期删除分别有什么特点?
1.2 如果过期 Key 产生速度大于删除速度,应该如何处理?
- Redis 常见的内存淘汰策略有哪些? 2.1 LRU 和 LFU 分别是什么?
2.2 抢券业务中更适合选择 LRU 还是 LFU?
2.3 Redis 内存打满后,执行写入命令的底层流程是什么?
2.4 从运维角度看,什么场景适合使用 LRU?
三、算法
力扣19.删除链表的倒数第 N 个结点