分页题目
阿里巴巴相关面试题第 2 页
多场景和多任务有什么区别?
多场景和多任务都属于推荐系统中共享信息、提升泛化的建模范式,但二者解决的问题维度不同:多场景关注流量入口、业务域、用户行为分布或物料分布不同带来的数据分布差异;多任务关注同一批或相关样本上存在多个预测目标,例如点击、收藏、加购、转化、停留时长等。回答时要先用一句话区分场景和任务,再结合共享底座、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 个公司岗位
栈溢出一般抛什么异常?
栈溢出在 Java 中一般抛出 java.lang.StackOverflowError。严格说它不是 Exception,而是 Error,表示某个线程的调用栈空间被耗尽,常见原因是递归过深、递归没有终止条件、方法之间循环调用,或者单个栈帧过大。
DPO 训练中的梯度爆炸问题如何解决?
DPO 训练中的梯度爆炸通常不是单一超参数问题,而是由偏好对 reward margin 过大、beta 设置不合适、学习率过高、混合精度溢出、reference model 使用不稳定、数据噪声和长序列 log probability 累积共同触发。回答时要先从 DPO 损失和梯度来源讲清机制,再给出从数值稳定、训练超参、数据治理、模型约束到监控排查的系统解决方案。
CAN降低的是计算复杂度还是存储复杂度?
这里的 CAN 按推荐和 CTR 建模语境理解为 Co-Action Network。它的核心不是把线上推理的所有计算量都变少,而是把显式二阶或高阶交叉带来的参数量、存储量和稀疏组合记忆压力降下来。它通过让一个特征参与生成或选择作用于另一个特征的交互权重,用参数共享和动态交互替代海量离散交叉参数,因此主要回答应落在存储复杂度、参数复杂度和长尾稀疏性上,同时承认会引入一定运行时计算。
推荐系统的召回、排序和重排链路如何理解?
这道题考察候选人是否能从工程链路而不是单点模型理解推荐系统:召回负责从海量候选中高覆盖地捞出可能感兴趣的内容,排序负责用特征和模型估计用户行为价值,重排负责在最终曝光前加入多样性、新鲜度、去重、业务规则和体验约束,同时还要兼顾在线延迟、离线评估和 A/B 实验闭环。
同题还出现在 1 个公司岗位
节流函数如何实现?
这道题考察的不是背出一个节流函数片段,而是能否清楚说明高频事件限流的边界语义:节流与防抖的区别、时间戳方案和定时器方案的触发时机差异、是否支持首次立即执行与最后一次补偿执行,以及如何正确保留 this、参数、取消能力和返回值限制。
StringBuffer的底层数据结构?
StringBuffer 的底层核心是一个可变的连续缓冲区,而不是每次修改都创建新的 String。常见实现中,真正负责存储、长度、容量和扩容的是 AbstractStringBuilder;早期实现可理解为 char[],JDK 9+ 常见实现为了紧凑字符串改为 byte[] 加 coder 标记,但对外仍表现为可变字符序列。StringBuffer 的特点是在这套可变缓冲区能力之上,用 synchronized 保护关键操作,因此适合多个线程共享同一个实例时使用;单线程场景通常优先 StringBuilder。
对哪些分类算法有研究?
这道题考察的不是背诵分类算法列表,而是候选人能否把分类问题的建模假设、算法家族、适用场景、优缺点、评估方法和工程选择讲清楚。高质量回答应围绕线性模型、树模型与集成方法、核方法、概率模型、神经分类器、文本/NLP分类器以及评估和选型逻辑展开,并能结合特征稀疏性、样本规模、类别不均衡、可解释性、线上延迟等因素说明取舍。
机器学习模型训练和评估的基本流程是什么?
机器学习模型训练和评估的基本流程,本质是在业务目标约束下,把原始数据转化为可泛化模型,并通过离线验证、线上实验和持续监控判断模型是否真正有效。回答时不能只背训练步骤,还要说明数据质量、切分方式、指标选择、过拟合与数据泄漏控制,以及上线后的反馈闭环。
同题还出现在 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 创建与删除语义、限流和网关故障来回答。真正高质量的答案应能说明状态码由谁返回、客户端应如何处理、是否影响缓存、是否改变请求方法,以及在排查线上问题时如何从状态码判断责任边界。