已解析题目
阿里巴巴相关面试题
前端从 Ajax、Node.js 到数据驱动之后,下一阶段趋势是什么?
这是一道开放型趋势判断题,重点不是猜中唯一答案,而是能把前端发展的主线讲清楚:Ajax 让页面具备局部数据交互能力,Node 把前端从浏览器内扩展到工程化、构建、SSR 和 BFF,数据驱动让 UI 开发进入组件化、声明式和状态管理阶段。下一个阶段更可能不是单点技术,而是智能化、全栈边缘化、跨端运行时、设计工程协同、性能与可观测性等方向的融合。
浏览器输入 URL 到页面渲染经历哪些步骤?
这道题考察的是浏览器导航生命周期的完整理解,不只是背诵 DNS、TCP、HTTP、渲染几个名词,而是要把输入 URL 后的导航调度、缓存命中、Service Worker、网络连接复用、服务端响应、HTML 增量解析、资源优先级、JS 阻塞、渲染流水线和性能指标串成一条因果链。优秀答案应体现浏览器、网络协议、前端性能和运行时机制之间的关系。
同公司岗位有 2 条面经记录
如何保障服务稳定性?
这题考服务稳定性体系化思维,回答要从目标、风险预防、运行时止损、恢复复盘四层展开,而不是只背限流熔断。
强依赖和弱依赖服务应该如何分别保障?
这题考依赖分级治理,关键是先判断依赖是否影响主流程正确性,再分别设计强依赖高可用和弱依赖降级补偿。
两个大文件如何找共同出现的单词?
这题考大文件处理的内存约束意识,回答要先确认精确性和重复语义,再给出哈希分桶或外部排序方案。
TCP、UDP、HTTP 之间是什么关系?
这题考网络分层和协议职责,回答要把 HTTP 的应用语义与 TCP/UDP 的传输能力分开讲。
协程解决什么问题,和线程性能怎么比较?
这题考并发模型和性能边界,回答要说明协程降低的是调度和内存成本,不是让 CPU 计算突破核心数。
区间购票系统如何设计?
这题考区间库存建模和高并发交易一致性,关键是防止重叠区间超卖,并让占座、支付、释放形成闭环。
什么是零拷贝?
这题考 Linux I/O 数据路径,回答要说明零拷贝减少的是用户态与内核态之间的数据搬运和上下文切换。
HTTP 如何判断一个包读完了?
这题考 HTTP 报文解析和 TCP 字节流边界,关键是说明不能靠一次 recv 或 TCP 包判断 HTTP 是否读完。
注册中心挂了怎么办?
这题考服务发现的控制面故障处理,回答要区分注册中心不可用和业务调用链路不可用。
CPU load 是什么?
这题考 Linux 性能指标理解,回答要区分 load average、CPU 使用率、核数和不可中断 I/O 等待。
删除文件后磁盘占用没有减少是什么原因?
这题考 Linux 文件删除语义,关键是说明目录项删除不等于 inode 和数据块立即释放。
ZooKeeper 如何保证数据不丢?
这题考 ZooKeeper 的持久化和多数派提交机制,回答要把事务日志、快照、Zab 和选主安全性串起来。
一个 HTTP 请求的全过程
这题考察从 URL 到响应处理的完整链路,回答要按缓存、DNS、连接、TLS、HTTP 报文、服务端处理和客户端渲染顺序展开。
同题还出现在 2 个公司岗位
DSIN 中特征是如何做交叉的?
DSIN 的特征交叉不是一句“把稠密特征和稀疏特征拼接后送 DNN”就能解释清楚的。它的核心是先把用户历史行为按会话切分,在会话内用自注意力抽取局部兴趣,在会话间建模兴趣演化,再用目标物品对各个会话兴趣做激活。稠密特征通常经过归一化、分桶或线性投影后与稀疏 embedding 融合,交叉既包括注意力中的目标相关交互,也包括 DNN、乘积、差分、CrossNet 等可选显式交叉。
netty有哪些组件?
Netty 的组件可以按启动配置、连接抽象、线程模型、事件流转、数据缓冲、编解码、业务处理、异步通知来理解。回答时不应只罗列类名,而要把 ServerBootstrap 启动服务端、EventLoopGroup 分配线程、Channel 承载连接、Pipeline 串联 Handler、ByteBuf 承载数据、Future 返回异步结果这条链路讲清楚。
一个先单调递增再单调递减的数组,给一个目标值,判断目标值是否在数组中?
这道题本质是 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 检测、退避并重传。
常见 JVM 垃圾收集器分别适合什么场景?
垃圾回收器适用场景不能只背名称,而要围绕吞吐量、停顿时间、堆大小、对象生命周期、CPU 余量和运行时版本来选择。Serial 适合小堆和低资源环境,Parallel 适合吞吐优先任务,CMS 是旧版本低停顿方案但有碎片和并发失败风险,G1 是较新主流服务端的平衡型选择,ZGC 与 Shenandoah 面向更严苛的低停顿和大堆场景,Epsilon 只适合测试、压测和短生命周期实验。
说一下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 多次追加时复用内部数组,并通过同步方法提供线程安全,但也带来锁开销。
什么情况服务器会有大量的TIME_WAIT连接?
服务器出现大量 TIME_WAIT,本质上说明这台机器在大量 TCP 连接中充当了主动关闭方,并且连接关闭后需要保留 2MSL 时间以保证最后一个 ACK 可重传、旧报文不会污染后续连接。常见诱因包括短连接比例高、高并发请求快速结束、服务端主动断开 HTTP 连接、未开启或未复用 keep-alive、反向代理到后端使用短连接、客户端或上游连接池配置不合理,以及瞬时流量尖峰。大量 TIME_WAIT 本身不一定是故障,但如果伴随本地端口耗尽、连接建立失败、CPU 软中断升高或 accept/connect 异常,就需要结合业务关闭方向、连接复用、系统参数和网络路径做定位。
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 和比较语义等问题。
进程通信方式分别适合什么场景?
这道题考察的不是背诵 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 在联合序列中语义混淆。