软件工程师面试题目与答案.docxVIP

  • 0
  • 0
  • 约7.46千字
  • 约 23页
  • 2026-02-13 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年软件工程师面试题目与答案

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

1.题目:

请用Python实现一个函数,接收一个列表,返回列表中所有奇数元素的和。例如,输入`[1,2,3,4,5]`,输出`9`。

答案:

python

defsum_of_odds(lst):

returnsum(xforxinlstifx%2!=0)

解析:

使用列表推导式筛选奇数并求和,时间复杂度为O(n),空间复杂度为O(1)。

2.题目:

请用Java实现一个方法,接收一个整数,返回该整数的二进制表示中`1`的个数。例如,输入`9`(二进制`1001`),输出`2`。

答案:

java

publicstaticintcountOnes(intnum){

intcount=0;

while(num!=0){

count+=num1;

num=1;

}

returncount;

}

解析:

通过位运算逐位判断`1`的个数,时间复杂度为O(logn)。

3.题目:

请用C++实现一个函数,接收一个字符串,返回该字符串的子串数量(不重复)。例如,输入`abc`,输出`6`(包括``,`a`,`b`,`c`,`ab`,`bc`)。

答案:

cpp

includestring

includeunordered_set

usingnamespacestd;

intcount_substrings(conststrings){

unordered_setstringsubstrs;

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

stringtemp=;

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

temp+=s[j];

substrs.insert(temp);

}

}

returnsubstrs.size();

}

解析:

使用双重循环枚举所有子串并存储在集合中避免重复,时间复杂度为O(n2),空间复杂度为O(n2)。

4.题目:

请用JavaScript实现一个函数,接收一个对象,返回该对象中所有键的排序数组。例如,输入`{b:2,a:1,c:3}`,输出`[a,b,c]`。

答案:

javascript

functionsortKeys(obj){

returnObject.keys(obj).sort();

}

解析:

使用`Object.keys`获取键数组并排序,时间复杂度为O(nlogn)。

5.题目:

请用Go实现一个函数,接收一个切片,返回该切片的中位数。例如,输入`[3,1,2]`,输出`2`。

答案:

go

packagemain

import(

sort

)

funcmedian(slice[]int)int{

sort.Ints(slice)

n:=len(slice)

ifn%2==1{

returnslice[n/2]

}

return(slice[n/2-1]+slice[n/2])/2

}

解析:

先排序再计算中位数,时间复杂度为O(nlogn)。

二、数据结构与算法(5题,每题8分)

1.题目:

请用Python实现快速排序算法。

答案:

python

defquicksort(arr):

iflen(arr)=1:

returnarr

pivot=arr[len(arr)//2]

left=[xforxinarrifxpivot]

middle=[xforxinarrifx==pivot]

right=[xforxinarrifxpivot]

returnquicksort(left)+middle+quicksort(right)

解析:

选择中间元素作为基准,递归对左右子数组排序,平均时间复杂度为O(nlogn)。

2.题目:

请用Java实现二叉树的中序遍历(非递归方式)。

答案:

java

publicclassTreeNode{

intval;

TreeNodeleft;

TreeNoderight;

TreeNode(intx){val=x;}

}

publicListIntegerinorderTraversal(TreeNoderoot){

ListIntegerres=newArrayList();

StackTreeNodestack=newStack();

Tre

文档评论(0)

1亿VIP精品文档

相关文档