2026年软件工程师IT行业面试题及答案.docxVIP

  • 1
  • 0
  • 约6.47千字
  • 约 20页
  • 2026-02-09 发布于福建
  • 举报

2026年软件工程师IT行业面试题及答案.docx

第PAGE页共NUMPAGES页

2026年软件工程师IT行业面试题及答案

一、编程题(共5题,每题20分,总分100分)

1.编程题(Java)——链表反转(20分)

题目:

请编写一个Java方法,实现单链表的反转。链表节点定义如下:

java

classListNode{

intval;

ListNodenext;

ListNode(intx){val=x;}

}

要求:

-时间复杂度O(n),空间复杂度O(1)。

-示例输入:`1-2-3-4-5`,输出:`5-4-3-2-1`。

答案:

java

classSolution{

publicListNodereverseList(ListNodehead){

ListNodeprev=null;

ListNodecurrent=head;

while(current!=null){

ListNodenextTemp=current.next;//保存下一个节点

current.next=prev;//反转指针

prev=current;//移动prev和current

current=nextTemp;

}

returnprev;//新的头节点

}

}

解析:

-使用三个指针`prev`、`current`和`nextTemp`实现反转。

-逐步将当前节点的`next`指向`prev`,完成反转。

-最终`prev`会成为新的头节点。

2.编程题(Python)——二叉树最大深度(20分)

题目:

请编写一个Python函数,计算二叉树的最大深度。二叉树节点定义如下:

python

classTreeNode:

def__init__(self,val=0,left=None,right=None):

self.val=val

self.left=left

self.right=right

要求:

-使用递归或迭代方法。

-示例输入:`[3,9,20,null,null,15,7]`(层序遍历),输出:`3`(深度为3)。

答案:

python

classSolution:

defmaxDepth(self,root:TreeNode)-int:

ifnotroot:

return0

left_depth=self.maxDepth(root.left)

right_depth=self.maxDepth(root.right)

returnmax(left_depth,right_depth)+1

解析:

-递归计算左子树和右子树的最大深度,取较大值加1。

-空节点深度为0。

3.编程题(JavaScript)——数组合并与去重(20分)

题目:

给定两个数组`arr1`和`arr2`,请合并这两个数组并去除重复元素,按升序排列。

示例输入:`arr1=[1,3,5]`,`arr2=[2,3,4]`,输出:`[1,2,3,4,5]`。

答案:

javascript

functionmergeAndUnique(arr1,arr2){

returnArray.from(newSet([...arr1,...arr2])).sort((a,b)=a-b);

}

解析:

-使用扩展运算符`...`合并数组,然后用`Set`去重。

-最后用`sort`排序。

4.编程题(C#)——堆盘子(20分)

题目:

堆盘子问题:给定一个正整数`n`,表示堆叠的盘子数量。每次可以移动最上面的`k`个盘子,问最少需要多少次移动才能将所有盘子移动到另一个位置。

示例输入:`n=3`,输出:`7`(移动步骤:3,2,1,2,3,1,2,3)。

答案:

csharp

publicclassSolution{

publicintMinMoves(intn){

intsteps=0;

while(n0){

steps+=(1(n-1))-1;//2^(n-1)-1

n--;

}

returnsteps;

}

}

解析:

-使用递推公式:`steps+=2^(n-1)-1`,逐步累加。

-最终结果为所有子问题的和。

5.编程题(Go)——字符串压缩(20分)

题目:

实现一个字符串压缩算法,将连续的相同字符合并并记录出现次数。例如:

输入:`aabcccccaaa`,输出:`a2b1

文档评论(0)

1亿VIP精品文档

相关文档