2026年百度技术类岗位面试题解析.docxVIP

  • 0
  • 0
  • 约4.76千字
  • 约 14页
  • 2026-01-20 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年百度技术类岗位面试题解析

一、编程基础与算法(共5题,每题10分,总分50分)

1.题目:给定一个非空整数数组,返回所有连续子数组的和。要求:时间复杂度O(n),空间复杂度O(1)。

示例:输入`[1,2,3]`,输出`[6,6,6]`(即所有子数组的和)。

答案:

python

defsubarray_sums(arr):

result=[]

current_sum=0

fornuminarr:

current_sum+=num

result.append(current_sum)

returnresult

解析:

-使用滑动窗口法,一次遍历数组,维护当前子数组的和`current_sum`,每一步直接追加到结果中。

-时间复杂度O(n),空间复杂度O(1)(假设输出数组不计入空间)。

2.题目:实现快速排序算法,并说明其平均时间复杂度和最坏情况下的时间复杂度。

答案:

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)

解析:

-快速排序通过分治思想实现,平均时间复杂度O(nlogn),最坏情况O(n2)(如每次选择最左或最右元素作为pivot)。

-百度面试常考查排序算法的实现与优化,需掌握不同场景下的改进策略。

3.题目:设计一个算法,判断一个字符串是否是另一个字符串的子序列。例如,`abc`是`ahbgdc`的子序列。

答案:

python

defis_subsequence(s,t):

i,j=0,0

whileilen(s)andjlen(t):

ifs[i]==t[j]:

i+=1

j+=1

returni==len(s)

解析:

-双指针法,分别遍历两个字符串,若`t`中能按顺序匹配`s`的所有字符,则返回True。

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

4.题目:给定一个链表,反转其节点,并返回反转后的链表。

答案:

python

classListNode:

def__init__(self,val=0,next=None):

self.val=val

self.next=next

defreverse_list(head):

prev,curr=None,head

whilecurr:

next_node=curr.next

curr.next=prev

prev=curr

curr=next_node

returnprev

解析:

-迭代法反转链表,维护三个指针`prev`、`curr`和`next_node`。

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

5.题目:实现一个LRU(最近最少使用)缓存,支持get和put操作。

答案:

python

classLRUCache:

def__init__(self,capacity:int):

self.capacity=capacity

self.cache={}

self.order=[]

defget(self,key:int)-int:

ifkeynotinself.cache:

return-1

self.order.remove(key)

self.order.append(key)

returnself.cache[key]

defput(self,key:int,value:int)-None:

ifkeyinself.cache:

self.order.remove(key)

eliflen(self.cache)=self.capacity:

oldest=self.order.pop(0)

delself.cache[oldest]

self.cache[key]=value

self.order.append(key)

解析:

-使用哈希表记录缓存,双向链表维护访问顺序。

-get操作将元素移到队尾,put操作需考虑容量限制。

二、系统设计(共3题,每题20分,总分60分)

1.题目:设计一个分布

文档评论(0)

1亿VIP精品文档

相关文档