- 0
- 0
- 约5.66千字
- 约 18页
- 2026-01-19 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年软件工程师面试宝典:答案与解析
一、编程基础(5题,每题2分,共10分)
背景:考察候选人数据结构与算法的基础知识,重点关注算法效率和代码实现能力。
1.题目:
给定一个整数数组,返回数组中重复次数最多的元素。如果存在多个元素重复次数相同且最多,返回其中任意一个。
答案:
python
defmost_frequent_element(nums):
frequency={}
fornuminnums:
ifnuminfrequency:
frequency[num]+=1
else:
frequency[num]=1
max_freq=0
result=None
fornum,freqinfrequency.items():
iffreqmax_freq:
max_freq=freq
result=num
returnresult
解析:
-使用字典记录每个数字的出现次数,时间复杂度为O(n),空间复杂度为O(n)。
-遍历字典找到最大频率的数字,确保效率。
-注意边界情况:空数组返回None,所有元素唯一返回任意一个。
2.题目:
实现一个函数,判断一个字符串是否为“有效括号”字符串,例如输入`()[]{}`返回`True`,输入`([)]`返回`False`。
答案:
python
defisValid(s):
stack=[]
mapping={):(,]:[,}:{}
forcharins:
ifcharinmapping:
top_element=stack.pop()ifstackelse#
ifmapping[char]!=top_element:
returnFalse
else:
stack.append(char)
returnnotstack
解析:
-使用栈结构,遇到右括号时检查栈顶是否匹配。
-时间复杂度为O(n),空间复杂度为O(n)。
-边界情况:空字符串返回`True`,非配对括号返回`False`。
3.题目:
给定一个链表,反转链表并返回反转后的头节点。
答案:
python
classListNode:
def__init__(self,val=0,next=None):
self.val=val
self.next=next
defreverseList(head):
prev=None
current=head
whilecurrent:
next_node=current.next
current.next=prev
prev=current
current=next_node
returnprev
解析:
-使用三指针法(prev,current,next_node)反转链表。
-时间复杂度为O(n),空间复杂度为O(1)。
-注意链表为空或只有一个节点时的情况。
4.题目:
实现快速排序算法,对任意整数数组进行排序。
答案:
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),最坏为O(n2)。
5.题目:
设计一个算法,找出无重复字符的最长子串长度。例如输入`abcabcbb`,返回`3`(abc)。
答案:
python
deflengthOfLongestSubstring(s):
char_set=set()
left=0
max_length=0
forrightinrange(len(s)):
whiles[right]inchar_set:
char_set.remove(s[left])
left+=1
char_set.add(s[right])
max_length=max(max_length,right-left+1)
returnmax_length
解析:
-使
原创力文档

文档评论(0)