阿里巴IT岗位面试问题及答案.docxVIP

  • 0
  • 0
  • 约5.58千字
  • 约 16页
  • 2026-02-10 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年阿里巴IT岗位面试问题及答案

一、编程基础题(共3题,每题10分)

1.题目:

请用Python实现一个函数,输入一个正整数n,返回其阶乘值。要求不使用递归,并考虑大数处理(如n=1000)。

答案:

python

deffactorial(n):

ifn==0:

return1

result=1

foriinrange(1,n+1):

result=i

returnresult

示例:n=5→120

print(factorial(5))

解析:

-阶乘计算可通过循环实现,避免递归栈溢出问题。

-大数处理需注意Python内置的`int`类型可自动处理大数,但需优化内存效率(如使用`math.factorial`)。

2.题目:

请用Java实现一个方法,输入一个字符串,返回该字符串的所有子串(不重复)。

答案:

java

importjava.util.HashSet;

importjava.util.Set;

publicclassSubstring{

publicstaticSetStringallSubstrings(Strings){

SetStringset=newHashSet();

for(inti=0;is.length();i++){

for(intj=i+1;j=s.length();j++){

set.add(s.substring(i,j));

}

}

returnset;

}

publicstaticvoidmain(String[]args){

System.out.println(allSubstrings(abc));//[a,b,c,ab,bc,abc]

}

}

解析:

-子串生成通过两层循环实现,外层固定起始位置,内层遍历结束位置。

-使用`HashSet`去重,避免重复子串。

3.题目:

请用C++实现快速排序算法,并分析其时间复杂度。

答案:

cpp

includeiostream

includevector

voidquickSort(std::vectorintarr,intleft,intright){

if(left=right)return;

intpivot=arr[left+(right-left)/2];

inti=left,j=right;

while(i=j){

while(arr[i]pivot)i++;

while(arr[j]pivot)j--;

if(i=j){

std::swap(arr[i],arr[j]);

i++,j--;

}

}

quickSort(arr,left,j);

quickSort(arr,i,right);

}

intmain(){

std::vectorintarr={3,1,4,1,5};

quickSort(arr,0,arr.size()-1);

for(autox:arr)std::coutx;

return0;

}

解析:

-快速排序核心是分治思想,时间复杂度平均O(nlogn),最坏O(n2)。

-实现中通过`pivot`分区,递归排序左右子数组。

二、算法设计题(共3题,每题15分)

1.题目:

阿里云服务器负载均衡场景下,请设计一个算法,动态分配流量到后端服务器,要求高可用且响应时间最短。

答案:

python

classLoadBalancer:

def__init__(self):

self.servers=[]

self.weights={}

defadd_server(self,server_id,weight=1):

self.servers.append(server_id)

self.weights[server_id]=weight

defget_server(self):

total_weight=sum(self.weights.values())

random_weight=random.randint(1,total_weight)

current=0

forserverinself.servers:

current+=self.weights[server]

ifcurrent=random_weight:

returnserver

returnNone

示例

lb=LoadB

文档评论(0)

1亿VIP精品文档

相关文档