2026年互联网大厂笔试题库解析_第1页
2026年互联网大厂笔试题库解析_第2页
2026年互联网大厂笔试题库解析_第3页
2026年互联网大厂笔试题库解析_第4页
2026年互联网大厂笔试题库解析_第5页
已阅读5页,还剩10页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

2026年互联网大厂笔试题库解析一、编程语言基础(3题,每题10分,共30分)题目1:请用Python实现一个函数,输入一个正整数n,返回一个列表,其中包含从1到n的所有奇数。如果输入为负数或非整数,函数应抛出`ValueError`。答案:pythondefodd_numbers(n):ifnotisinstance(n,int)orn<0:raiseValueError("输入必须是正整数")return[iforiinrange(1,n+1)ifi%2!=0]解析:-首先检查输入是否为正整数,如果不是则抛出异常。-使用列表推导式生成从1到n的奇数列表,条件为`i%2!=0`。-此题考察Python基础语法和异常处理能力。题目2:用Java实现一个方法,输入一个字符串,返回该字符串中所有单词的长度之和。假设单词之间由空格分隔,字符串首尾可能存在空格。答案:javapublicintsumOfWordLengths(Strings){if(s==null||s.trim().isEmpty()){return0;}String[]words=s.trim().split("\\s+");intsum=0;for(Stringword:words){sum+=word.length();}returnsum;}解析:-首先检查字符串是否为空或仅含空格。-使用`trim()`去除首尾空格,`split("\\s+")`按空白字符分割单词。-遍历单词数组并累加长度。-此题考察Java字符串处理和循环逻辑。题目3:用C++实现一个函数,输入一个整数数组,返回数组中的最大值,但要求不使用任何标准库函数(如`max`)。答案:cppintfindMax(intarr[],intsize){if(size<=0)return-1;//边界检查intmax=arr[0];for(inti=1;i<size;++i){if(arr[i]>max){max=arr[i];}}returnmax;}解析:-初始化最大值为数组第一个元素。-遍历数组,更新最大值。-不使用标准库函数,考察基础算法能力。二、数据结构与算法(5题,每题12分,共60分)题目4:请解释什么是二叉搜索树(BST),并给出一个递归函数,判断给定二叉树是否为BST。假设二叉树节点定义如下:pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=right答案:pythondefisBST(node,left=float('-inf'),right=float('inf')):ifnotnode:returnTrueifnot(left<node.val<right):returnFalsereturn(isBST(node.left,left,node.val)andisBST(node.right,node.val,right))解析:-BST性质:左子树所有节点小于根节点,右子树所有节点大于根节点。-递归检查每个节点是否在合法范围内。-此题考察递归和BST性质的理解。题目5:用Java实现快速排序(QuickSort)算法,要求以最后一个元素为基准(pivot)。答案:javapublicvoidquickSort(int[]arr,intleft,intright){if(left>=right)return;intpivot=arr[right];inti=left-1;for(intj=left;j<right;j++){if(arr[j]<=pivot){i++;swap(arr,i,j);}}swap(arr,i+1,right);quickSort(arr,left,i);quickSort(arr,i+2,right);}解析:-选择最后一个元素为基准,分区操作。-递归排序左右子区间。-此题考察分治算法和边界处理。题目6:用Python实现一个函数,输入一个链表,返回其反转后的链表。假设链表节点定义如下:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=next答案:pythondefreverseList(head):prev=Nonecurrent=headwhilecurrent:next_node=current.nextcurrent.next=prevprev=currentcurrent=next_nodereturnprev解析:-使用三指针法(prev,current,next_node)反转链表。-此题考察链表操作和递归替代。题目7:用C++实现一个函数,输入一个无重复元素的数组,返回所有可能的子集(幂集)。答案:cppinclude<vector>usingnamespacestd;voidsubsetsHelper(intindex,vector<int>&nums,vector<vector<int>>&result,vector<int>&path){result.push_back(path);for(inti=index;i<nums.size();++i){path.push_back(nums[i]);subsetsHelper(i+1,nums,result,path);path.pop_back();}}vector<vector<int>>subsets(vector<int>&nums){vector<vector<int>>result;vector<int>path;subsetsHelper(0,nums,result,path);returnresult;}解析:-回溯算法生成所有子集。-每次选择当前及之后的元素加入路径。-此题考察回溯算法和递归设计。题目8:用Java实现一个方法,输入一个字符串,返回其中不重复的最长子串的长度。答案:javapublicintlengthOfLongestSubstring(Strings){int[]last=newint[128];Arrays.fill(last,-1);intmaxLen=0,start=-1;for(inti=0;i<s.length();i++){charc=s.charAt(i);if(last[c]>start){start=last[c];}last[c]=i;maxLen=Math.max(maxLen,i-start);}returnmaxLen;}解析:-使用滑动窗口和哈希数组记录字符最后出现位置。-更新窗口起始位置和最大长度。-此题考察滑动窗口和哈希应用。三、系统设计(2题,每题25分,共50分)题目9:设计一个短链接(URLShortening)系统,要求支持以下功能:1.输入长链接,返回短链接;2.输入短链接,返回长链接。假设短链接长度限制为6位,可用字符为`[a-zA-Z0-9]`。答案:pythonimportstringimportrandomclassShortLinkSystem:def__init__(self):self.base_url="http://short.url/"selfchar_set=string.ascii_letters+string.digitsselfmapping={}selfreverse_mapping={}def_generate_short_code(self):whileTrue:code=''.join(random.choices(self.char_set,k=6))ifcodenotinself.reverse_mapping:returncodedefshorten(self,long_url):iflong_urlinself.mapping:returnself.mapping[long_url]short_code=self._generate_short_code()self.mapping[long_url]=self.base_url+short_codeself.reverse_mapping[short_code]=long_urlreturnself.base_url+short_codedefrestore(self,short_url):short_code=short_url.split('/')[-1]returnself.reverse_mapping.get(short_code,"Invalidshortlink")解析:-使用随机6位字符作为短码,确保唯一性。-哈希表存储长/短链接映射关系。-此题考察哈希应用和随机算法。题目10:设计一个简单的微博系统,要求支持以下功能:1.用户发布微博(最多140字);2.用户关注其他用户;3.用户查看自己关注用户的最新5条微博。假设用户和微博数据存储在内存中(不考虑数据库)。答案:pythonclassUser:def__init__(self,user_id,name):self.user_id=user_=nameself.following=set()selftweets=[]deffollow(self,other):self.following.add(other)defpost(self,content):iflen(content)>140:raiseValueError("微博内容超过140字")self.tweets.append(content)self.tweets=self.tweets[-5:]#保持最新5条classWeiboSystem:def__init__(self):self.users={}defregister(self,user_id,name):ifuser_idnotinself.users:self.users[user_id]=User(user_id,name)defpost_weibo(self,user_id,content):user=self.users.get(user_id)ifnotuser:raiseValueError("用户不存在")user.post(content)defget_feed(self,user_id):user=self.users.get(user_id)ifnotuser:raiseValueError("用户不存在")feed

温馨提示

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

评论

0/150

提交评论