岗位题目
算法相关面试题
MySQL 如何防止幻读?
MySQL 防止幻读要分清快照读和当前读。InnoDB 在可重复读下通过 MVCC 让普通查询看到稳定快照,通过 next-key lock 和 gap lock 保护范围加锁查询,从而阻止其他事务在范围内插入新记录。
意图识别有哪些分类方式,如何实现?
意图识别可以按标签数量、业务层级、开放程度、是否结合槽位和决策阶段分类。实现上要从标签体系、数据标注、模型方案、置信度治理和线上闭环五个层面设计,而不是只训练一个分类器。
DPO 训练中的正反馈样例如何构造?
DPO 的正反馈样例不是单独的好回答,而是偏好对里的 chosen answer。构造时要保证同一 prompt 下正样本相对负样本更符合事实、指令、风格、安全和业务目标,并通过人工或高可信信号过滤噪声。
多意图识别中如何选择单标签和多标签分类?
多意图识别选择单标签还是多标签,取决于业务动作是否互斥、用户一句话是否可能触发多个独立流程、标注是否稳定以及下游系统能否处理多结果。单标签更简单稳定,多标签表达能力更强但需要阈值、冲突消解和更复杂评估。
SFT 之后做 DPO,DPO 和 RLHF/PPO 有什么区别?
SFT 之后做 DPO,是先让模型学会基本任务格式和能力,再用偏好对调整回答倾向。DPO 直接用偏好数据优化策略与参考模型的概率比,RLHF/PPO 通常先训练奖励模型,再通过强化学习在线优化奖励,工程复杂度和稳定性差异很大。
RAG 在意图识别中有什么作用?
RAG 在意图识别中的作用,是把相似历史表达、标签定义、业务文档和动态规则检索出来,辅助模型缩小候选、消除歧义、识别长尾和处理新业务。它不是替代分类器,而是给分类决策提供可更新的外部证据。
vLLM 有哪些技术优势,为什么推理性能高?
vLLM 推理性能高,核心来自围绕大模型解码瓶颈做系统优化:PagedAttention 降低 KV cache 内存碎片并提升复用,连续批处理提高 GPU 利用率,再结合高效调度、前缀缓存和并行能力提高吞吐。
DSIN 中特征是如何做交叉的?
DSIN 的特征交叉不是一句“把稠密特征和稀疏特征拼接后送 DNN”就能解释清楚的。它的核心是先把用户历史行为按会话切分,在会话内用自注意力抽取局部兴趣,在会话间建模兴趣演化,再用目标物品对各个会话兴趣做激活。稠密特征通常经过归一化、分桶或线性投影后与稀疏 embedding 融合,交叉既包括注意力中的目标相关交互,也包括 DNN、乘积、差分、CrossNet 等可选显式交叉。
一个先单调递增再单调递减的数组,给一个目标值,判断目标值是否在数组中?
这道题本质是 bitonic array search:数组先升后降,不能直接用一次普通二分,因为整体不单调;也不应该线性扫描,因为会浪费可二分的结构。标准做法是先用二分找到峰值位置,再分别在左侧递增段和右侧递减段做二分查找。若数组满足严格先增后减,整体时间复杂度为 O(log n),空间复杂度为 O(1)。
哪些可能发生OOM的区域?
JVM 里可能发生 OOM 的位置不只有 Java 堆,还包括虚拟机栈、本地方法栈、元空间或方法区、直接内存、线程创建所需 native memory,以及容器总内存限制触发的进程终止。完整回答应按内存区域、典型异常、常见原因和诊断证据展开。
Lora的原理能简单讲讲吗?
LoRA 是一种参数高效微调方法:不直接改动大模型原有权重,而是在关键线性层旁边增加一个低秩增量分支,用少量可训练参数学习任务差异。它的核心假设是:下游任务需要的权重变化 ΔW 往往不需要满秩矩阵表达,可以用两个小矩阵 B 和 A 的乘积近似,即 ΔW = BA。训练时冻结基座模型,只训练 A、B;推理时可以把 ΔW 合并回原权重,几乎不增加推理结构复杂度。
同题还出现在 1 个公司岗位
RDMA 连接和性能调优通常关注哪些参数?
RDMA 参数题通常不是让背某一个结构体字段,而是考察能否把关键配置维度讲清楚:资源对象参数、连接寻址参数、传输可靠性参数、内存注册参数、网络层参数以及性能调优参数。完整答案应覆盖 QP、CQ、PD、MR、LID/GID、QPN/PSN、MTU、SL 或 traffic class、RoCE v2 的 IP/UDP/VLAN/PFC/ECN,以及 inline、队列深度、CQ moderation、retry、RNR timeout 等影响吞吐和延迟的参数。
A* 相比 Dijkstra 优化了什么问题?
A* 主要优化的是 Dijkstra 在单源到单目标最短路径场景中的均匀扩展问题。Dijkstra 只按当前已知代价 g(n) 从近到远扩展,不利用终点方向信息,因此会探索大量与目标无关但距离起点较近的节点。A* 在 g(n) 基础上加入启发式估计 h(n),用 f(n)=g(n)+h(n) 同时衡量已经走了多远和预计还要走多远,从而优先扩展更可能通向目标的节点。
图分割是什么?以 Normalized Cut 为例如何介绍?
图分割的核心是把像素、超像素或区域划分成语义或视觉一致的子区域,使同一区域内部相似度高、不同区域之间差异大。面试中不要只罗列算法名,最好选择一种方法深入讲清楚:输入如何建模、相似度如何定义、优化目标是什么、怎么求解、效果如何评估、适用边界在哪里。以 Normalized Cut 为例,它把图像表示成加权无向图,把分割转化为图划分问题,通过最小化归一化割代价,避免普通最小割偏向切出很小孤立区域的问题。
什么是on policy,什么是off policy?
on-policy 和 off-policy 的核心区别不在于算法是否探索,而在于用来学习的数据是由谁产生的。on-policy 用当前正在优化的策略采样,并用这些数据更新同一个策略;off-policy 允许用另一个行为策略、历史日志或经验回放产生的数据,去学习目标策略。回答时要把行为策略、目标策略、数据分布偏差、代表算法和工程取舍讲清楚。
冲突域里面是什么发生了冲突?
冲突域里发生冲突的不是主机、IP 地址或业务请求,而是同一共享二层介质上同时发送的以太网信号或帧发生碰撞。典型场景是半双工共享以太网中,多个节点同时往同一介质发送数据,信号叠加导致接收端无法正确还原比特,需要通过 CSMA/CD 检测、退避并重传。
说一下TreeMap的实现原理?
TreeMap 是 Java 中基于红黑树实现的有序 Map。它按照 key 的比较规则维护全局排序,核心操作通常是 O(log n),适合按 key 有序遍历、范围查询、前驱后继、最大最小 key 等场景。
页式存储和段式存储分别应用在什么场景下?
页式存储更适合以固定大小块管理内存,重点解决虚拟内存、按需调页、页面置换和外部碎片问题;段式存储更适合按程序逻辑模块组织地址空间,重点服务于保护、共享、动态链接和模块化。现代系统通常以分页作为底层内存管理基础,并用虚拟内存区域、权限位和映射区间保留分段思想;段页式则把逻辑分段和物理分页结合起来。
ChatGPT为什么不用Reward-Model的数据直接fine-tune,而用RL?
Reward Model 的数据本质上是偏好判断或打分信号,它告诉模型哪些回答更符合人类偏好,但通常不直接提供一条完美答案。SFT 学的是给定输入后模仿标准输出,目标是最大化示范答案的似然;RLHF、PPO 或偏好优化学的是在很多可能回答中提高被奖励函数偏好的概率,目标是优化行为策略。ChatGPT 不直接用 Reward Model 的数据 fine-tune,核心原因是两类数据和两类目标不同:偏好数据适合训练评价器或优化策略,不等价于监督学习所需的高质量目标答案。
推荐系统里除了位置偏置,还有哪些常见偏置?
推荐系统中的偏置不只来自排序位置,还来自曝光机制、用户选择、物料流行度、展示样式、来源信任、样本构造、反馈回路、时间变化、用户活跃度和反馈标注方式。面试回答要把偏置讲成数据如何被观察到、反馈如何被产生、模型如何被训练和评估的系统性问题,并进一步说明可用随机化实验、因果估计、逆倾向加权、重采样、多目标约束和更谨慎的在线评估来缓解。
冲突域和广播域的定义和区别?
冲突域关注的是二层或物理层以太网中谁和谁会争用同一发送介质、同时发送会不会发生碰撞;广播域关注的是一个二层广播帧会被扩散到哪些接口。集线器会把所有端口放在同一个冲突域和同一个广播域;交换机默认每个端口一个冲突域,但所有同 VLAN 端口仍属于同一个广播域;路由器、三层接口、不同 VLAN 之间的边界会隔离广播域。
图分割,针对一种图分割方法进行具体介绍?
图分割是把图结构里的顶点划分为若干子集,使子集内部连接尽量强、子集之间连接尽量弱。一个代表性方法是 Normalized Cut,也常与谱聚类一起讲。它的核心思想不是简单最小化跨分区边权,而是同时考虑每个分区与整体图的连接规模,避免把孤立点或很小的点集切出去形成退化结果。
FLUX系列的整体框架是怎样的?
FLUX 系列可以概括为在潜空间里工作的 Flow Matching 图像生成 Transformer。它不是传统以 U-Net 为主体的扩散架构,而是把噪声潜变量、文本条件、时间步、位置编码和可选引导信息统一送入多模态 Diffusion Transformer,由模型预测从噪声走向图像潜变量的速度场,再通过多步采样积分得到干净潜变量,最后由自编码器解码成图像。回答时要抓住潜空间生成、文本条件编码、多模态 Transformer 主干、Flow Matching 采样过程这四条主线。
JVM 线程栈大小参数 -Xss 如何设置?
这道题考察的是 JVM 运行时栈内存模型和线程栈参数。核心结论:每个 Java 线程都有独立的 Java 虚拟机栈,方法调用会不断压入栈帧;递归过深或调用链过深通常会触发 StackOverflowError;线程创建过多、每个线程栈过大或系统/容器可用内存不足时,可能触发 OutOfMemoryError: unable to create new native thread。JVM 中常用 -Xss 设置单个线程的栈大小。
StringBuffer的append和String的+=区别?
StringBuffer 的 append 是在同一个可变字符缓冲区上追加内容;String 的 += 表面像修改字符串,实质通常是生成新的字符串结果。核心区别在于 String 不可变,+= 的优化依赖编译器和上下文,循环拼接容易产生大量临时对象;StringBuffer 维护可变缓冲区,append 多次追加时复用内部数组,并通过同步方法提供线程安全,但也带来锁开销。
MMDiT 如何处理双流、单流输入并融合文本和图像模态?
MMDiT 的核心不是把文本和图像粗暴拼成一种特征,而是先保留两种模态各自的处理路径,再在注意力层里做联合交互。文本 token 和图像 latent patch token 通常有各自的投影、归一化、调制和前馈网络;进入注意力时分别生成 Q/K/V,再拼接到同一个注意力计算中,让文本与图像能够双向通信。部分架构还会在前面的双流阶段之后进入单流阶段,用统一 Transformer block 继续处理拼接后的 token,但仍通过位置、类型、掩码或前后处理保留模态身份。
有没有了解过交换机和集线器的区别?
集线器是物理层设备,收到比特流后向所有端口无脑转发;交换机是数据链路层设备,会学习源 MAC 地址形成 MAC 地址表,并根据目的 MAC 地址决定转发、过滤或泛洪。核心区别在于:集线器让所有主机共享同一个冲突域和带宽,通常只能半双工并依赖 CSMA/CD;交换机把每个端口隔离成独立冲突域,支持全双工,显著提升吞吐、稳定性和安全性。
开放性问题,菜鸟无人仓机器人从A到B,需要多个机器人到达,怎么样效率最高?
这道题考察的是无人仓机器人路径规划与多机器人调度能力,核心不是单个机器人走最短路,而是在有限通道、有限交汇点、有限充电与装卸资源下,让多个仓储机器人安全、有序、稳定地从A到B完成任务。高质量回答应先定义效率目标,再建立仓库图模型,接着讨论多智能体路径规划、冲突避免、任务分配、在线重规划和仿真评估。
常见的cpu load过高,us过高,一般是什么问题?
CPU load 高和 CPU 使用率高不是同一个概念。load average 统计可运行队列和不可中断 I/O 任务,us 高表示用户态代码消耗大量 CPU。排查要先看 us、sy、wa、si、st 的结构,再定位到进程、线程和调用栈。
推荐或检索系统里的低频过滤如何实现?
低频过滤不是简单按次数删除,而是在明确业务目标和统计口径后,对样本、特征、query、item、用户行为或候选实体中频次过低、统计不稳定、噪声占比高的部分进行降权、合并、兜底或过滤。高质量回答要覆盖目标、口径、阈值、离线与在线实现、滑动窗口、长尾保护、冷启动、指标评估和工程风险。
稠密特征是如何加入DSIN架构中的?
稠密特征加入 DSIN 的核心思路是:不要破坏 DSIN 对用户行为序列按 session 建模的主干,而是把数值型特征经过规范化、分桶或小型 MLP 投影后,作为用户侧、商品侧、上下文侧、行为侧或 session 侧的补充表示,在最终 CTR 预估网络中与目标商品表示、用户画像表示、上下文表示、session interest 表示进行拼接和交叉。DSIN 负责从历史行为 session 中抽取兴趣、建模兴趣演化并对目标 item 做激活;稠密特征负责补充连续强信号。
如何验证XML文件的正确性?
验证 XML 文件的正确性不能只理解为“能被解析器打开”。完整答案应分层判断:先检查 XML 是否满足 well-formed 语法约束,再根据 DTD、XSD 或其他 schema 验证结构和数据类型,随后确认编码、命名空间、业务规则和安全解析策略,最后通过覆盖性测试样例和明确的错误定位机制保证问题可复现、可修复。
RPC框架是怎么样的?
RPC 框架让调用远程服务像调用本地方法一样自然,但它本质上解决的是跨进程、跨机器调用中的寻址、编解码、网络通信、故障处理和治理问题。高质量回答要讲清动态代理、序列化、协议、服务发现、负载均衡、超时重试、熔断限流、链路追踪和幂等。
怎么查看OS的负载?
查看 OS 负载不能只报一个命令,要说明 Linux load average 的含义、采集入口、判断标准和定位路径。核心是先用 uptime、top、w 或 /proc/loadavg 看 1/5/15 分钟平均负载,再结合 CPU 核数、运行队列、不可中断任务、IO 等待、上下文切换和进程级指标判断是 CPU 饱和、IO 阻塞还是调度压力。
基本数据类型以及包装类,区别?
Java 基本数据类型是直接表达值的类型,包括 byte、short、int、long、float、double、char、boolean;包装类是对应的引用类型,包括 Byte、Short、Integer、Long、Float、Double、Character、Boolean。核心区别在于:基本类型没有对象身份、不能为 null、不能用于泛型;包装类有对象语义、可以为 null、能进入集合和泛型体系,但会带来装箱拆箱、缓存池、对象开销、NPE 和比较语义等问题。
Kontext的位置编码,在处理ref和noise_latent的时候,有什么区别对待吗?
原则上,ref 图像 token 和 noise_latent token 在联合注意力里需要使用兼容的位置坐标,否则模型很难判断参考内容和待生成区域的空间对应关系。但是否区别对待取决于具体实现:常见做法是二者使用同一类二维位置编码或 RoPE 坐标体系,同时通过空间坐标范围、序列拼接位置、offset、segment/modality 标识、mask 或额外条件嵌入来区分 ref 与 noise_latent。关键不是断言某个实现一定怎样,而是说明位置编码要保证可对齐,又要避免 ref token 和 target token 在联合序列中语义混淆。
多场景和多任务有什么区别?
多场景和多任务都属于推荐系统中共享信息、提升泛化的建模范式,但二者解决的问题维度不同:多场景关注流量入口、业务域、用户行为分布或物料分布不同带来的数据分布差异;多任务关注同一批或相关样本上存在多个预测目标,例如点击、收藏、加购、转化、停留时长等。回答时要先用一句话区分场景和任务,再结合共享底座、MMoE、PLE、场景塔、任务塔、负迁移、指标体系说明工程落地。
ArrayList 是怎么扩容的?
ArrayList 的扩容本质是底层 Object[] 容量不足时创建更大的数组并复制旧元素。常见 OpenJDK 实现中,空参构造会延迟分配默认容量,首次添加时通常扩到 10;后续容量不够时按约 1.5 倍增长。面试回答要同时讲清 add 触发路径、复制成本、均摊复杂度、极限容量和与数组、LinkedList 的差异。
重要度采样是什么?
重要度采样是一种用容易采样的分布 q 来估计目标分布 p 下期望的蒙特卡洛方法。核心思想是:如果想计算 E_p[f(X)],但很难直接从 p(x) 采样,可以改从 q(x) 采样,并给每个样本乘上重要性权重 w(x)=p(x)/q(x),从而修正采样分布带来的偏差。它广泛用于概率统计、机器学习、强化学习离策略评估、贝叶斯推断和稀有事件估计。
图归一化的方式有哪些?
图归一化的核心目的是让图上的信息传播在数值上稳定、在结构上公平、在训练上可优化。常见做法包括对邻接矩阵做度归一化、对称归一化或随机游走归一化,加入自环以保留节点自身信息,对节点特征和边权做尺度处理,以及在多层 GNN 中使用 BatchNorm、LayerNorm、GraphNorm 等缓解训练不稳定、过平滑和不同图规模带来的分布差异。回答时应把归一化什么、为什么归一化、适合什么模型和场景讲清楚。
在MMDIT里,联合注意力计算完之后,数据会流经哪些层?
MMDiT 中的联合注意力并不是整个 block 的终点。它完成的是跨模态 token 的信息交换:图像 latent token、文本 token 或其他条件 token 在同一个注意力空间里互相读取信息。注意力结果通常会先经过输出投影,再按模态拆回各自 stream,结合门控调制与残差连接写回原特征;随后进入归一化或自适应归一化、MLP/Feed-Forward、再次门控、再次残差,最后把更新后的各模态特征交给下一个 MMDiT block 或后续输出层。
序列标注时数据量太少的时候怎么做?
序列标注数据量太少时,核心不是单纯多标一点,而是先确认任务边界和标注质量,再用预训练迁移降低样本需求,用规则、词典、弱监督和半监督扩大可用监督信号,用数据增强和主动学习提高样本效率,最后通过 CRF、约束解码和一致性评估减少不合法输出。一个成熟回答应覆盖数据、模型、标注、推理约束和评估闭环,而不是只说换成 BERT 或做数据增强。
多机器人从 A 到 B,如何规划路径和调度才能效率最高?
这类问题本质不是单个机器人从起点到终点的最短路,而是多机器人路径规划与调度问题。高效方案应先明确优化目标,再把仓库抽象成栅格图或有向图,在时间维度上处理多个机器人之间的点冲突、边冲突、通道容量、死锁和动态障碍。工程上通常不会追求全局最优,而是在安全避碰的前提下,用 A* 或 Dijkstra 生成单体路径,再结合优先级规划、CBS、时间扩展图、预约表、滚动重规划等方法,在最优性、实时性和系统吞吐之间取平衡。
为什么要使用旋转位置编码?
旋转位置编码(RoPE)的核心价值,是把位置信息以“旋转”的方式注入到注意力机制的 Query 和 Key 中,使模型在计算注意力分数时自然感知 token 之间的相对距离。相比直接相加的绝对位置编码,RoPE 更贴合 Transformer 的点积注意力结构,既能保留顺序信息,又能让相对位置关系在 QK 点积中显式出现。
同题还出现在 2 个公司岗位
图采样方法有哪些?
图采样是在大规模图上用较小、可计算的节点、边、路径或子图近似原图结构与学习目标的方法。它常用于图挖掘和图神经网络训练,核心矛盾是采样越小,计算越快、显存越省,但估计偏差、方差、结构断裂和度分布偏移可能越严重。常见方法包括节点采样、边采样、随机游走采样、邻居采样、层采样、子图或簇采样、重要性采样,以及用于链路预测和对比学习的负采样。
特征交叉和 One Epoch 现象之间有什么联系?
这道题的核心不是问“特征交叉是什么”,而是问候选人能否把一次工程观察解释成可验证的推荐系统规律。可以把 One Epoch 现象理解为:某些交叉特征在训练早期或首轮曝光中贡献了主要收益,后续继续训练的边际增益快速下降。它通常暗示交叉特征捕捉了强相关但稀疏的记忆型模式,需要用消融、频次分桶、时效性、泄漏排查和泛化验证来证明联系。
对句法分析、词性标注的算法有了解吗?
这道题考察两类自然语言处理基础任务:词性标注负责给词分配语法类别,句法分析负责刻画词与词、短语与短语之间的结构关系。好的回答应分别说明任务定义、经典方法、主流神经模型、评价指标和工程取舍,再解释二者如何在完整 NLP 系统中相互影响。
分词算法有哪些?
分词算法解决的是把连续文本切成有意义的词或子词单位。中文没有天然空格,因此分词既要处理词典匹配,也要处理歧义、未登录词、新词、专名、领域词和下游任务适配。常见算法包括基于词典的正向/逆向/双向最大匹配、DAG 加动态规划、HMM/CRF 序列标注、统计语言模型、深度学习序列标注,以及 BPE、WordPiece、SentencePiece 等子词切分方法。
同题还出现在 2 个公司岗位