2026年软件工程师面试宝典问题解答.docxVIP

  • 0
  • 0
  • 约8.73千字
  • 约 24页
  • 2026-01-21 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年软件工程师面试宝典:问题解答

一、编程语言与基础算法(5题,每题10分)

1.题目:

编写一个函数,实现二叉树的层序遍历(按深度优先遍历顺序输出每一层的节点值)。假设二叉树的节点定义如下:

python

classTreeNode:

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

self.val=val

self.left=left

self.right=right

请用Python实现该函数,并给出测试案例。

答案与解析:

python

fromcollectionsimportdeque

classTreeNode:

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

self.val=val

self.left=left

self.right=right

deflevel_order_traversal(root):

ifnotroot:

return[]

result=[]

queue=deque([root])

whilequeue:

level_size=len(queue)

current_level=[]

for_inrange(level_size):

node=queue.popleft()

current_level.append(node.val)

ifnode.left:

queue.append(node.left)

ifnode.right:

queue.append(node.right)

result.append(current_level)

returnresult

测试案例

if__name__==__main__:

构建一个示例二叉树:

1

/\

23

/\\

456

root=TreeNode(1)

root.left=TreeNode(2)

root.right=TreeNode(3)

root.left.left=TreeNode(4)

root.left.right=TreeNode(5)

root.right.right=TreeNode(6)

print(level_order_traversal(root))#输出:[[1],[2,3],[4,5,6]]

解析:

层序遍历通常使用广度优先搜索(BFS)实现,借助队列(`deque`)存储当前层的节点。每轮遍历当前层的所有节点,并将其子节点加入队列,直到队列为空。通过记录每一轮的节点数量,可以按层输出节点值。

2.题目:

给定一个无重复元素的数组`nums`和一个目标值`target`,编写函数返回`target`在数组中的所有索引(顺序输出)。例如:

python

nums=[5,7,7,9],target=7

应返回`[1,2]`。

答案与解析:

python

deffind_all_indices(nums,target):

result=[]

fori,numinenumerate(nums):

ifnum==target:

result.append(i)

returnresult

测试案例

print(find_all_indices([5,7,7,9],7))#输出:[1,2]

解析:

简单遍历数组,使用`enumerate`获取每个元素的索引,若元素等于`target`,则记录索引。时间复杂度为O(n),空间复杂度为O(k),其中k为返回索引的数量。

3.题目:

实现一个函数,检查一个字符串是否为有效的括号组合(仅考虑`()`、`[]`、`{}`)。

答案与解析:

python

defisValid(s):

stack=[]

mapping={):(,]:[,}:{}

forcharins:

ifcharinmapping.values():

stack.append(char)

elifcharinmapping:

ifnotstackorstack.pop()!=mapping[char]:

returnFalse

else:

returnFalse

returnnotstack

测试案例

print(isValid(()[]{}))#输出:True

print(isValid((]))#输出:False

解析:

使用栈结构处理括号匹配问题。遍历字符串,若为左括

文档评论(0)

1亿VIP精品文档

相关文档