2026年阿里巴巴技术岗笔试精_第1页
2026年阿里巴巴技术岗笔试精_第2页
2026年阿里巴巴技术岗笔试精_第3页
2026年阿里巴巴技术岗笔试精_第4页
2026年阿里巴巴技术岗笔试精_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

2026年阿里巴巴技术岗笔试精阿里巴巴2026年技术岗笔试题(测试方向)一、编程语言与算法(共5题,每题2分,合计10分)1.题目:给定一个链表,删除链表的倒数第n个节点,并返回删除后的链表。例如,输入链表为1->2->3->4->5,n=2,则删除后链表为1->2->3->5。要求:-链表节点定义如下:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=next-不能使用额外的存储空间,时间复杂度要求O(n)。2.题目:实现一个函数,判断一个字符串是否是有效的括号组合。例如:-输入:"()"→输出:True-输入:"()[]{}"→输出:True-输入:"([)]"→输出:False3.题目:给定一个数组,返回其中第三大的数。如果数组中少于三个不同的数,则返回最大的数。例如:-输入:[3,2,1,5,6,4]→输出:3-输入:[1,2]→输出:24.题目:实现一个简单的LRU(最近最少使用)缓存,支持get和put操作。LRU缓存容量为固定值,超出容量时需要删除最久未使用的页。5.题目:编写一个函数,将一个32位整数反转。例如:-输入:123→输出:321-输入:-123→输出:-321-输入:120→输出:21二、系统设计(共3题,每题5分,合计15分)1.题目:设计一个高并发的短链接生成系统。要求:-链接长度尽可能短(如tinyurl风格)。-支持高并发访问,可用性高。-需要考虑分布式场景下的唯一性校验。2.题目:设计一个实时日志收集系统,要求:-支持海量日志数据的实时传输和存储。-能够进行日志的快速检索和统计。-考虑容灾和水平扩展的场景。3.题目:设计一个秒杀系统,要求:-支持高并发请求,防止超卖。-需要考虑用户验证、库存扣减、订单生成等环节。-提供防作弊机制。三、数据库与分布式(共4题,每题4分,合计16分)1.题目:解释MySQL中的索引类型(B-Tree索引、哈希索引、全文索引),并说明适用场景。2.题目:为什么分布式数据库需要分片?分片有几种常见策略?(如范围分片、哈希分片)3.题目:Redis的RDB和AOF机制有什么区别?如何选择?4.题目:在分布式系统中,如何解决分布式锁的问题?说明Redis和ZooKeeper两种实现方式。四、网络与安全(共3题,每题5分,合计15分)1.题目:解释TCP三次握手和四次挥手的过程,并说明为什么需要四次挥手。2.题目:HTTPS协议是如何保证数据传输安全的?说明SSL/TLS握手过程的关键步骤。3.题目:什么是DDoS攻击?常见的防御措施有哪些?五、操作系统与Linux(共4题,每题4分,合计16分)1.题目:解释进程和线程的区别,以及多线程编程的常见问题(如死锁、活锁)。2.题目:Linux中,如何查看系统CPU和内存使用情况?请列举至少3个常用命令。3.题目:什么是虚拟内存?如何实现?4.题目:解释Linux中的IPC(进程间通信)机制,并说明管道(pipe)和信号量(semaphore)的区别。六、编程题(共3题,每题6分,合计18分)1.题目:编写一个函数,统计一个字符串中所有单词的出现次数,并按出现频率从高到低排序。例如:-输入:"helloworldhello"→输出:{"hello":2,"world":1}2.题目:实现一个二叉树的前序遍历和后序遍历的迭代版本。3.题目:给定一个数组,找出所有和为target的三个数的组合。例如:-输入:[2,7,11,15],target=9→输出:[[2,7,0]](假设数组从1开始编号)答案与解析一、编程语言与算法1.删除链表倒数第n个节点:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefremoveNthFromEnd(head:ListNode,n:int)->ListNode:dummy=ListNode(0)dummy.next=headfast=slow=dummyfor_inrange(n+1):fast=fast.nextwhilefast:fast=fast.nextslow=slow.nextslow.next=slow.next.nextreturndummy.next解析:-使用双指针法,fast先走n+1步,然后slow和fast同时走,当fast走到末尾时,slow指向倒数第n个节点的前一个。删除节点后返回dummy.next即可。2.判断有效括号:pythondefisValid(s:str)->bool:stack=[]mapping={')':'(','}':'{',']':'['}forcharins:ifcharinmapping:top=stack.pop()ifstackelse'#'ifmapping[char]!=top:returnFalseelse:stack.append(char)returnnotstack解析:-使用栈匹配括号,遍历字符串,遇到右括号时检查栈顶是否匹配,否则无效。最后栈为空则有效。3.第三大的数:pythondefthirdMax(nums:List[int])->int:first,second,third=float('-inf'),float('-inf'),float('-inf')fornuminnums:ifnum>first:first,second,third=num,first,secondeliffirst>num>second:second,third=num,secondelifsecond>num>third:third=numreturnthirdifthird!=float('-inf')elsefirst解析:-维护三个变量记录前三大的数,遍历数组更新。如果数组少于三个不同数,返回最大值。4.LRU缓存:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache=OrderedDict()defget(self,key:int)->int:ifkeynotinself.cache:return-1self.cache.move_to_end(key)returnself.cache[key]defput(self,key:int,value:int)->None:self.cache[key]=valueself.cache.move_to_end(key)iflen(self.cache)>self.capacity:self.cache.popitem(last=False)解析:-使用`OrderedDict`实现LRU,get时移动到末尾,put时插入并移动到末尾,超出容量时删除最早的项。5.整数反转:pythondefreverse(x:int)->int:INT_MAX,INT_MIN=231-1,-231res=0whilex:pop=x%10x//=10ifres>INT_MAX//10or(res==INT_MAX//10andpop>7):return0ifres<INT_MIN//10or(res==INT_MIN//10andpop<-8):return0res=res10+popreturnres解析:-逐位反转,注意越界检查。如果反转后超过32位整数范围,返回0。二、系统设计1.短链接生成系统:-方案:-使用62个字符(a-z、A-Z、0-9)的进制转换,如`/1r5f`。-前缀``统一域名,后缀为自增ID或哈希值。-使用Redis或分布式ID生成器(如Snowflake)保证唯一性。-高并发:-CDN缓存短链接,减少后端压力。-分布式缓存+数据库分片存储。2.实时日志收集系统:-方案:-使用Kafka/RocketMQ收集日志,高吞吐量。-HDFS存储原始日志,Elasticsearch/ClickHouse进行索引和查询。-容灾:-多副本存储,集群部署。-日志分段切分,不同节点处理不同分区。3.秒杀系统:-方案:-使用Redis分布式锁控制并发。-库存预减+事务保证原子性。-按用户手机号或ID去重。-防作弊:-限制请求频率。-检测用户行为(如模拟点击)。三、数据库与分布式1.索引类型:-B-Tree索引:-适用场景:范围查询(如`priceBETWEEN100AND200`)。-优点:支持排序和范围查询。-哈希索引:-适用场景:精确查询(如`id=100`)。-优点:查询效率高。-全文索引:-适用场景:文本搜索(如`LIKE'%hello%'`)。-优点:支持模糊匹配。2.分布式分片:-范围分片:-数据按范围划分(如按ID1-100分片)。-哈希分片:-使用哈希值映射到不同分片(如`hash(id)%3`)。3.Redis持久化:-RDB:-定期全量备份,空间占用小。-AOF:-记录每条写操作,故障恢复快。4.分布式锁:-Redis实现:-使用`SETNX`命令加锁,超时自动释放。-ZooKeeper实现:-使用临时顺序节点竞争锁。四、网络与安全1.TCP三次握手:-过程:1.Client发送SYN=1,seq=x→Server2.Server回复SYN=1,ACK=1,seq=y→Client3.Client回复ACK=1,seq=x+1→Server-目的:确认双方收发能力。2.HTTPS安全:-关键步骤:1.客户端发送ClientHello,包含SSL版本和加密套件。2.服务器响应ServerHello,选择加密算法并生成密钥。3.服务器发送证书和签名,客户端验证。4.双方使用密钥加密通信。3.DDoS防御:-措施:-边缘防护(如Cloudflare)。-IP黑白名单过滤。-流量清洗中心。五、操作系统与Linux1.进程与线程:-区别:-进程独立内存空间,线程共享。-线程切换开销小。-多线程问题:-死锁:死循环+资源互斥。-活锁:线程交替等待,资源未释放。2.Linux监控命令:-`top`:实时查看进程。-`free-h`:内存使用情况。-`vmstat`:CPU和IO统计。3.虚拟内存:-实现:-分页:将内存分成页,部分换出到硬盘。-分段:按逻辑单位分段,不连续分配。4.IPC机制:-管道(pipe):-半双工,父子进程。-信号量(semaphore):-全双工,多进程同步。六、编程题1.统计单词频率:pythonfromcollectionsimportCounterdefwordCount(s:str)->dict:returnCounter(s.split())2.二叉树遍历:-前序迭代:pythondefpreorderIterative(root):ifnotroot:return[]stack,res=[root],[]whilestack:node=stack.pop()res.append(node.val)ifnode.right:stack.append(node.right)ifnode.left:stack.append(node.left)returnres-后序迭代:pythondefpostorderIterative(root):ifnotroot:return[]stack,res=[root],[]whilestack:node=stack.pop()res.append(node.val)ifnode.left:stack.append(node.left)ifnode.right:stack.append(node.right)returnres[::-1]3.三数之和:pythondefthreeSum(nums:List[int])->List[List[int]]:nums.sort()res=[]foriinrange(len(nums)-2):ifi>0andnums[i]==nums[i-1]:continuel,r=i+1,

温馨提示

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

评论

0/150

提交评论