公司题库

阿里巴巴面经题库第 5 页

399 道题 11 个岗位 147 个标签

阿里巴巴相关面试题第 5 页

知道如何查看线程的cpu内存等资源使用情况吗?

查看线程级 CPU、内存等资源使用情况,核心思路是先确认进程 PID,再进入线程维度观察。Linux 中线程本质上是轻量级进程,每个线程都有自己的 TID,因此可以用 top -H、ps -L、pidstat -t、/proc/<pid>/task/<tid>/ 等方式查看线程级 CPU、调度状态、上下文切换和栈。CPU 通常能定位到线程,但内存大多是进程级共享资源,不能简单拆给单个线程。

分表规则中,跨表查询+分页该怎么做?

跨表查询和分页的核心不是把单表 limit offset 原样套到每个分表,而是先判断能否命中分片键;能命中就路由到单表或少量表,不能命中才考虑广播查询、局部排序、全局归并。深分页会被分片数放大,工程上更推荐游标分页、二级索引表、异步宽表或搜索服务承接全局查询。

fork发生复制的时候子进程会复制什么?

fork 的本质不是把父进程的一切都物理复制一份,而是创建一个几乎相同的子进程执行上下文:内核为子进程建立新的进程描述符、PID、虚拟地址空间视图和资源引用关系;用户态内存通常通过写时复制延迟分裂;文件描述符表被复制但底层打开文件对象常被共享。因此面试回答要区分“逻辑复制”“引用共享”和“写时复制后才真正复制”。

线程最大数量和什么有关?

Linux 下线程最大数量不是一个固定常量,而是由多层约束共同决定:系统级的 threads-max 和 pid_max、用户级的 RLIMIT_NPROC、服务或容器的 pids 限制、单进程可用地址空间、物理内存与 overcommit 策略、每个线程的用户栈和内核对象开销,以及语言运行时的栈配置共同取最小值。能创建多少线程是一回事,系统能否高效调度这些线程又是另一回事。

Kafka 为什么吞吐量高?

Kafka 的高吞吐不是单点优化,而是围绕日志追加模型构建的一整套链路设计:生产端批量发送和压缩降低请求次数与网络字节数,Broker 端用顺序写和 Page Cache 减少随机磁盘 IO,发送文件时利用零拷贝降低用户态与内核态拷贝成本,Topic 分区让读写并行扩展,消费者拉取模型让消费端按自身能力批量读取。同时,ISR、acks、副本数、刷盘策略等可靠性配置会影响吞吐,面试中要讲清这些设计如何共同减少 IO、网络、CPU 和锁竞争开销。

卷积神经网络原理?

卷积神经网络的核心思想,是利用局部感受野和权重共享,从图像或网格数据中逐层提取特征。卷积核在空间上滑动,对局部区域做加权求和,生成特征图;不同卷积核学习不同模式,浅层常捕捉边缘、纹理和颜色变化,深层逐渐组合成部件、形状和语义概念。CNN 并不是简单记住像素,而是学习从局部到整体的层次化表示。

Http 报文里有什么?

HTTP 报文是客户端和服务端交换应用层数据的基本格式。HTTP/1.x 报文由起始行、请求头或响应头、空行、消息体组成。请求报文的起始行叫请求行,包含方法、请求目标和协议版本;响应报文的起始行叫状态行,包含协议版本、状态码和原因短语。头部字段描述元信息,空行分隔头部和消息体,消息体承载实际业务数据。

http 协议 转 dubbo 协议怎么做的?

HTTP 转 Dubbo 的本质不是协议字节直接翻译,而是在网关或适配层把一个 HTTP 请求解析成一次 Dubbo RPC 调用。核心流程是:接收 HTTP 请求,按路由规则定位 Dubbo 接口、方法和版本,完成参数绑定和类型转换,通过注册中心或本地配置找到服务提供者,使用 Dubbo 客户端按 Dubbo 协议编码、序列化并发起调用,再把 Dubbo 响应、异常和超时结果转换成 HTTP 状态码与响应体。回答要围绕映射、发现、调用、治理和观测展开,而不是只说用网关转发。

进程与线程区别?

进程是操作系统进行资源分配、隔离和保护的基本单位,线程是进程内部的执行流,通常是 CPU 调度的基本单位。进程之间默认拥有独立虚拟地址空间和资源边界,隔离更强;同一进程内多个线程共享地址空间、堆、代码段、打开文件等资源,但各自拥有独立寄存器上下文、栈、线程局部存储和调度状态。

考核某个运营活动的数据指标是哪些?

考核运营活动不能只盯成交额或参与人数,而要先明确活动目标,再按目标指标、过程漏斗、商业结果、用户沉淀、成本效率、增量效果、风险护栏、数据可信度的框架拆解。优秀回答应体现指标分层、前中后评估、对照组思维和归因意识,说明哪些指标用于判断活动是否达成目标,哪些指标用于定位问题,哪些指标用于判断是否值得复用。

如何把相对宏观的指标拆解成一个过程指标,拟合成最终结果作为团队目标,同时搭建类似于数据化的产品,去支撑业务的场景?

这类题考察的不是单纯会不会搭指标体系,而是能否把一个宏观、滞后的业务结果,拆成可理解、可控制、可监控、可复盘的过程系统。高质量回答应围绕先定义北极星指标和结果口径,再用驱动树找到关键杠杆,选择可控过程指标,通过历史数据建模拟合结果,拆解目标到团队动作,并把指标、诊断、预警、实验和复盘产品化展开,体现数据分析既服务目标制定,也服务业务经营。

电商业务分析应该关注哪些核心指标?

电商业务分析的核心不是罗列 GMV、订单量、转化率,而是建立一套从流量获取、用户行为、交易转化、商品供给、履约体验到长期利润的指标体系。分析时要先明确业务目标,再把指标拆成可定位问题的树状结构:规模看 GMV 和订单,效率看转化率和客单价,健康度看复购、留存和退款,经营质量看毛利、补贴效率和库存周转。真正有价值的分析,应能回答增长来自哪里、损失发生在哪一环、应该优先优化什么。

做过最酷的事情是什么,然后延伸扩展一些问题?

这是一道行为面试题,核心不是让候选人讲一个听起来很酷的故事,而是考察你是否能识别高价值问题、主动推进、用数据或用户反馈验证结果,并完成复盘。产品/数据分析方向最适合选择一个真实的业务改进、分析洞察、流程优化、用户增长、实验验证或跨团队推动案例,而不是泛泛讲兴趣爱好或个人挑战。

数据分析时如何看待短期数据和长期数据?

短期数据反映近期变化和即时反馈,长期数据反映趋势、周期和结构性规律。优秀的数据分析不会简单地说短期数据不可靠、长期数据更重要,而是根据问题类型、业务周期、样本量、指标口径和决策场景,把两类数据结合起来判断:用短期数据发现异常和验证动作,用长期数据校准方向和识别真实趋势。

如何定位慢sql,怎么优化?

定位慢 SQL 的核心不是只看执行时间,而是建立从发现、归因、验证到优化的闭环:先通过监控、慢查询日志、数据库性能视图确认慢 SQL;再结合执行计划、索引、扫描行数、锁等待、事务、数据量和业务访问模式判断瓶颈;最后用索引、SQL 改写、分页优化、表结构调整、缓存或架构拆分降低扫描量、排序量、回表量和锁竞争。

SQL 分析题应该如何拆解指标口径和查询逻辑?

回答这类问题不能只说加索引或看执行计划。高质量拆解应先把查询要回答的业务问题讲清楚:指标是什么、统计哪段数据、以什么粒度统计、哪些记录应被纳入或排除;再把 SQL 的逻辑链路拆成数据源、JOIN 关系、过滤条件、聚合口径、排序分页;最后进入性能定位,从慢查询日志、执行计划、索引命中、扫描行数、临时表、排序、锁等待和数据倾斜等角度判断慢在哪里。核心思路是先证明结果口径正确,再证明执行路径高效。

nosql和关系型数据库的区别?

NoSQL 和关系型数据库的核心区别不是新旧,也不是是否支持事务,而是数据模型、结构约束、查询能力、扩展路径和一致性取舍不同。关系型数据库以关系模型、固定 schema、SQL、事务和复杂查询见长,适合结构稳定、关联清晰、强一致要求高的业务;NoSQL 包括 key-value、document、column-family、graph 等类型,更强调灵活 schema、水平扩展、高吞吐和面向访问模式的数据建模。大型系统中二者经常组合使用,而不是互相替代。

设计朋友圈功能时,数据库表如何从简单到复杂演进?

朋友圈数据库设计可以按复杂度分层回答:最小可用版本先有用户、好友关系、动态、媒体、评论和点赞;进阶版本补可见范围、权限校验和删除模型;高并发版本再讨论时间线、读扩散与写扩散、冷热数据、索引、分库分表、幂等与一致性。面试时不要一上来就堆表,而是先说明业务读写路径:发动态、刷列表、看详情、评论点赞、删除和权限变化。

后端慢 SQL 会如何影响前端体验?

后端慢 SQL 不只是后端问题,它会沿着请求链路放大为前端可感知的卡顿、白屏、加载时间过长、按钮无响应、接口超时、重复提交和数据不一致。核心机制是数据库读写占用锁、CPU、IO 和连接,进一步拖慢应用线程、连接池、网关队列与浏览器请求队列,最终影响页面渲染、交互反馈和业务流程完成率。

前端构建工具如何优化构建速度和产物体积?

前端构建优化要同时回答构建速度和产物体积两个目标。速度侧关注开发冷启动、热更新、全量打包、CI 构建是否少做重复工作;体积侧关注未使用代码、重复依赖、静态资源、拆包和浏览器缓存。高质量回答不只是背 Vite 或 Webpack 配置名,而是能解释每个手段解决了构建链路里的哪一段瓶颈。

跨域请求需要携带 Cookie 时,前端该怎么设置?

前端请求不一定必须携带 Cookie。是否携带取决于业务是否依赖 Cookie 做登录态、会话、灰度、风控等状态识别,以及浏览器、前端请求配置、Cookie 属性和服务端 CORS 配置是否同时满足条件。跨域场景下,前端单独设置不够,必须前后端配合:前端开启 credentials,服务端允许带凭证,并返回精确的 Access-Control-Allow-Origin 和 Access-Control-Allow-Credentials。

如果absolute外面再包一个absolute,是什么效果?

absolute 外面再包一个 absolute,本质上是两层脱离普通文档流的定位关系:外层 absolute 先相对自己的包含块定位,内层 absolute 再相对最近的已定位祖先定位。由于外层本身就是 position:absolute,它通常会成为内层 absolute 的包含块,所以内层的 top、left、right、bottom、百分比尺寸等都会以外层盒子的 padding box 为参照,而不是直接以页面或更外层容器为参照。

怎么学习前端的?

这道题考察的不是学过哪些技术名词,而是候选人是否有稳定、系统、可验证的学习方法。回答要体现:先打基础,再用项目验证,再从文档和源码补齐原理,最后通过复盘、输出和指标证明学习有效。

前端监控系统应该如何实现?

前端监控的核心不是简单收集日志,而是建设一套从 SDK 采集、数据清洗、可靠上报、服务端聚合、指标分析、告警响应到问题复盘的闭环体系。它通常覆盖错误监控、性能监控、用户行为埋点、接口质量、业务转化、环境信息和隐私合规。面试回答时要强调:监控目标先于技术实现,数据质量先于数据规模,告警闭环先于报表展示。

Rem 和 em的区别?

rem 和 em 都是 CSS 中的相对长度单位,核心区别在于参照对象不同:em 通常相对于当前元素或其父级继承后的 font-size,rem 始终相对于根元素 html 的 font-size。面试回答时要讲清楚参照基准、继承影响、适用场景和移动端适配实践。

面向对象和面向过程?

面向过程强调“按步骤解决问题”,核心是过程、函数和控制流;面向对象强调“围绕对象建模问题”,核心是对象、状态、行为和协作。两者不是绝对优劣关系,而是适合不同复杂度、变化方向和性能要求的设计范式。前端开发中,组件化、状态封装、事件响应、接口抽象都体现了面向对象思想,但具体实现常常会混合函数式、声明式和面向过程写法。

Array.sort的实现原理?

Array.prototype.sort 的核心不是某一个固定算法,而是 ECMAScript 规定排序语义,各 JavaScript 引擎自行选择实现。面试回答要区分三层:默认比较规则是转字符串后按 UTF-16 码元排序;传入 compareFn 后按返回值正负决定顺序;ES2019 之后规范要求稳定排序,但时间、空间复杂度仍由实现决定。以 V8 为代表的现代实现采用稳定排序方案,并需要处理 undefined、空槽、访问器、原型链、副作用等 JavaScript 动态特性。

有考虑过什么情况下服务器压力会过大?

服务器压力过大本质上不是“访问量大”这一件事,而是系统在当前容量下无法稳定满足目标延迟、吞吐和错误率要求。常见原因包括流量突增、请求复杂度升高、CPU 或内存耗尽、磁盘和网络 IO 瓶颈、数据库慢查询与锁等待、缓存失效、线程池或连接池耗尽、下游依赖变慢、重试放大以及缺少限流降级和弹性扩容能力。面试回答时应从“压力来源、瓶颈位置、观测指标、保护手段、扩容治理”几个层次展开。