2025阿里巴巴技术面试题集锦!(附答案).docxVIP

2025阿里巴巴技术面试题集锦!(附答案).docx

本文档由用户AI专业辅助创建,并经网站质量审核通过
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

2025阿里巴巴技术面试题集锦!(附答案)

算法与数据结构类

问题1:给定一个字符串s,其中包含括号()[]{},要求找出最长的有效括号子序列的长度。有效定义为括号类型匹配且顺序正确,子序列不要求连续。

解答思路:子序列问题通常用动态规划(DP)解决,但需注意与子串的区别(子串要求连续)。有效括号子序列的关键是找到匹配的括号对,并累加中间的有效长度。

详细答案:

定义dp[i][j]表示字符串s从i到j位置的最长有效括号子序列长度。状态转移分两种情况:

-若s[i]与s[j]匹配(如s[i]=(,s[j]=)),则dp[i][j]=dp[i+1][j-1]+2;

-否则,dp[i][j]=max(dp[i+1][j],dp[i][j-1])。

边界条件:当i=j时,dp[i][j]=0。

例如,s=([)],i=0((),j=3(])不匹配,取max(dp[1][3],dp[0][2])。dp[1][3]对应[)],最长为2(]不匹配,()匹配);dp[0][2]对应[)],最长为2。最终dp[0][3]=2。

时间复杂度O(n2),空间复杂度O(n2),可通过滚动数组优化至O(n)。

问题2:设计一个支持插入、删除、查询中位数的动态集合,要求各操作时间复杂度不超过O(logn)。

解答思路:中位数是有序集合的中间值,需维护两个堆:大顶堆(保存较小的一半元素)和小顶堆(保存较大的一半元素)。保证大顶堆大小等于或比小顶堆大1(总元素数为奇数时,大顶堆顶为中位数)。

详细答案:

-插入操作:新元素先与大顶堆顶比较,若小于等于则插入大顶堆,否则插入小顶堆。调整堆大小,若大顶堆比小顶堆多2个元素,将大顶堆顶移到小顶堆;若小顶堆比大顶堆大,将小顶堆顶移到大顶堆。

-删除操作:需标记待删除元素(延迟删除),当堆顶是标记元素时弹出。需记录元素在两个堆中的出现次数。

-查询中位数:若总元素数为奇数,返回大顶堆顶;否则返回两堆顶的平均值。

关键点:堆的平衡调整和延迟删除机制,确保每次操作后堆结构满足条件,时间复杂度由堆的插入、删除(O(logn))决定。

系统设计类

问题3:设计一个支持亿级用户的双11秒杀系统,要求QPS10万+,库存扣减0超卖,页面响应时间500ms。

解答思路:秒杀系统的核心是流量削峰、库存精准控制、高可用。需从前端优化、流量分层、库存扣减、防刷等方面设计。

详细答案:

1.前端层:静态资源CDN加速,页面缓存(HTTP304),倒计时按钮(避免提前请求),验证码(防机器刷)。

2.流量分层:

-网关层:限制单用户请求频率(如1次/秒),拦截非法请求(如未登录用户);

-服务层:预生成秒杀令牌(用户需先抢令牌,持令牌才能进入库存扣减),令牌数量=库存数×1.2(防取消);

-缓存层:库存预加载到Redis(原子操作扣减),MySQL作为最终库存源(异步同步)。

3.库存扣减:

-Redis使用lua脚本原子扣减(库存0时扣减,返回成功/失败),避免并发问题;

-扣减成功后,异步将订单写入MQ(如RocketMQ),由下游服务处理订单生成和库存同步(最终一致);

-超卖防护:Redis库存设置为0时,直接拒绝后续请求;MySQL层面通过乐观锁(version字段)二次校验。

4.高可用:

-服务无状态化,横向扩容;

-Redis集群(主从+哨兵),避免单点故障;

-MQ分区存储,消息持久化(刷盘策略)。

关键指标验证:压测时模拟10万QPS,观察Redis响应时间(10ms)、MQ消息堆积情况(秒级消费)、页面超时率(1%)。

编程语言(Java)类

问题4:JVM中G1收集器如何实现跨代引用的高效处理?对比CMS有哪些改进?

解答思路:跨代引用指老年代对象引用新生代对象,GC时需扫描老年代以确定新生代存活对象。G1通过RememberedSet(RSet)优化此过程。

详细答案:

G1的RSet是每个Region的附加数据结构,记录其他Region中对象对本Region的引用。当发生新生代GC时,只需扫描RSet,无需全堆扫描。RSet的维护通过写屏障(WriteBarrier)实现:当对象引用被修改时(如o.f=newObj),若引用跨越Region,将记录到被引用对象所在Region的RSet中。

对比CMS的改进:

-CMS使用卡表(CardTable)标记老年代中的卡页(512字节)是否有跨代引用,扫描时需遍历整个卡表的脏卡页,精度粗(卡页级)

您可能关注的文档

文档评论(0)

ღ᭄ꦿ若西এ⁵²º᭄ + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档