- 2
- 0
- 约1.1万字
- 约 31页
- 2026-01-30 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年软件工程师面试题库及答案
一、编程语言基础(5题,每题10分)
题目1(Java)
java
请编写一个Java方法,实现将一个字符串中的所有空格替换为%20。要求:不使用内置的String替换方法,时间复杂度为O(n)。
题目2(Python)
python
请实现一个函数,输入一个正整数n,返回其二进制表示中1的个数。例如:输入7,返回3(因为7的二进制是111)。
题目3(C++)
cpp
请编写一个C++函数,实现判断一个整数是否是2的幂次方。例如:1(2^0),2(2^1),4(2^2)等都是2的幂次方。
题目4(JavaScript)
javascript
请实现一个JavaScript函数,接受一个数组,返回一个新数组,其中包含原数组中所有不重复的元素。要求:不使用Set等内置方法。
题目5(Go)
go
请编写一个Go函数,实现快速排序算法。要求:原地排序,不使用额外的数组空间。
答案与解析
答案1(Java)
java
publicclassReplaceSpaces{
publicstaticStringreplaceSpaces(Strings){
if(s==null)returnnull;
intspaceCount=0;
//首先统计空格数量
for(charc:s.toCharArray()){
if(c==)spaceCount++;
}
char[]result=newchar[s.length()+spaceCount2];
intj=0;
for(inti=0;is.length();i++){
charc=s.charAt(i);
if(c==){
result[j++]=%;
result[j++]=2;
result[j++]=0;
}else{
result[j++]=c;
}
}
returnnewString(result,0,j);
}
publicstaticvoidmain(String[]args){
System.out.println(replaceSpaces(HelloWorldJava));//Hello%20World%20Java
}
}
解析:该方法首先遍历字符串统计空格数量,然后创建足够大的字符数组。再次遍历字符串时,空格替换为%20,其他字符直接复制。时间复杂度O(n),空间复杂度O(n)。
答案2(Python)
python
defcount_bits(n):
count=0
whilen:
count+=n1
n=1
returncount
测试
print(count_bits(7))#输出3
解析:使用位运算实现。每次判断最低位是否为1,然后右移一位,直到n为0。Python中整数没有位数限制,但此方法适用于任何二进制正整数。
答案3(C++)
cpp
includeiostream
usingnamespacestd;
boolisPowerOfTwo(intn){
if(n=0)returnfalse;
//2的幂次方在二进制中只有一个1
//n(n-1)可以消除最低位的1
return(n(n-1))==0;
}
intmain(){
coutboolalpha;
coutisPowerOfTwo(1)endl;//true
coutisPowerOfTwo(2)endl;//true
coutisPowerOfTwo(3)endl;//false
return0;
}
解析:利用位运算特性。任何2的幂次方减1都会使所有低位变为1,再与原数与运算结果为0。
答案4(JavaScript)
javascript
functionremoveDuplicates(arr){
constresult=[];
constseen={};
for(constitemofarr){
if(!seen[item]){
result.push(item);
seen[item]=true;
}
}
returnresult;
}
//测试
console.log(removeDuplicates([1,2,3,2,1]));//[1,2,3]
解析:使用对象作为哈希表记录已见过的元素。不使用Set是因为题目要求不使用内置方法。
答案5(Go)
go
packagemain
imp
原创力文档

文档评论(0)