2026年阿里巴程序员面试指南编程题目及答案详解.docxVIP

  • 0
  • 0
  • 约6.21千字
  • 约 20页
  • 2026-01-20 发布于福建
  • 举报

2026年阿里巴程序员面试指南编程题目及答案详解.docx

第PAGE页共NUMPAGES页

2026年阿里巴程序员面试指南:编程题目及答案详解

一、算法设计题(共3题,每题20分)

1.题目:

输入一个整数数组,返回所有和为给定目标值的三个整数的组合。

要求:

-不能重复使用同一个元素。

-不能有重复的三元组。

示例:

输入:`nums=[2,5,3,7,8,6]`,目标值`target=16`

输出:`[[2,5,9],[3,5,8],[3,7,6]]`

2.题目:

给定一个包含重复元素的数组,返回所有不重复的子集。

要求:

-子集的顺序不重要。

-不能有重复的子集。

示例:

输入:`nums=[1,2,2]`

输出:`[[],[1],[1,2],[1,2,2],[2],[2,2]]`

3.题目:

实现一个LRU(最近最少使用)缓存。

要求:

-支持get和put操作。

-get操作返回键对应的值,如果不存在返回-1。

-put操作插入或更新键值对,如果缓存已满,则删除最久未使用的元素。

示例:

LRU=LRUCache(2)

LRU.put(1,1)

LRU.put(2,2)

LRU.get(1)//返回1

LRU.put(3,3)//去除键2

LRU.get(2)//返回-1(未找到)

二、系统设计题(共2题,每题25分)

1.题目:

设计一个短链接服务(如tinyURL)。

要求:

-输入任意长URL,返回短URL。

-支持从短URL反查原URL。

-高并发、高可用。

示例:

输入:`longURL=/very/long/path/to/resource`

输出:`短URL(如/abc123)`

2.题目:

设计一个实时计数器,支持以下功能:

-支持同时处理大量并发请求。

-每秒返回当前活跃用户数。

-支持历史数据统计(如过去1小时内的总访问量)。

要求:

-响应时间低(毫秒级)。

-数据准确。

三、编程实现题(共4题,每题15分)

1.题目:

实现一个字符串的URL解码功能。

要求:

-支持对`%XX`的解码(如`%20`解码为空格)。

-忽略非法编码(如`%ZZ`)。

示例:

输入:`Hello%20World%25`

输出:`HelloWorld%`

2.题目:

实现一个二叉树的层序遍历(按从上到下、从左到右的顺序)。

示例:

输入:

3

/\

920

/\

157

输出:`[3,9,20,15,7]`

3.题目:

实现一个简单的LRU缓存(使用链表实现)。

要求:

-使用双向链表存储数据。

-支持get和put操作,时间复杂度为O(1)。

示例:

LRU=LRUCache(2)

LRU.put(1,1)

LRU.put(2,2)

LRU.get(1)//返回1

LRU.put(3,3)//去除键2

LRU.get(2)//返回-1(未找到)

4.题目:

实现一个简单的LRU缓存(使用哈希表+双向链表实现)。

要求:

-使用哈希表记录键值对,快速查找。

-使用双向链表维护访问顺序。

-支持get和put操作,时间复杂度为O(1)。

答案及解析

一、算法设计题

1.三个数的组合(20分)

答案:

python

defthreeSum(nums,target):

nums.sort()

n=len(nums)

res=[]

foriinrange(n):

ifi0andnums[i]==nums[i-1]:

continue

left,right=i+1,n-1

whileleftright:

total=nums[i]+nums[left]+nums[right]

iftotal==target:

res.append([nums[i],nums[left],nums[right]])

whileleftrightandnums[left]==nums[left+1]:

left+=1

whileleftrightandnums[right]==nums[right-1]:

right-=1

left+=1

right-=1

eliftotaltarget:

left+=1

else:

right-=1

returnres

解析:

1.先对数组排序,方便跳过重复元素。

2.使用固定指针+双指针法:

-固定一个数,然后用双指针在剩余部分查找另外两个数。

-如果和等于目标值,记录并跳过重复元素。

-如果和小于目标值,左指针右移;否则

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档