2026年软件工程师算法面试题库及刷题技巧含答案.docxVIP

  • 1
  • 0
  • 约8.47千字
  • 约 21页
  • 2026-02-18 发布于福建
  • 举报

2026年软件工程师算法面试题库及刷题技巧含答案.docx

第PAGE页共NUMPAGES页

2026年软件工程师算法面试题库及刷题技巧含答案

一、编程语言基础(5题,每题2分)

1.Java题:

编写一个Java方法,实现将一个字符串中的所有空格替换为“%20”。假设字符串有足够的空间存储替换后的结果。

答案:

java

publicStringreplaceSpaces(Strings){

char[]arr=s.toCharArray();

intspaceCount=0;

for(charc:arr){

if(c==)spaceCount++;

}

char[]result=newchar[arr.length+2spaceCount];

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

}

2.Python题:

编写一个Python函数,判断一个整数是否为回文数(正序和倒序相同)。

答案:

python

defisPalindrome(x):

ifx0:

returnFalse

original=x

reversed_num=0

whilex0:

reversed_num=reversed_num10+x%10

x=x//10

returnoriginal==reversed_num

3.C++题:

实现一个C++函数,计算一个链表的中间节点。如果链表长度为偶数,返回上半个链表的中间节点。

答案:

cpp

ListNodemiddleNode(ListNodehead){

ListNodeslow=head;

ListNodefast=head;

while(fast!=nullptrfast-next!=nullptr){

slow=slow-next;

fast=fast-next-next;

}

returnslow;

}

4.JavaScript题:

编写一个JavaScript函数,找出数组中所有唯一的数字(出现一次的数字)。

答案:

javascript

functionfindUniques(arr){

constfreq={};

arr.forEach(num=freq[num]=(freq[num]||0)+1);

returnarr.filter(num=freq[num]===1);

}

5.C#题:

实现一个C#方法,将一个罗马数字转换为整数。

答案:

csharp

publicintRomanToInt(strings){

Dictionarychar,introman=newDictionarychar,int{

{I,1},{V,5},{X,10},{L,50},

{C,100},{D,500},{M,1000}

};

intresult=0;

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

if(is.Length-1roman[s[i]]roman[s[i+1]]){

result-=roman[s[i]];

}else{

result+=roman[s[i]];

}

}

returnresult;

}

二、数据结构(5题,每题3分)

1.数组题:

给定一个整数数组,返回数组中第三大的数。如果数组中少于三个不同的数,返回最大的数。

答案:

python

defthirdMax(nums):

first,second,third=float(-inf),float(-inf),float(-inf)

fornuminnums:

ifnumfirst:

first,second,third=num,first,second

eliffirstnumsecond:

second,third=num,second

elifsecondnumthird:

third=num

returnthirdifthird!=float(-inf)elsefirst

2.链表题:

删除链表中的倒数第N个节点,并返回新的头节点。

答案:

python

文档评论(0)

1亿VIP精品文档

相关文档