分页题目
算法工程师相关题目第 2 页
Prompt 优化模块的 A/B 测试方案如何设计?
Prompt 优化模块的 A/B 测试考察的不是简单会不会分流,而是能否把生成式能力放到真实业务链路中评估。高质量回答需要同时讲清实验目标、用户随机化、指标体系、统计检验、版本控制、冷启动影响、离线评测和线上实验的衔接,以及异常情况下的灰度和回滚机制。
同题还出现在 1 个公司岗位
什么场景下会使用分布式缓存?
分布式缓存通常用于高并发、低延迟、读多写少、计算或访问代价高、数据库容易成为瓶颈的场景。面试回答要强调它不是简单替代数据库,而是在业务系统、数据库和外部依赖之间增加一层高速共享存储,用来降低响应时间、削峰、复用热点数据,并配合一致性、过期、降级和容灾策略控制风险。
进程如何保证并发?
进程保证并发,本质上不是某个进程自己保证,而是操作系统通过调度、上下文切换、多核执行、地址空间隔离、进程间通信、同步原语和资源管理共同实现。面试回答要把能同时推进和安全地同时推进区分开:前者靠调度器和 CPU 时间片,后者靠隔离边界、受控共享、锁与信号量、死锁预防以及内核对资源的统一仲裁。
数据库中乐观锁和悲观锁的应用场景是什么?
乐观锁适合读多写少、冲突概率低、业务能接受失败重试的场景;悲观锁适合写冲突高、强一致要求高、不能接受并发覆盖或超卖的场景。回答要围绕版本号/CAS、update where version、重试策略、select for update、行锁、事务边界、死锁风险、隔离级别和幂等性展开。
图数据库是否对 BFS、DFS、找节点之间最短路等有支持?
图数据库通常会直接或间接支持 BFS、DFS、节点间最短路等图遍历能力,支持形式既包括查询语言中的可变长度路径匹配,也包括数据库内置过程、图算法库和离线图计算框架。回答要区分在线图查询和大规模图算法计算,并讲清邻接存储、索引、复杂度、事务一致性以及和关系型数据库递归 join 的差异。
非聚簇索引二次查找的过程?
非聚簇索引二次查找,本质是 InnoDB 使用二级索引先定位满足条件的索引记录,再通过索引叶子节点里保存的主键值到聚簇索引中查找完整行记录。这个过程常被称为回表。面试回答要说明二级索引和聚簇索引的结构差异、为什么叶子节点存主键而不是整行、什么时候必须回表、覆盖索引如何避免回表,以及 ICP、联合索引、范围扫描和优化器成本估算对实际执行路径的影响。
索引都用在什么情况下?
索引适合用在能够显著减少扫描行数、避免额外排序、加速表连接、减少回表或保障数据唯一性的场景,但它不是越多越好。回答要同时讲清楚收益与代价:索引能提升读查询效率,也会占用空间、增加写入维护成本,并且低选择性字段、小表、频繁更新字段往往不适合盲目建索引。
HashMap过程讲一下?
HashMap 的核心是“数组定位桶,桶内解决冲突”。JDK 8 及以后主流实现是 Node 数组加链表加红黑树:先用 hash 扰动把 key 的 hashCode 高位混入低位,再用数组长度减一与 hash 做位与定位桶;put 在桶为空时直接插入,桶非空时按 hash 和 equals 查找同 key,存在则覆盖值,不存在则挂到链表或树中;get 走同样的定位和匹配过程。扩容由容量、负载因子和阈值控制,默认负载因子 0.75,超过阈值后容量通常翻倍。单桶冲突达到树化阈值且数组容量足够时会转红黑树,节点减少到退化阈值附近会退回链表。HashMap 不保证顺序,也不是线程安全容器。
AQS 的核心原理是什么?
AQS 是 Java 并发包中很多同步器的基础框架,它用一个 volatile 的 state 表示同步状态,用 CAS 保证状态修改的原子性,并通过一个变体 CLH 双向等待队列管理竞争失败的线程。面试回答时要把它讲成“状态管理 + 队列排队 + 阻塞唤醒 + 模板方法扩展”的组合,而不是只背 ReentrantLock 底层用了 AQS。
如果用attention的话,q和k分别是什么?
在 attention 里,Q 表示当前位置发出的“查询需求”,K 表示所有候选位置提供的“匹配索引”,二者通过点积计算相关性;相关性经过缩放和 softmax 变成权重,再用这些权重对 V 做加权求和,得到当前位置的上下文表示。Q/K 不是数据库里的固定字段,而是由输入向量经过不同线性变换投影出来的语义子空间表示。
为什么要用RLHF而不用SFT?
RLHF 通常不是用来替代 SFT,而是在 SFT 之后进一步把模型从“会模仿答案”推向“更符合人类偏好和使用场景”。SFT 依赖人工示范数据,让模型学习在给定指令下应该怎么回答;RLHF 通过偏好比较训练奖励模型,再用 PPO 等强化学习方法,或用 DPO 等直接偏好优化方法,让模型针对人类偏好、对齐目标和整体回答质量进行优化。
SFT 数据清洗的具体流程是什么?
SFT 数据清洗的核心目标,是把来自标注、业务日志、开源语料、专家撰写和模型生成改写的数据,整理成可训练、可评估、可追责的指令响应样本。流程不只是删脏数据,而是围绕来源可信、格式统一、语义一致、质量可控、安全合规、覆盖均衡和评估闭环,持续筛掉会让模型学坏、学偏或学乱的样本,同时保留有训练价值的复杂样本。
多轮对话中 Attention 为什么可能导致历史信息衰减?
多轮对话中历史信息衰减,不是 Attention 单一机制的错误,而是注意力权重竞争、上下文窗口容量、位置距离、长文本噪声、摘要压缩、KV cache 截断等因素叠加后的结果。核心现象是:随着新轮次不断加入,早期信息虽然可能仍在上下文中,但在模型计算当前 token 时获得的有效影响力下降,甚至被截断、压缩或检索失败,从而表现为遗忘、答非所问或前后不一致。
同题还出现在 1 个公司岗位
RAG 的 chunk 优化策略有哪些?
RAG 的 chunk 优化本质是在“可召回、可理解、少噪声、低成本”之间做工程权衡。好的 chunk 既不能太小导致语义不完整、召回碎片化,也不能太大导致 embedding 表达被稀释、上下文噪声增加。面试回答应覆盖 chunk size、overlap、语义切分、结构化文档处理、metadata 增强、层级召回、重排与评估闭环,并说明不同文档类型和业务目标下策略会动态调整。
GraphRAG 底层是如何去构建出实体以及实体之间的关系的?
GraphRAG 构建实体和关系,本质上是把非结构化文档经过切分、抽取、消歧、归一、证据绑定和图谱建模,转成可查询的知识图。它不是简单把文本丢给大模型,而是通过分块、实体识别、关系抽取、共指消解、置信度校验、图存储、社区摘要和检索融合,形成既能做语义召回又能做结构化推理的检索增强系统。
Attention 机制的本质是什么?
Attention 机制的本质,是让模型在处理某个当前位置或某个查询时,动态地从一组候选信息中判断“哪些内容更相关”,并按相关性分配权重后做加权汇总。它不是简单的固定窗口、固定规则或人工指定特征选择,而是一种可学习的内容寻址机制:通过 Q/K/V 表示、相似度打分、softmax 归一化和加权求和,把上下文信息按当前需求重新组织起来。
保证Map线程安全?
Map 本身只是键值存储抽象,是否线程安全取决于具体实现和访问方式。普通 HashMap 在并发读写下不安全,可能出现数据丢失、结构破坏、读到不一致状态等问题。保证线程安全通常有几类方案:用外部锁保护所有访问、使用 Collections.synchronizedMap 包装、使用 ConcurrentHashMap、在读多写少场景使用不可变快照或 CopyOnWrite 思路。实际回答时要结合读写比例、是否需要复合操作原子性、是否需要强一致迭代、性能和内存成本来选型。
线程调度和进程调度的区别?
进程是资源分配和地址空间隔离的基本单位,线程是 CPU 执行流和调度的基本单位。在现代 Linux 中,内核调度器实际调度的是 task_struct 表示的可调度实体,因此二者的关键差异不在于两套完全不同的调度器,而在于切换时涉及的资源上下文、地址空间、共享关系和开销不同。
多线程如何在多个CPU上分布?
多线程并不是由程序自己平均分到多个 CPU 上,而是由操作系统调度器把处于可运行状态的线程调度到逻辑 CPU 上执行。线程能否真正并行,取决于可运行线程数、CPU 核心数或逻辑 CPU 数、调度策略、亲和性、负载均衡、锁竞争、I/O 等待、缓存与 NUMA 局部性等因素。
操作系统: 操作系统都有哪些内容?
这道题看似在问操作系统包含什么,实际考察候选人是否能把零散知识组织成一张系统地图:从进程线程、调度、同步互斥,到虚拟内存、文件系统、I/O、网络、系统调用、安全隔离、死锁和性能诊断。优秀回答不应只罗列名词,而要说明操作系统作为硬件与应用之间的管理层,如何抽象资源、分配资源、保护资源,并在并发、高性能和可靠性之间做权衡。
操作系统如何进行内存管理?
操作系统的内存管理核心是把有限且碎片化的物理内存,抽象成每个进程独立、连续、受保护的虚拟地址空间,并通过页表、MMU、TLB、缺页异常、页面置换、交换空间、写时复制和权限控制等机制,在性能、隔离、安全、内存利用率和编程便利性之间做平衡。
进程通信的方式有哪些?
进程间通信本质是在独立地址空间之间传递数据、同步状态或通知事件。回答不能只背名称,要按数据通道、同步机制、适用范围和性能代价展开,重点比较管道、命名管道、消息队列、共享内存、信号量、信号、Socket、Unix domain socket、mmap 和文件锁。
select、poll 和 epoll 有什么区别?
这道题考察 Linux I/O 多路复用的核心差异:它们都解决单线程或少量线程同时管理多个文件描述符的问题,但在内核接口、数据结构、事件通知方式、拷贝成本、遍历成本和高并发可扩展性上差异很大。面试回答不能只背“epoll 更快”,还要说明为什么在大量连接、少量活跃的典型网络服务场景下 epoll 更合适,以及为什么在连接数很少或跨平台场景下 select、poll 仍然可能足够。
数组和链表、队列和栈有什么区别?
数组和链表是两种底层线性存储结构,差异主要体现在内存布局、随机访问、插入删除、缓存局部性和扩容成本。队列和栈是两种抽象数据类型,差异主要体现在访问顺序和操作约束:队列先进先出,栈后进先出。高质量回答要把这两层概念分开:数组和链表是实现材料,队列和栈是使用规则,队列和栈都可以用数组或链表实现。
图像特征处理用什么网络?
图像特征处理没有单一固定网络,核心是根据任务目标、数据规模、实时性和部署环境选择特征提取骨干网络、任务头和训练策略。传统通用选择是 CNN 骨干,如 ResNet、EfficientNet、MobileNet;如果数据规模较大、需要全局建模或与文本对齐,可以选择 ViT、Swin Transformer 或 CLIP 类多模态编码器;如果是检测、分割、OCR 等结构化任务,还需要 FPN、YOLO、Faster R-CNN、Mask R-CNN、OCR encoder-decoder 等任务头。
如何确保cookie不重复?
确保 cookie 不重复,不能只理解为 cookie 名字不要重复。浏览器实际以 name、Domain、Path 作为主要唯一键;同一组键再次 Set-Cookie 会覆盖旧值,但同名 cookie 如果 Domain 或 Path 不同,可以同时存在,并在请求时一起进入 Cookie 请求头。面试中应回答:统一 cookie 的 name、Domain、Path,更新时使用相同属性覆盖;清理历史重复项时按旧 Domain/Path 组合逐个过期;服务端用高熵随机值和存储层唯一约束保证 sessionId/token 唯一。
如何从后端角度控制cookie的域?
从后端角度控制 cookie 的域,核心是在 HTTP 响应头 Set-Cookie 中设置 Domain 属性。后端只能把 cookie 设置到当前请求主机本身,或其合法父域,不能随意设置到无关域名。是否能被后续请求携带,还受 Domain、Path、Secure、SameSite、浏览器公共后缀规则以及跨站请求策略共同影响。
常见 HTTP 状态码有哪些?
HTTP 状态码是服务端对一次请求处理结果的标准化表达,面试中不能只背 200、404、500,而要按 1xx、2xx、3xx、4xx、5xx 五大类理解语义,再结合协议升级、缓存协商、重定向差异、REST 创建与删除语义、限流和网关故障来回答。真正高质量的答案应能说明状态码由谁返回、客户端应如何处理、是否影响缓存、是否改变请求方法,以及在排查线上问题时如何从状态码判断责任边界。
计算机网络: HTTP为什么说是无状态的?
HTTP 被称为无状态协议,核心含义是协议本身不会在服务端自动保存两次请求之间的业务上下文。每个请求都应携带足够的信息,让服务端独立理解并处理它。登录态、购物车、个性化配置等连续业务能力并不是 HTTP 天生具备的,而是通过 Cookie、Session、JWT、数据库或缓存等应用层机制补上的。
TCP 四次挥手的流程是什么?
TCP 四次挥手本质上是连接两端分别关闭各自发送方向的过程。由于 TCP 是全双工协议,一端发出 FIN 只表示自己不再发送数据,但仍能接收对端数据;对端确认后,也可能还要继续发送剩余数据,等发送完成再发自己的 FIN。因此面试回答要讲清 FIN 和 ACK 的含义、半关闭边界、双方状态迁移,以及 TIME_WAIT、CLOSE_WAIT、FIN_WAIT、LAST_ACK 等状态背后的工程意义。
卷积神经网络原理?
卷积神经网络的核心思想,是利用局部感受野和权重共享,从图像或网格数据中逐层提取特征。卷积核在空间上滑动,对局部区域做加权求和,生成特征图;不同卷积核学习不同模式,浅层常捕捉边缘、纹理和颜色变化,深层逐渐组合成部件、形状和语义概念。CNN 并不是简单记住像素,而是学习从局部到整体的层次化表示。
哈希冲突中,伪随机开放地址法如何插入和查找元素?
伪随机开放地址法用同一个哈希表数组解决冲突,通过可复现的探测序列寻找空位或目标元素,关键是插入和查找使用相同序列。
广告排序中 eCPM 如何融合 pCTR、pCVR 和出价,ESMM/MMoE 如何支撑多目标预估?
这道题考察广告排序目标和多目标预估的连接。回答时要先讲清 eCPM 是期望收益排序信号,再说明 pCTR、pCVR、出价分别来自不同任务,ESMM 解决点击后转化的样本选择偏差,MMoE 用共享专家和任务门控支撑多目标学习。
同公司岗位有 2 条面经记录
内容风控中,品牌 logo 风险识别如何兼顾召回、业务管控标准和无关商品过滤?
这道题考察内容风控里的品牌 logo 风险识别如何从“把疑似风险尽量捞出来”走向可上线的业务闭环。回答要覆盖检测识别链路、隐藏真实风险总量下的召回评估、业务管控标准、无关商品过滤、人审和主动学习,以及离线/在线指标和误杀漏放取舍。
Agent 项目选用 OpenAI Agents SDK 时,应如何和自研或开源框架做选型?
这题考 Agent 框架选型方法,回答重点是用任务复杂度、编排需求、工具集成、可观测性、评测、锁定风险、生态成熟度和迁移成本做理性比较。
Agent 任务中 Human-in-the-Loop 应如何设计确认、纠错和中断流程?
这题考 Agent 任务中的 Human-in-the-Loop 控制点设计,回答重点是确认、纠错、中断、恢复、审计和人机责任边界。
Agent 系统中 Multi-Agent、One-Agent 和 LLM+Workflow 应如何选型?
这题考 Agent 架构模式选型,回答重点是 Multi-Agent、One-Agent 和 LLM+Workflow 在复杂度、可控性、成本、延迟、可观测性和适用场景上的取舍。
同题还出现在 2 个公司岗位
Agent 系统如何把用户反馈接入 DPO/PPO 训练,并用 ELO 评估版本效果?
这题考 Agent 反馈闭环和版本评估,回答重点是如何把用户反馈转成偏好数据、用于 DPO/PPO 优化,并用 ELO 或对战评估做版本选择。
如何用多模态大模型识别商品图片并生成可靠的商品描述?
这题考用多模态大模型从商品图片生成可靠商品描述的完整链路,回答重点是视觉理解、属性抽取、文本生成约束、事实校验和评估闭环。
多模态大模型遇到未见过的商品或对象时,如何识别不确定性并兜底?
这题考多模态大模型遇到未见过商品或对象时的风险控制,回答重点是不确定性识别、OOD 检测、检索或人工兜底,以及避免把猜测说成事实。
BGE/GTE 这类 Embedding 模型如何训练,为什么不能直接用 BERT-base 余弦召回?
这题考检索向量模型的训练目标差异,重点是 BGE/GTE 这类 embedding 模型面向语义召回训练,而原始 BERT-base 不天然适合直接做余弦检索。
多模态大模型预训练通常分哪些阶段,ViT 视觉编码器如何参与训练?
这题考多模态大模型预训练的阶段拆解,以及 ViT 视觉编码器如何把图片变成可与语言模型对齐的视觉 token。
同公司岗位有 2 条面经记录
训练 Qwen 这类大语言模型时,训练数据集如何设计才能兼顾质量、多样性和覆盖度?
这题考大语言模型训练数据体系设计,核心是把数据质量、多样性、覆盖度和评测闭环放在同一套可度量的配比与治理流程里,而不是简单说多收集数据或多做清洗。
同公司岗位有 2 条面经记录
Qwen 这类图文多模态大模型接入图像理解时,视觉编码、图文对齐和 token 成本有哪些技术难点?
这题考图文多模态大模型接入图像理解的关键工程和算法难点,重点是视觉特征如何进入语言模型、图文语义如何对齐,以及视觉 token 成本如何在效果和延迟之间取舍。
Qwen 这类大模型如何做压缩和蒸馏,评估时应关注哪些效果损失?
这题考大模型压缩与蒸馏的端到端方法论,关键是同时说明模型怎么变小、能力怎么迁移、成本怎么下降,以及哪些能力和安全边界最容易损失。
训练 Qwen 这类大模型时,分布式训练的通信瓶颈如何优化?
这题考大模型训练中的通信瓶颈定位与优化,重点是理解数据并行、张量并行、流水线并行和 ZeRO/FSDP 等策略如何产生不同通信模式,并用 profiling 指标做取舍。
评估 Qwen 这类大模型的泛化能力和鲁棒性时,评测集与切片指标应如何设计?
这题考大模型评测体系设计,核心是把泛化和鲁棒性定义成可切片、可统计、可回归的问题,避免只用一个公开 benchmark 总分判断模型好坏。
高风险在线环境中的 Agent 异常管控体系应如何设计,覆盖权限分级、执行隔离、熔断止损和审计追踪?
这题考的是高风险在线 Agent 的工程治理能力,重点不是说模型更聪明或加人工确认,而是把权限、工具、执行环境、熔断止损、可观测性和审计恢复设计成一套闭环。