- 0
- 0
- 约9.92千字
- 约 30页
- 2026-02-09 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年软件工程师面试技巧与问题解析
一、编程能力测试(10题,每题10分)
1.题目:
实现一个函数,输入一个正整数`n`,返回一个列表,其中包含从`1`到`n`的所有数字,但如果是3的倍数则返回Fizz,如果是5的倍数则返回Buzz,如果是3和5的倍数则返回FizzBuzz。
答案:
python
deffizz_buzz(n):
result=[]
foriinrange(1,n+1):
ifi%15==0:
result.append(FizzBuzz)
elifi%3==0:
result.append(Fizz)
elifi%5==0:
result.append(Buzz)
else:
result.append(i)
returnresult
解析:
此题考察基础循环和条件判断能力。关键在于优先判断3和5的公倍数(即15的倍数),避免重复判断。代码简洁明了,符合Python风格。
2.题目:
给定一个字符串`s`,返回`s`中唯一字符的最长子串的长度。例如,输入abcabcbb,输出abcbb,长度为3。
答案:
python
deflength_of_longest_unique_substring(s):
char_set=set()
left=0
max_len=0
forrightinrange(len(s)):
whiles[right]inchar_set:
char_set.remove(s[left])
left+=1
char_set.add(s[right])
max_len=max(max_len,right-left+1)
returnmax_len
解析:
滑动窗口技术是解决此类问题的常用方法。通过双指针`left`和`right`维护当前子串,用集合`char_set`记录字符,实现O(n)时间复杂度。
3.题目:
实现快速排序算法,输入一个无序数组,返回排序后的数组。
答案:
python
defquick_sort(arr):
iflen(arr)=1:
returnarr
pivot=arr[len(arr)//2]
left=[xforxinarrifxpivot]
middle=[xforxinarrifx==pivot]
right=[xforxinarrifxpivot]
returnquick_sort(left)+middle+quick_sort(right)
解析:
快速排序是分治算法的经典应用。通过选择基准值`pivot`,将数组分为小于、等于、大于三部分,递归排序。时间复杂度平均为O(nlogn)。
4.题目:
实现二叉树的深度优先遍历(前序、中序、后序),输入树的根节点,返回遍历结果列表。
答案:
python
定义二叉树节点
classTreeNode:
def__init__(self,val=0,left=None,right=None):
self.val=val
self.left=left
self.right=right
前序遍历
defpreorder(root):
ifnotroot:
return[]
return[root.val]+preorder(root.left)+preorder(root.right)
中序遍历
definorder(root):
ifnotroot:
return[]
returninorder(root.left)+[root.val]+inorder(root.right)
后序遍历
defpostorder(root):
ifnotroot:
return[]
returnpostorder(root.left)+postorder(root.right)+[root.val]
解析:
深度优先遍历是树的基本操作。前序(根-左-右)、中序(左-根-右)、后序(左-右-根)的顺序不同,需注意递归的调用顺序。
5.题目:
实现一个LRU(最近最少使用)缓存,支持`get`和`put`操作。输入一个容量`capacity`,返回缓存的操作结果。
答案:
python
classLRUCache:
def__init__(self,capacity:int):
self.cache={}
self.capacity=capacity
self.order=[]
def
原创力文档

文档评论(0)