ohmyblog

ohmyblog

从 RAG-Fusion 面试题延伸:多条查询怎样避免问成同一个问题

给同一个问题生成五条搜索语句,不代表获得了五种视角。它们可能只是同义改写,仍然全在寻找同一类内容。多查询的价值,应该体现在原问题所需证据是否更完整,而不是日志里出现了多少次检索调用。

经典题解析:Nginx stub_status 里的四种连接数怎么看

看到 Nginx 状态页显示几十个连接,能不能说当前每秒正在处理几十个请求?不能。连接、请求和速率是不同对象,瞬时状态与启动以来的累计值也不能混算。stubstatus 的字段不多,真正的考点是每一项究竟在数什么。

经典题解析:二叉树有多少节点,为什么叶子数等于双子节点数加一

一棵二叉树有九个叶节点、四个只有一个孩子的节点,能不能算出总节点数?这类题不需要猜树的形状,关键是把“节点分几类”和“树一共有几条边”联系起来。先说明这里的二叉树,每个节点最多两个孩子,并不是每个非叶节点都必须有两个孩子。

经典题解析:RAG-Fusion 怎样把多次查询的排名合在一起

同一个问题换几个表达再检索,结果未必能直接拼起来。不同列表有自己的顺序,分数尺度也可能不同。RAG-Fusion 把多查询召回与排名融合连接起来,其中常见的 RRF 规则不比较原始分数,而是根据文档在各列表里的名次累计贡献。

从 Rerank 面试题延伸:有限预算下怎样分配候选名额

重排模型只允许处理一小批候选时,最简单的方案是把初排分数最高的若干条塞进去。但如果前面的条目都来自同一份文档的相邻切块,有限预算可能被相似内容占满,另一条检索路径找到的独立证据根本没有机会参与比较。

经典题解析:ZooKeeper 的命名服务怎样给资源一个稳定入口

分布式环境里,客户端怎样知道某个资源现在在哪里?一种办法是提前约定一个稳定名字,再让这个名字指向可读取的定位信息。ZooKeeper 的层次化命名空间可以承担这种协调入口,但不能因此把它理解成任意规模的文件系统或万能业务主键库。

经典题解析:const int* 和 int* const,究竟谁不能改

const int p 和 int const p 只差一个位置,却限制了不同的修改动作。最容易犯的错误,是把“不能通过这个指针改对象”,听成“这个对象在任何地方都不能变”;或者把指针本身固定,误认为它指向的值也固定。

经典题解析:Rerank 为什么要在召回后再排一次

搜索结果主题都对,却把真正能回答问题的段落排在后面,这时可以考虑 Rerank。但它不是一个放在检索后面就能自动修复所有错误的按钮。理解它,先要区分两个任务:从大量文档中找出候选,以及在已有候选里做更细的比较。

从 HyDE 面试题延伸:查询改写怎样避免把问题带偏

检索问题改写得更完整,结果却更不符合用户要求,这并不罕见。原因可能不是向量模型太弱,而是改写时悄悄更换了问题。尤其当生成内容带着合理的背景补充时,新增细节很容易被后续流程误当成用户已经确认的条件。

经典题解析:Spring Bean 从定义到可用,经历了哪些步骤

Spring 帮你创建对象,但一个 Bean 从配置出现到能够被业务使用,远不止调用一次构造器。答生命周期题,最容易出错的是把“修改定义”“创建实例”和“初始化后包装”混成同一段流程,最后说不清扩展点到底作用于谁。