2026年阿里巴巴集团校园招聘技术类笔试题及答案_第1页
2026年阿里巴巴集团校园招聘技术类笔试题及答案_第2页
2026年阿里巴巴集团校园招聘技术类笔试题及答案_第3页
2026年阿里巴巴集团校园招聘技术类笔试题及答案_第4页
2026年阿里巴巴集团校园招聘技术类笔试题及答案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年阿里巴巴集团校园招聘技术类笔试题及答案一、编程基础(5题,每题6分,共30分)考察内容:数据结构、算法、编程语言基础(Java/Python)1.题目:请用Java或Python实现一个函数,输入一个字符串,返回该字符串中所有唯一字符的集合(不区分大小写)。例如:输入`"HelloWorld"`,输出`{"h","e","l","o","w","r","d"}`。答案:javaimportjava.util.HashSet;importjava.util.Set;publicclassUniqueChars{publicstaticSet<Character>uniqueChars(Stringinput){Set<Character>unique=newHashSet<>();if(input==null)returnunique;for(charc:input.toLowerCase().toCharArray()){unique.add(c);}returnunique;}publicstaticvoidmain(String[]args){Stringinput="HelloWorld";System.out.println(uniqueChars(input));//输出:[h,e,l,o,w,r,d]}}解析:-使用`HashSet`存储唯一字符,自动去重。-将输入字符串转为小写,确保不区分大小写。-遍历每个字符并加入集合。2.题目:给定一个链表,删除链表中的倒数第`n`个节点,并返回新的链表头。例如:输入链表`1->2->3->4->5`,`n=2`,输出`1->2->3->5`。答案:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefremoveNthFromEnd(head,n):dummy=ListNode(0)dummy.next=headslow=fast=dummyfor_inrange(n+1):fast=fast.nextwhilefast:slow=slow.nextfast=fast.nextslow.next=slow.next.nextreturndummy.next解析:-使用双指针法,`fast`先走`n+1`步,确保删除时`slow`停在目标节点前。-当`fast`到达末尾时,`slow`的`next`即为待删除节点。3.题目:实现快速排序算法,输入一个整数数组,返回排序后的数组。答案:javapublicclassQuickSort{publicstaticint[]quickSort(int[]arr){if(arr==null||arr.length<=1)returnarr;quickSort(arr,0,arr.length-1);returnarr;}privatestaticvoidquickSort(int[]arr,intleft,intright){if(left>=right)return;intpivot=partition(arr,left,right);quickSort(arr,left,pivot-1);quickSort(arr,pivot+1,right);}privatestaticintpartition(int[]arr,intleft,intright){intpivot=arr[right];inti=left-1;for(intj=left;j<right;j++){if(arr[j]<=pivot){i++;swap(arr,i,j);}}swap(arr,i+1,right);returni+1;}privatestaticvoidswap(int[]arr,inti,intj){inttemp=arr[i];arr[i]=arr[j];arr[j]=temp;}}解析:-快速排序核心是分治思想:选择基准值(pivot),将数组分为小于和大于基准的两部分。-递归排序左右子数组。4.题目:用Python实现一个函数,输入一个二叉树,返回其最大深度。例如:输入`[3,9,20,null,null,15,7]`(层序遍历表示),输出`3`。答案:pythonfromcollectionsimportdequeclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefmaxDepth(root):ifnotroot:return0queue=deque([root])depth=0whilequeue:level_size=len(queue)for_inrange(level_size):node=queue.popleft()ifnode.left:queue.append(node.left)ifnode.right:queue.append(node.right)depth+=1returndepth解析:-使用广度优先搜索(BFS)层序遍历,每层深度加1。5.题目:编写一个函数,输入一个字符串,判断其是否为有效的括号组合(如`"()"`、`"()[]{}"`)。答案:javaimportjava.util.Stack;publicclassValidParentheses{publicstaticbooleanisValid(Strings){Stack<Character>stack=newStack<>();for(charc:s.toCharArray()){if(c=='('||c=='{'||c=='['){stack.push(c);}else{if(stack.isEmpty())returnfalse;chartop=stack.pop();if((c==')'&&top!='(')||(c=='}'&&top!='{')||(c==']'&&top!='[')){returnfalse;}}}returnstack.isEmpty();}}解析:-使用栈匹配括号:左括号入栈,右括号与栈顶匹配。-若栈为空或匹配失败,则无效。二、系统设计(2题,每题15分,共30分)考察内容:分布式系统、数据库、缓存、负载均衡6.题目:设计一个高并发的短链接系统(如`tinyurl`)。要求:(1)输入长链接,返回短链接;(2)短链接可快速访问对应长链接;(3)支持高并发访问。答案:方案:1.短链接生成:-使用哈希算法(如SHA-256)对长链接生成固定长度的短码(如5位字母数字组合)。-为防冲突,可增加冗余码或重试机制。2.存储:-使用Redis(哈希表)缓存短码与长链接的映射,支持高并发读写。-永久存储使用MySQL/MongoDB,按短码索引。3.高并发优化:-负载均衡分发请求到多台缓存服务器。-长链接访问时,先查缓存,未命中则查数据库。解析:-哈希算法保证短码唯一性,Redis缓存提升访问速度。-分布式架构应对高并发,数据库异步更新避免阻塞。7.题目:设计一个微博系统中的“关注-粉丝”关系模块,要求:(1)支持实时关注/取关;(2)支持按用户ID查询粉丝列表;(3)支持定时任务清理过期关系。答案:方案:1.数据存储:-使用Redis哈希表存储用户关注关系(`Follower:userId:followeeId`)。-使用Redis有序集合(ZSet)存储粉丝列表(`Following:userId:score=followerId`),score可按时间排序。2.实时关注:-关注操作写入Redis哈希表和粉丝列表(ZSet)。-取关则删除对应记录。3.定时清理:-使用CronJob定期扫描过期关系并删除。4.性能优化:-粉丝列表查询时使用`ZRANGE`按score排序,限制返回数量。解析:-Redis支持高并发写入,ZSet天然支持有序查询。-垃圾回收机制避免数据冗余。三、数据库与SQL(3题,每题10分,共30分)考察内容:SQL查询、索引、事务8.题目:给定表`Orders`(`id,user_id,product_id,amount,order_time`),写SQL查询:(1)统计每个用户的总消费金额;(2)返回消费金额最高的前10名用户。答案:sql--(1)SELECTuser_id,SUM(amount)AStotal_amountFROMOrdersGROUPBYuser_id;--(2)SELECTuser_id,SUM(amount)AStotal_amountFROMOrdersGROUPBYuser_idORDERBYtotal_amountDESCLIMIT10;解析:-`GROUPBY`聚合用户消费,`SUM`计算总金额。-排序+`LIMIT`获取Top10。9.题目:表`Employees`(`id,name,department,salary,hire_date`),写SQL查询:(1)查询2023年入职且月薪高于平均值的员工;(2)返回部门工资最高的前3个部门。答案:sql--(1)SELECTid,name,department,salaryFROMEmployeesWHEREYEAR(hire_date)=2023ANDsalary>(SELECTAVG(salary)FROMEmployees);--(2)SELECTdepartment,AVG(salary)ASavg_salaryFROMEmployeesGROUPBYdepartmentORDERBYavg_salaryDESCLIMIT3;解析:-子查询计算平均值,外层筛选条件匹配。-`GROUPBY`+排序+`LIMIT`获取部门Top3。10.题目:解释索引的作用,并说明在`Orders`表中如何为`user_id`和`order_time`创建复合索引?答案:索引作用:-加速查询速度(避免全表扫描);-保证数据唯一性(主键索引);-支持排序和分组(覆盖索引)。复合索引创建:sqlCREATEINDEXidx_user_timeONOrders(user_id,order_time);解析:-复合索引按列顺序存储,查询时需匹配顺序。-优先按`user_id`筛选,再按`order_time`排序。四、综合应用(1题,20分)考察内容:分布式架构、缓存策略11.题目:设计一个高流量的商品详情页系统,要求:(1)支持高并发访问;(2)优化缓存策略,降低后端压力;(3)说明容灾方案。答案:方案:1.高并发架构:-前端Nginx负载均衡分发请求到多台应用服务器;-应用服务器通过API网关(如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论