- 0
- 0
- 约4.18千字
- 约 13页
- 2026-01-27 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年阿里巴面试题集及答案解析
一、编程能力测试(共5题,每题10分)
题目1(Java基础)
编写一个Java方法,实现将一个字符串中的所有空格替换为“%20”。要求不使用任何现成的字符串替换函数,时间复杂度为O(n)。
答案解析
java
publicclassStringReplace{
publicstaticStringreplaceSpaces(Strings){
if(s==null)returnnull;
char[]arr=s.toCharArray();
intspaceCount=0;
for(charc:arr){
if(c==)spaceCount++;
}
char[]result=newchar[arr.length+spaceCount2];
intj=0;
for(inti=0;iarr.length;i++){
if(arr[i]==){
result[j++]=%;
result[j++]=2;
result[j++]=0;
}else{
result[j++]=arr[i];
}
}
returnnewString(result,0,j);
}
publicstaticvoidmain(String[]args){
System.out.println(replaceSpaces(HelloWorld));//输出:Hello%20World
}
}
解析:
1.遍历原字符串统计空格数量,确定新字符串长度。
2.从后往前填充新数组,避免覆盖未处理部分。
3.时间复杂度O(n),空间复杂度O(n)。
题目2(Python算法)
给定一个包含重复元素的数组,返回所有不重复的全排列。例如,输入`[1,1,2]`,输出`[[1,1,2],[1,2,1],[2,1,1]]`。
答案解析
python
fromitertoolsimportpermutations
defpermute_unique(nums):
returnlist(set(permutations(nums)))
示例
print(permute_unique([1,1,2]))#输出:[(1,1,2),(1,2,1),(2,1,1)]
解析:
1.`itertools.permutations`生成所有排列,`set`去重。
2.注意Python中元组是不可变对象,适合此场景。
题目3(数据库SQL)
假设有表`Orders`(`order_id,customer_id,order_date`)和`Customers`(`customer_id,name,city`),
编写SQL查询:
-查询每个城市的客户数量,并按数量降序排列。
-如果数量相同,则按城市名称升序排列。
答案解析
sql
SELECTcity,COUNT(DISTINCTcustomer_id)AScustomer_count
FROMCustomers
GROUPBYcity
ORDERBYcustomer_countDESC,cityASC;
解析:
1.`DISTINCT`确保客户不重复计数。
2.`GROUPBY`按城市分组,`ORDERBY`自定义排序规则。
题目4(JavaScript异步编程)
使用`async/await`编写一个函数,实现以下逻辑:
-调用`fetchData()`返回Promise,等待其结果。
-处理结果后,调用`updateUI()`更新界面。
-任何步骤出错需捕获并打印错误。
答案解析
javascript
asyncfunctionprocessData(){
try{
constdata=awaitfetchData();
awaitupdateUI(data);
console.log(UIupdatedsuccessfully);
}catch(error){
console.error(Error:,error);
}
}
//示例用例
functionfetchData(){
returnnewPromise((resolve)={
setTimeout(()=resolve(data),1000);
});
}
functionupdateUI(data){
console.log(Datadisplayed:,data);
}
解析:
1.`
原创力文档

文档评论(0)