分页解析
第 6 页面试题
筛选题目 公司、岗位、知识点
公司
公司岗位
岗位
标签
如何验证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 和比较语义等问题。
进程通信方式分别适合什么场景?
这道题考察的不是背诵 IPC 名词,而是能否根据进程关系、通信方向、数据量、时延、可靠性、同步需求和部署范围选择合适方案。回答时应先按场景分类:父子进程简单字节流用管道,本机无亲缘进程可用 FIFO、消息队列或本地 Socket,高吞吐大块数据用共享内存配合同步原语,事件通知用信号,跨主机通信用网络 Socket,文件或 mmap 适合持久化、低频共享和大文件映射。
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 个公司岗位
栈溢出一般抛什么异常?
栈溢出在 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 和文件锁。