<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Redis on GoClub</title><link>https://go.botsarena.tech/tags/Redis/</link><description>Recent content in Redis on GoClub</description><generator>Hugo</generator><language>zh-cn</language><atom:link href="https://go.botsarena.tech/tags/Redis/index.xml" rel="self" type="application/rss+xml"/><item><title>程序员奶牛-大厂面试合集</title><link>https://go.botsarena.tech/docs/interview/dachang/interview-issue-63/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://go.botsarena.tech/docs/interview/dachang/interview-issue-63/</guid><description>&lt;h1 id="五场后端面试综合面经"&gt;
 &lt;a class="page-home-link" href="https://go.botsarena.tech/"&gt;五场后端面试综合面经&lt;/a&gt;
&lt;/h1&gt;

&lt;blockquote class='book-hint '&gt;
&lt;p&gt;根据得物社区工程、小红书数据库中间件、原力灵机等面试问题合并整理
同义问题已合并；能体现考察深度的连续追问予以保留。本文只包含问题，不包含参考答案。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="一自我介绍与求职意向"&gt;一、自我介绍与求职意向&lt;a class="anchor" href="#%e4%b8%80%e8%87%aa%e6%88%91%e4%bb%8b%e7%bb%8d%e4%b8%8e%e6%b1%82%e8%81%8c%e6%84%8f%e5%90%91"&gt;#&lt;/a&gt;&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;请在 5 分钟内做一个简单的自我介绍。&lt;/li&gt;
&lt;li&gt;请选择一个最能展现个人特点的项目，并重点介绍其中的亮点、挑战和有意思的设计。&lt;/li&gt;
&lt;li&gt;你可以实习多久？是否能够连续实习 5～6 个月？&lt;/li&gt;
&lt;li&gt;你未来主要想做传统后端、数据库中间件，还是 Agent 应用开发？为什么？&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="二短视频-feed-流项目"&gt;二、短视频 Feed 流项目&lt;a class="anchor" href="#%e4%ba%8c%e7%9f%ad%e8%a7%86%e9%a2%91-feed-%e6%b5%81%e9%a1%b9%e7%9b%ae"&gt;#&lt;/a&gt;&lt;/h2&gt;


&lt;h3 id="1-项目架构与数据模型"&gt;1. 项目架构与数据模型&lt;a class="anchor" href="#1-%e9%a1%b9%e7%9b%ae%e6%9e%b6%e6%9e%84%e4%b8%8e%e6%95%b0%e6%8d%ae%e6%a8%a1%e5%9e%8b"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;请介绍短视频 Feed 流系统的整体架构、核心链路和你负责的部分。&lt;/li&gt;
&lt;li&gt;Feed 流项目中最主要的技术挑战是什么？你做了哪些有价值的取舍或优化？&lt;/li&gt;
&lt;li&gt;Feed 流的核心数据模型是怎样的？哪些数据最终持久化到 MySQL？&lt;/li&gt;
&lt;li&gt;用户关注关系和粉丝关系表是如何设计的？&lt;/li&gt;
&lt;li&gt;Feed 流中的 MySQL 索引是如何设计的？为什么这样设计？&lt;/li&gt;
&lt;li&gt;项目中的业务数据量有多大？MySQL、Redis 分别保存了多少数据？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="2-查询与分页"&gt;2. 查询与分页&lt;a class="anchor" href="#2-%e6%9f%a5%e8%af%a2%e4%b8%8e%e5%88%86%e9%a1%b5"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Feed 为什么采用游标分页？游标分页的原理是什么？&lt;/li&gt;
&lt;li&gt;游标分页为什么能够缓解深分页问题？它与 &lt;code&gt;LIMIT offset&lt;/code&gt; 相比有什么区别？&lt;/li&gt;
&lt;li&gt;ID-Detail 分离解决了什么问题？读取一页 Feed 时，ID 与详情是如何查询和组装的？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="3-推拉结合与大-v-分发"&gt;3. 推拉结合与大 V 分发&lt;a class="anchor" href="#3-%e6%8e%a8%e6%8b%89%e7%bb%93%e5%90%88%e4%b8%8e%e5%a4%a7-v-%e5%88%86%e5%8f%91"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;普通作者和大 V 分别采用什么分发模式？各自的读写成本是什么？&lt;/li&gt;
&lt;li&gt;大 V 拥有百万级粉丝时，发布内容产生的写扩散问题如何处理？&lt;/li&gt;
&lt;li&gt;推拉模式的切换阈值为什么设置为一万粉丝？为什么不是更多或更少？&lt;/li&gt;
&lt;li&gt;既然读扩散会增加读取成本，为什么大 V 反而适合使用拉模式？&lt;/li&gt;
&lt;li&gt;推拉结合相对于纯推或纯拉，主要优化了哪一部分性能？又引入了哪些复杂度？&lt;/li&gt;
&lt;li&gt;为什么不能对所有作者统一采用拉模式？&lt;/li&gt;
&lt;li&gt;如果一个用户关注的全部都是大 V，他的请求是否会退化成纯拉模式？这种最坏读路径如何处理？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="4-压测与容量评估"&gt;4. 压测与容量评估&lt;a class="anchor" href="#4-%e5%8e%8b%e6%b5%8b%e4%b8%8e%e5%ae%b9%e9%87%8f%e8%af%84%e4%bc%b0"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;做 Feed 压测时，整套服务、MySQL、Redis 和消息队列的测试环境是如何搭建的？&lt;/li&gt;
&lt;li&gt;压测使用了怎样的数据规模、请求比例和并发模型？&lt;/li&gt;
&lt;li&gt;如何根据 QPS、P95/P99、错误率、数据库连接数和 Redis 延迟判断系统瓶颈？&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="三多级缓存与-redis-故障治理"&gt;三、多级缓存与 Redis 故障治理&lt;a class="anchor" href="#%e4%b8%89%e5%a4%9a%e7%ba%a7%e7%bc%93%e5%ad%98%e4%b8%8e-redis-%e6%95%85%e9%9a%9c%e6%b2%bb%e7%90%86"&gt;#&lt;/a&gt;&lt;/h2&gt;


&lt;h3 id="1-本地缓存redis-与-mysql"&gt;1. 本地缓存、Redis 与 MySQL&lt;a class="anchor" href="#1-%e6%9c%ac%e5%9c%b0%e7%bc%93%e5%ad%98redis-%e4%b8%8e-mysql"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;本地缓存、Redis、MySQL 的三级数据访问链路分别承担什么职责？&lt;/li&gt;
&lt;li&gt;什么数据适合放在本地缓存？什么数据不适合本地化，更适合放在 Redis 或权威存储？&lt;/li&gt;
&lt;li&gt;用户或作者的基本信息为什么适合放在本地缓存？&lt;/li&gt;
&lt;li&gt;本地缓存的生命周期如何管理？采用 TTL、容量淘汰还是主动失效？&lt;/li&gt;
&lt;li&gt;本地缓存的过期时间一般设置多久？&lt;/li&gt;
&lt;li&gt;为什么选择 15 分钟，而不是更短或更长？&lt;/li&gt;
&lt;li&gt;TTL 低于 15 分钟为什么可能影响性能或用户体验？本地缓存未命中后不是还可以访问 Redis 吗？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="2-mysql-与-redis-一致性"&gt;2. MySQL 与 Redis 一致性&lt;a class="anchor" href="#2-mysql-%e4%b8%8e-redis-%e4%b8%80%e8%87%b4%e6%80%a7"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;MySQL 与 Redis 之间的数据一致性如何保证？&lt;/li&gt;
&lt;li&gt;如果采用定期检查或对账，具体检查什么、如何发现差异、如何修复？&lt;/li&gt;
&lt;li&gt;MySQL 数据同步或回灌到 Redis 需要时间，数据量很大时如何避免一次性重建带来的冲击？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="3-redis-故障追问链"&gt;3. Redis 故障追问链&lt;a class="anchor" href="#3-redis-%e6%95%85%e9%9a%9c%e8%bf%bd%e9%97%ae%e9%93%be"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Redis 整体不可用时，系统如何处理？&lt;/li&gt;
&lt;li&gt;Redis 挂掉后，C 端流量直接回源 MySQL，数据库能否承受？&lt;/li&gt;
&lt;li&gt;Redis 集群部分节点或一半节点故障时，会对 MySQL 造成怎样的冲击？&lt;/li&gt;
&lt;li&gt;为了保护 MySQL，应限制哪一层、哪一类请求的流量？&lt;/li&gt;
&lt;li&gt;Redis 故障时，系统是直接拒绝访问、返回降级数据，还是允许部分请求回源？&lt;/li&gt;
&lt;li&gt;用户侧会看到报错、旧数据还是简化结果？如何确定降级优先级？&lt;/li&gt;
&lt;li&gt;Redis 节点故障并发生数据丢失时，缓存如何恢复和重建？&lt;/li&gt;
&lt;li&gt;恢复期间如何避免大量请求与全量回灌同时压垮 MySQL？&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="四go-并发内存与-gc"&gt;四、Go 并发、内存与 GC&lt;a class="anchor" href="#%e5%9b%9bgo-%e5%b9%b6%e5%8f%91%e5%86%85%e5%ad%98%e4%b8%8e-gc"&gt;#&lt;/a&gt;&lt;/h2&gt;


&lt;h3 id="1-goroutine-与-gmp"&gt;1. Goroutine 与 GMP&lt;a class="anchor" href="#1-goroutine-%e4%b8%8e-gmp"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go 的 goroutine 与操作系统线程是怎样对应的？&lt;/li&gt;
&lt;li&gt;与 Python 的并发方式相比，goroutine 有哪些优势和缺点？&lt;/li&gt;
&lt;li&gt;为什么 goroutine 通常比线程轻量？它是否在所有场景下都更快？&lt;/li&gt;
&lt;li&gt;Java 的协程或虚拟线程与 Go goroutine 有什么差别？协程一定比线程快吗？&lt;/li&gt;
&lt;li&gt;请介绍 GMP 调度模型中 G、M、P 的职责及调度流程。&lt;/li&gt;
&lt;li&gt;Goroutine 发生阻塞系统调用时，G、M、P 分别会发生什么变化？&lt;/li&gt;
&lt;li&gt;多个 P 都有本地运行队列时，调度器如何进行任务分配和负载均衡？&lt;/li&gt;
&lt;li&gt;什么场景下增加线程或 goroutine 能提升性能？什么场景下不能？&lt;/li&gt;
&lt;li&gt;高并发是否一定能够提效？goroutine 是否创建得越多越好？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="2-channel-与同步原语"&gt;2. Channel 与同步原语&lt;a class="anchor" href="#2-channel-%e4%b8%8e%e5%90%8c%e6%ad%a5%e5%8e%9f%e8%af%ad"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Channel 的底层结构和工作原理是什么？&lt;/li&gt;
&lt;li&gt;无缓冲 channel 和有缓冲 channel 有什么区别？分别适合什么场景？&lt;/li&gt;
&lt;li&gt;使用 channel 时有哪些需要注意的点？&lt;/li&gt;
&lt;li&gt;你了解 &lt;code&gt;sync.WaitGroup&lt;/code&gt; 吗？它有哪些主要方法，使用时有哪些风险？&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Mutex&lt;/code&gt; 与 &lt;code&gt;RWMutex&lt;/code&gt; 有什么区别？什么场景下优先选择 &lt;code&gt;RWMutex&lt;/code&gt;？&lt;/li&gt;
&lt;li&gt;什么是自旋锁？它与互斥锁有什么区别，分别适合什么场景？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="3-map-与并发安全"&gt;3. Map 与并发安全&lt;a class="anchor" href="#3-map-%e4%b8%8e%e5%b9%b6%e5%8f%91%e5%ae%89%e5%85%a8"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;使用 Go 原生 map 时有哪些需要注意的地方？&lt;/li&gt;
&lt;li&gt;Go 原生 map 是并发安全的吗？多个 goroutine 并发读写会发生什么？&lt;/li&gt;
&lt;li&gt;Map 并发读写不安全的底层原因是什么？&lt;/li&gt;
&lt;li&gt;如何解决 map 的并发安全问题？&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sync.Map&lt;/code&gt; 适合什么场景？它的实现原理是什么？&lt;/li&gt;
&lt;li&gt;传统 &lt;code&gt;sync.Map&lt;/code&gt; 中的只读区 &lt;code&gt;read&lt;/code&gt; 和脏区 &lt;code&gt;dirty&lt;/code&gt; 如何协作并保证数据可见性？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="4-内存管理与-gc"&gt;4. 内存管理与 GC&lt;a class="anchor" href="#4-%e5%86%85%e5%ad%98%e7%ae%a1%e7%90%86%e4%b8%8e-gc"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go 的内存是如何管理的？对象如何分配和回收？&lt;/li&gt;
&lt;li&gt;常见的垃圾回收算法有哪些？它们分别适合什么场景？&lt;/li&gt;
&lt;li&gt;Go 的垃圾回收是否只有三色标记？完整 GC 流程还包括哪些阶段？&lt;/li&gt;
&lt;li&gt;请详细介绍三色标记法的工作过程。&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="五mysql索引与分库分表"&gt;五、MySQL、索引与分库分表&lt;a class="anchor" href="#%e4%ba%94mysql%e7%b4%a2%e5%bc%95%e4%b8%8e%e5%88%86%e5%ba%93%e5%88%86%e8%a1%a8"&gt;#&lt;/a&gt;&lt;/h2&gt;


&lt;h3 id="1-sql-执行链路"&gt;1. SQL 执行链路&lt;a class="anchor" href="#1-sql-%e6%89%a7%e8%a1%8c%e9%93%be%e8%b7%af"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;一条 &lt;code&gt;INSERT&lt;/code&gt; 或 &lt;code&gt;UPDATE&lt;/code&gt; SQL 发送到 MySQL 后，服务器内部会经历哪些环节？&lt;/li&gt;
&lt;li&gt;SQL 执行过程中，连接层、解析器、优化器、执行器、InnoDB、Buffer Pool、redo log、undo log 和 binlog 分别起什么作用？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="2-innodb-与-b-树索引"&gt;2. InnoDB 与 B+ 树索引&lt;a class="anchor" href="#2-innodb-%e4%b8%8e-b-%e6%a0%91%e7%b4%a2%e5%bc%95"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;MySQL 索引有哪些分类？&lt;/li&gt;
&lt;li&gt;InnoDB 索引是如何实现的？&lt;/li&gt;
&lt;li&gt;B+ 树的数据结构是什么样的？InnoDB 为什么选择 B+ 树？&lt;/li&gt;
&lt;li&gt;B+ 树索引有哪些优势？&lt;/li&gt;
&lt;li&gt;哪些情况会导致 B+ 树索引的查询性能变差？&lt;/li&gt;
&lt;li&gt;索引字段被高并发更新时，会对 B+ 树和写入性能产生什么影响？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="3-索引设计与优化"&gt;3. 索引设计与优化&lt;a class="anchor" href="#3-%e7%b4%a2%e5%bc%95%e8%ae%be%e8%ae%a1%e4%b8%8e%e4%bc%98%e5%8c%96"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;创建索引应遵循哪些原则？什么场景需要创建索引？&lt;/li&gt;
&lt;li&gt;结合 Feed 流项目，哪些字段适合建立索引？哪些字段不适合？&lt;/li&gt;
&lt;li&gt;什么是二级索引和回表？&lt;/li&gt;
&lt;li&gt;什么是覆盖索引？如何通过覆盖索引减少回表？&lt;/li&gt;
&lt;li&gt;什么是联合索引的最左前缀原则？&lt;/li&gt;
&lt;li&gt;多列联合索引应该如何确定字段与顺序？&lt;/li&gt;
&lt;li&gt;哪些写法或场景会造成索引失效？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="4-慢-sql-排查"&gt;4. 慢 SQL 排查&lt;a class="anchor" href="#4-%e6%85%a2-sql-%e6%8e%92%e6%9f%a5"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;一条 SQL 查询很慢，你的完整排查思路是什么？&lt;/li&gt;
&lt;li&gt;如果 SQL 扫描行数很多、查询范围很大，可以从哪些方面改造？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="5-分库分表与中间件"&gt;5. 分库分表与中间件&lt;a class="anchor" href="#5-%e5%88%86%e5%ba%93%e5%88%86%e8%a1%a8%e4%b8%8e%e4%b8%ad%e9%97%b4%e4%bb%b6"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;项目中是否使用过分库分表？你如何理解分库、分表的适用场景和代价？&lt;/li&gt;
&lt;li&gt;一个已经上线且持续有业务流量的单库单表系统要进行拆分，需要考虑哪些问题？完整迁移流程如何设计？&lt;/li&gt;
&lt;li&gt;你了解哪些分库分表开源组件或数据库中间件？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="6-go-数据库连接池"&gt;6. Go 数据库连接池&lt;a class="anchor" href="#6-go-%e6%95%b0%e6%8d%ae%e5%ba%93%e8%bf%9e%e6%8e%a5%e6%b1%a0"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go 连接 MySQL 使用了什么驱动、ORM 或组件？&lt;/li&gt;
&lt;li&gt;数据库连接池存在的意义是什么？&lt;/li&gt;
&lt;li&gt;ORM 或数据库连接池有哪些关键配置参数？这些参数应该如何设置？&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="六redis-数据结构rehash-与集群"&gt;六、Redis 数据结构、Rehash 与集群&lt;a class="anchor" href="#%e5%85%adredis-%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84rehash-%e4%b8%8e%e9%9b%86%e7%be%a4"&gt;#&lt;/a&gt;&lt;/h2&gt;


&lt;h3 id="1-基础数据结构"&gt;1. 基础数据结构&lt;a class="anchor" href="#1-%e5%9f%ba%e7%a1%80%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Redis 支持哪些主要数据结构？&lt;/li&gt;
&lt;li&gt;这些数据类型的底层编码分别是什么？&lt;/li&gt;
&lt;li&gt;Redis Set 通常使用什么底层结构？&lt;/li&gt;
&lt;li&gt;Redis ZSet 为什么能够排序？它的底层结构是怎样的？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="2-缓存异常"&gt;2. 缓存异常&lt;a class="anchor" href="#2-%e7%bc%93%e5%ad%98%e5%bc%82%e5%b8%b8"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;什么是缓存穿透、缓存击穿和缓存雪崩？三者有什么区别？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="3-redis-hash-渐进式-rehash"&gt;3. Redis Hash 渐进式 Rehash&lt;a class="anchor" href="#3-redis-hash-%e6%b8%90%e8%bf%9b%e5%bc%8f-rehash"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Redis Hash 的底层结构和扩容机制是什么？&lt;/li&gt;
&lt;li&gt;Redis 为什么采用渐进式 rehash，而不是一次性迁移全部数据？&lt;/li&gt;
&lt;li&gt;Rehash 期间的数据具体如何迁移？查询、写入和删除如何处理两张表？&lt;/li&gt;
&lt;li&gt;Redis 是按每秒固定数量迁移，还是由其他机制推进迁移？&lt;/li&gt;
&lt;li&gt;如果没有客户端请求、程序处于空闲状态，rehash 还会继续吗？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="4-redis-集群与扩容"&gt;4. Redis 集群与扩容&lt;a class="anchor" href="#4-redis-%e9%9b%86%e7%be%a4%e4%b8%8e%e6%89%a9%e5%ae%b9"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Redis 有哪些集群或高可用模式？分别适合什么场景？&lt;/li&gt;
&lt;li&gt;Redis Cluster 如何实现数据分片？&lt;/li&gt;
&lt;li&gt;集群增加分片或节点时，会发生什么？数据如何迁移？&lt;/li&gt;
&lt;li&gt;假设集群从 8 个分片扩到 9 个分片，原来的哈希映射是否会失效？如何完成重新分片？&lt;/li&gt;
&lt;li&gt;Redis 集群会发生数据倾斜吗？常见原因是什么，如何解决？&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="七rabbitmq-与消息可靠性"&gt;七、RabbitMQ 与消息可靠性&lt;a class="anchor" href="#%e4%b8%83rabbitmq-%e4%b8%8e%e6%b6%88%e6%81%af%e5%8f%af%e9%9d%a0%e6%80%a7"&gt;#&lt;/a&gt;&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;RabbitMQ 如何保证消息从生产者、Broker 到消费者的完整链路不丢失？&lt;/li&gt;
&lt;li&gt;生产者确认、消息持久化、镜像或仲裁队列、消费者 ACK、重试与死信队列分别解决什么问题？&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="八rag检索与排序"&gt;八、RAG、检索与排序&lt;a class="anchor" href="#%e5%85%abrag%e6%a3%80%e7%b4%a2%e4%b8%8e%e6%8e%92%e5%ba%8f"&gt;#&lt;/a&gt;&lt;/h2&gt;


&lt;h3 id="1-文档处理与召回"&gt;1. 文档处理与召回&lt;a class="anchor" href="#1-%e6%96%87%e6%a1%a3%e5%a4%84%e7%90%86%e4%b8%8e%e5%8f%ac%e5%9b%9e"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;RAG 的文档分块策略是如何定义的？分块大小和重叠窗口如何选择？&lt;/li&gt;
&lt;li&gt;为什么同时选择 Milvus 和 Elasticsearch？两者分别承担什么职责？&lt;/li&gt;
&lt;li&gt;Milvus 语义召回与 Elasticsearch 关键词召回后，如何进行排序融合？&lt;/li&gt;
&lt;li&gt;你了解 Elasticsearch 的倒排索引吗？它是如何构建和查询的？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="2-检索路由"&gt;2. 检索路由&lt;a class="anchor" href="#2-%e6%a3%80%e7%b4%a2%e8%b7%af%e7%94%b1"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;当一个 Query 进入系统时，如何判断应该走 Elasticsearch 关键词检索、向量检索、RAG 还是 SQL Agent？&lt;/li&gt;
&lt;li&gt;检索路由由规则、分类模型还是大语言模型完成？为什么？&lt;/li&gt;
&lt;li&gt;如果大模型对检索意图发生误判，系统如何发现、兜底和纠正？&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="九agentmcp-与-ai-coding"&gt;九、Agent、MCP 与 AI Coding&lt;a class="anchor" href="#%e4%b9%9dagentmcp-%e4%b8%8e-ai-coding"&gt;#&lt;/a&gt;&lt;/h2&gt;


&lt;h3 id="1-agent-框架与范式"&gt;1. Agent 框架与范式&lt;a class="anchor" href="#1-agent-%e6%a1%86%e6%9e%b6%e4%b8%8e%e8%8c%83%e5%bc%8f"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;你了解哪些 Agent 常见范式，例如 ReAct？它们有什么区别和适用场景？&lt;/li&gt;
&lt;li&gt;你对 LangChain 和 LangGraph 了解多少？实际使用过哪些能力？&lt;/li&gt;
&lt;li&gt;你是否了解或使用过 OpenCloud 这类 Agent 调度工具？&lt;/li&gt;
&lt;li&gt;RAG 应该如何与 Agent 结合？&lt;/li&gt;
&lt;li&gt;Agent 遇到公开网络中不存在的私有或内网文档时，如何安全获取这部分知识？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="2-mcp"&gt;2. MCP&lt;a class="anchor" href="#2-mcp"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;你了解 MCP 协议吗？它解决了什么问题？&lt;/li&gt;
&lt;li&gt;MCP 中的 Server（或 Service）、Resource 和 Prompt 分别是什么？它们有什么区别？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="3-sql-agent"&gt;3. SQL Agent&lt;a class="anchor" href="#3-sql-agent"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;请介绍 SQL Agent 从接收用户问题到返回结果的完整执行链路。&lt;/li&gt;
&lt;li&gt;SQL Agent 如何理解自然语言、获取数据库 Schema、生成 SQL、校验权限、执行查询并处理结果？&lt;/li&gt;
&lt;li&gt;SQL Agent 如何限制写权限并防止危险 SQL？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="4-对话记忆与任务编排"&gt;4. 对话记忆与任务编排&lt;a class="anchor" href="#4-%e5%af%b9%e8%af%9d%e8%ae%b0%e5%bf%86%e4%b8%8e%e4%bb%bb%e5%8a%a1%e7%bc%96%e6%8e%92"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;多轮对话中的记忆压缩有哪些常见方法？&lt;/li&gt;
&lt;li&gt;短期记忆和长期记忆分别如何设计？&lt;/li&gt;
&lt;li&gt;长期记忆存放在 MySQL 时，表结构如何设计？&lt;/li&gt;
&lt;li&gt;一个长任务或复杂任务执行时，如果上下文过长或模型注意力被分散，应如何拆解和编排任务？&lt;/li&gt;
&lt;li&gt;如何编排 AI 编程工具，使不同阶段共享必要上下文，又避免上下文持续膨胀？&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id="5-ai-coding-与-skills"&gt;5. AI Coding 与 Skills&lt;a class="anchor" href="#5-ai-coding-%e4%b8%8e-skills"&gt;#&lt;/a&gt;&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;你了解哪些 Web Coding 或 AI Coding Skills？实际使用过哪些？&lt;/li&gt;
&lt;li&gt;如何根据项目需求设计或选择适合自己的 Skill？&lt;/li&gt;
&lt;li&gt;如何保证 AI 生成代码的质量和正确性？&lt;/li&gt;
&lt;li&gt;你会如何使用代码审查、静态检查、单元测试、集成测试和多模型复核来校验生成结果？&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="十现场编码"&gt;十、现场编码&lt;a class="anchor" href="#%e5%8d%81%e7%8e%b0%e5%9c%ba%e7%bc%96%e7%a0%81"&gt;#&lt;/a&gt;&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;请现场完成一道算法或编码题，并说明思路、复杂度、边界条件和测试用例。&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id="十一面试收尾与反问"&gt;十一、面试收尾与反问&lt;a class="anchor" href="#%e5%8d%81%e4%b8%80%e9%9d%a2%e8%af%95%e6%94%b6%e5%b0%be%e4%b8%8e%e5%8f%8d%e9%97%ae"&gt;#&lt;/a&gt;&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;部门的核心业务、当前技术架构和主要挑战是什么？&lt;/li&gt;
&lt;li&gt;这个岗位希望候选人重点掌握哪些能力？&lt;/li&gt;
&lt;li&gt;结合我的 Feed、RAG 和 Agent 项目，您对后续学习方向有什么建议？&lt;/li&gt;
&lt;li&gt;团队在 Agent 开发、AI Coding 和 Skills 方面有哪些实践或建议？&lt;/li&gt;
&lt;li&gt;本轮面试结果大概什么时候出来？后续流程是什么？&lt;/li&gt;
&lt;/ol&gt;</description></item></channel></rss>