2026年百度公司面试笔试题库及答案_第1页
2026年百度公司面试笔试题库及答案_第2页
2026年百度公司面试笔试题库及答案_第3页
2026年百度公司面试笔试题库及答案_第4页
2026年百度公司面试笔试题库及答案_第5页
已阅读5页,还剩9页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年百度公司面试笔试题库及答案一、编程题(共5题,每题15分,总分75分)1.题目:给定一个包含重复元素的数组,请找出所有不重复的三元组,使得这三个数的和等于给定的目标值。例如,给定数组`[1,2,-2,-1,0,1]`和目标值`0`,不重复的三元组有`[-2,-1,3]`和`[-2,0,2]`。请实现该算法,并说明时间复杂度。2.题目:实现一个函数,将一个字符串中的每个单词翻转,但保持单词之间的顺序不变。例如,输入`"helloworld"`,输出`"ollehdlrow"`。请用Python或C++实现,并说明时间复杂度。3.题目:给定一个二叉树,请判断该二叉树是否是平衡二叉树。平衡二叉树是指一个二叉树中任意节点的左右子树的高度差不超过1。请用代码实现,并说明时间复杂度。4.题目:实现一个LRU(最近最少使用)缓存,支持get和put操作。get操作返回键对应的值,如果键不存在返回-1;put操作插入或更新键值对。缓存容量为固定值,超出容量时需要淘汰最久未使用的元素。请用Python或Java实现,并说明时间复杂度。5.题目:给定一个字符串,请判断该字符串是否可以由两个相同的字符串重复拼接而成。例如,输入`"abab"`,输出`True`;输入`"abcabc"`,输出`True`;输入`"a"`,输出`False`。请用代码实现,并说明时间复杂度。二、算法题(共5题,每题15分,总分75分)1.题目:给定一个字符串`s`,找到其中最长的回文子串。例如,输入`"babad"`,输出`"bab"`或`"aba"`。请实现该算法,并说明时间复杂度。2.题目:给定一个非负整数数组,返回其中三个数相加等于零的个数。例如,输入`[1,2,-2,1,-1,0]`,输出`3`(因为有三个三元组满足条件)。请实现该算法,并说明时间复杂度。3.题目:给定一个链表,判断链表中是否有环。如果存在环,请返回进入环的第一个节点;如果不存在环,返回`None`。请用代码实现,并说明时间复杂度。4.题目:给定一个二叉搜索树,请实现一个函数,将该二叉搜索树转换为一个排序的双向链表。转换后的双向链表应该保持二叉搜索树的顺序,即左指针指向前一个节点,右指针指向后一个节点。请用代码实现,并说明时间复杂度。5.题目:给定一个正整数`n`,请判断该数是否是快乐数。快乐数是指一个数每次替换为它每个位置上数字的平方和,最终变为1的数。例如,19是一个快乐数,因为1^2+9^2=82,8^2+2^2=68,6^2+8^2=100,1^2+0^2+0^2=1。请用代码实现,并说明时间复杂度。三、系统设计题(共3题,每题25分,总分75分)1.题目:设计一个短链接系统。用户可以输入一个长链接,系统返回一个短链接;用户通过短链接可以跳转到对应的长链接。请说明系统设计思路,包括数据结构、算法和可能的优化方案。2.题目:设计一个微博系统,支持用户发布微博、关注/取消关注用户、查看关注用户的最新微博等功能。请说明系统设计思路,包括数据结构、算法和可能的优化方案。3.题目:设计一个分布式文件存储系统,支持文件上传、下载、删除和分片存储等功能。请说明系统设计思路,包括数据结构、算法和可能的优化方案。答案及解析一、编程题1.答案:pythondefthree_sum(nums,target):nums.sort()n=len(nums)res=[]foriinrange(n):ifi>0andnums[i]==nums[i-1]:continueleft,right=i+1,n-1whileleft<right:total=nums[i]+nums[left]+nums[right]iftotal==target:res.append([nums[i],nums[left],nums[right]])whileleft<rightandnums[left]==nums[left+1]:left+=1whileleft<rightandnums[right]==nums[right-1]:right-=1left+=1right-=1eliftotal<target:left+=1else:right-=1returnres解析:首先对数组进行排序,然后使用固定指针法,对于每个元素,使用双指针在剩余部分查找两个数使得三数之和等于目标值。时间复杂度为O(n^2)。2.答案:pythondefreverse_words(s):words=s.split()reversed_words=[word[::-1]forwordinwords]return''.join(reversed_words)解析:将字符串按空格分割成单词,然后对每个单词进行翻转,最后将翻转后的单词重新拼接成字符串。时间复杂度为O(n)。3.答案:pythondefis_balanced(root):defcheck(node):ifnotnode:return0,Trueleft_height,left_balanced=check(node.left)right_height,right_balanced=check(node.right)returnmax(left_height,right_height)+1,left_balancedandright_balancedandabs(left_height-right_height)<=1returncheck(root)[1]解析:使用递归的方法,对于每个节点,计算其左右子树的高度,并判断高度差是否不超过1。时间复杂度为O(n)。4.答案:pythonclassLRUCache:def__init__(self,capacity):self.capacity=capacityself.cache={}self.order=[]defget(self,key):ifkeyinself.cache:self.order.remove(key)self.order.append(key)returnself.cache[key]return-1defput(self,key,value):ifkeyinself.cache:self.order.remove(key)eliflen(self.cache)>=self.capacity:delself.cache[self.order.pop(0)]self.cache[key]=valueself.order.append(key)解析:使用哈希表存储键值对,使用双向链表维护访问顺序。get操作将键移到链表末尾,put操作如果键已存在则移到链表末尾,如果超出容量则删除链表头部元素。时间复杂度为O(1)。5.答案:pythondefrepeated_substring_pattern(s):n=len(s)foriinrange(1,n//2+1):ifn%i==0:ifs[:i](n//i)==s:returnTruereturnFalse解析:遍历所有可能的子串长度,检查是否存在某个子串可以重复拼接成原字符串。时间复杂度为O(n^2)。二、算法题1.答案:pythondeflongest_palindrome(s):n=len(s)ifn==0:return""start,max_len=0,1foriinrange(n):ifi-max_len>=1ands[i-max_len-1:i+1]==s[i-max_len-1:i+1][::-1]:start=i-max_len-1max_len+=2continueifi-max_len>=0ands[i-max_len:i+1]==s[i-max_len:i+1][::-1]:start=i-max_lenmax_len+=1returns[start:start+max_len]解析:动态规划的思想,遍历每个字符,检查以该字符为中心的最长回文子串。时间复杂度为O(n^2)。2.答案:pythondefthree_sum(nums):nums.sort()n=len(nums)res=0foriinrange(n):ifi>0andnums[i]==nums[i-1]:continueleft,right=i+1,n-1whileleft<right:total=nums[i]+nums[left]+nums[right]iftotal==0:res+=1whileleft<rightandnums[left]==nums[left+1]:left+=1whileleft<rightandnums[right]==nums[right-1]:right-=1left+=1right-=1eliftotal<0:left+=1else:right-=1returnres解析:排序后使用固定指针法,对于每个元素,使用双指针在剩余部分查找两个数使得三数之和等于零。时间复杂度为O(n^2)。3.答案:pythondefhas_cycle(head):slow,fast=head,headwhilefastandfast.next:slow=slow.nextfast=fast.next.nextifslow==fast:returnslowreturnNone解析:使用快慢指针法,快指针每次移动两步,慢指针每次移动一步,如果存在环,快慢指针会相遇。时间复杂度为O(n)。4.答案:pythondefconvert_bst_to_doubly_linked_list(root):definorder(node):nonlocalprev,headifnotnode:returninorder(node.left)ifprev:prev.right=nodenode.left=prevelse:head=nodeprev=nodeinorder(node.right)prev,head=None,Noneinorder(root)head.left=prevprev.right=headreturnhead解析:中序遍历二叉搜索树,将节点依次连接成双向链表。时间复杂度为O(n)。5.答案:pythondefis_happy(n):seen=set()whilen!=1andnnotinseen:seen.add(n)n=sum(int(digit)2fordigitinstr(n))returnn==1解析:通过计算每个数字的平方和,判断是否进入循环或变为1。时间复杂度为O(logn)。三、系统设计题1.答案:-数据结构:使用哈希表存储长链接和短链接的映射关系,使用随机算法生成短链接(如base62编码)。-算法:将长链接转换为固定长度的短链接,如使用hash函数+base62编码。-优化方案:使用分布式缓存存储热点短链接,使用负载均衡分散请求。2.答案:-数据结构:使用哈希表存储用户信息

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论