软件工程师面试题库及答案.docxVIP

  • 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)

1亿VIP精品文档

相关文档