知识点标签

算法面试题解析

算法相关面试题解析,按真实面经题目沉淀核心机制、易错点和面试官追问。

170 道题 6 个岗位 16 个公司

算法相关面试题

一个先单调递增再单调递减的数组,给一个目标值,判断目标值是否在数组中?

这道题本质是 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 个公司岗位

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 检测、退避并重传。

页式存储和段式存储分别应用在什么场景下?

页式存储更适合以固定大小块管理内存,重点解决虚拟内存、按需调页、页面置换和外部碎片问题;段式存储更适合按程序逻辑模块组织地址空间,重点服务于保护、共享、动态链接和模块化。现代系统通常以分页作为底层内存管理基础,并用虚拟内存区域、权限位和映射区间保留分段思想;段页式则把逻辑分段和物理分页结合起来。

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 采样过程这四条主线。

StringBuffer的append和String的+=区别?

StringBuffer 的 append 是在同一个可变字符缓冲区上追加内容;String 的 += 表面像修改字符串,实质通常是生成新的字符串结果。核心区别在于 String 不可变,+= 的优化依赖编译器和上下文,循环拼接容易产生大量临时对象;StringBuffer 维护可变缓冲区,append 多次追加时复用内部数组,并通过同步方法提供线程安全,但也带来锁开销。

有没有了解过交换机和集线器的区别?

集线器是物理层设备,收到比特流后向所有端口无脑转发;交换机是数据链路层设备,会学习源 MAC 地址形成 MAC 地址表,并根据目的 MAC 地址决定转发、过滤或泛洪。核心区别在于:集线器让所有主机共享同一个冲突域和带宽,通常只能半双工并依赖 CSMA/CD;交换机把每个端口隔离成独立冲突域,支持全双工,显著提升吞吐、稳定性和安全性。

开放性问题,菜鸟无人仓机器人从A到B,需要多个机器人到达,怎么样效率最高?

这道题考察的是无人仓机器人路径规划与多机器人调度能力,核心不是单个机器人走最短路,而是在有限通道、有限交汇点、有限充电与装卸资源下,让多个仓储机器人安全、有序、稳定地从A到B完成任务。高质量回答应先定义效率目标,再建立仓库图模型,接着讨论多智能体路径规划、冲突避免、任务分配、在线重规划和仿真评估。

推荐或检索系统里的低频过滤如何实现?

低频过滤不是简单按次数删除,而是在明确业务目标和统计口径后,对样本、特征、query、item、用户行为或候选实体中频次过低、统计不稳定、噪声占比高的部分进行降权、合并、兜底或过滤。高质量回答要覆盖目标、口径、阈值、离线与在线实现、滑动窗口、长尾保护、冷启动、指标评估和工程风险。

稠密特征是如何加入DSIN架构中的?

稠密特征加入 DSIN 的核心思路是:不要破坏 DSIN 对用户行为序列按 session 建模的主干,而是把数值型特征经过规范化、分桶或小型 MLP 投影后,作为用户侧、商品侧、上下文侧、行为侧或 session 侧的补充表示,在最终 CTR 预估网络中与目标商品表示、用户画像表示、上下文表示、session interest 表示进行拼接和交叉。DSIN 负责从历史行为 session 中抽取兴趣、建模兴趣演化并对目标 item 做激活;稠密特征负责补充连续强信号。

如何验证XML文件的正确性?

验证 XML 文件的正确性不能只理解为“能被解析器打开”。完整答案应分层判断:先检查 XML 是否满足 well-formed 语法约束,再根据 DTD、XSD 或其他 schema 验证结构和数据类型,随后确认编码、命名空间、业务规则和安全解析策略,最后通过覆盖性测试样例和明确的错误定位机制保证问题可复现、可修复。

基本数据类型以及包装类,区别?

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、场景塔、任务塔、负迁移、指标体系说明工程落地。

重要度采样是什么?

重要度采样是一种用容易采样的分布 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 现象理解为:某些交叉特征在训练早期或首轮曝光中贡献了主要收益,后续继续训练的边际增益快速下降。它通常暗示交叉特征捕捉了强相关但稀疏的记忆型模式,需要用消融、频次分桶、时效性、泄漏排查和泛化验证来证明联系。