版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年IT行业面试宝典:软件工程师面试题及答案解析一、编程语言基础(5题,每题10分,共50分)1.Java编程题(10分)编写一个Java方法,接收一个整数数组,返回该数组中所有奇数的平方和。例如,输入`[1,2,3,4,5]`,返回`1^2+3^2+5^2=35`。javapublicstaticintsumOfOddSquares(int[]arr){intsum=0;for(intnum:arr){if(num%2!=0){sum+=numnum;}}returnsum;}解析:遍历数组,判断每个元素是否为奇数,如果是,则计算其平方并累加到`sum`中。时间复杂度为O(n),空间复杂度为O(1)。2.Python编程题(10分)编写一个Python函数,接收一个字符串,返回该字符串中所有单词的长度之和。例如,输入`"Helloworld"`,返回`5+5=10`。pythondefsumOfWordLengths(s):words=s.split()returnsum(len(word)forwordinwords)解析:使用`split()`方法将字符串按空格分割成单词列表,然后遍历列表计算每个单词的长度并累加。3.C++编程题(10分)编写一个C++函数,接收一个字符串,返回该字符串中所有大写字母的数量。例如,输入`"HelloWorld"`,返回`2`。cppintcountUppercase(conststd::string&s){intcount=0;for(charc:s){if(isupper(c)){count++;}}returncount;}解析:遍历字符串中的每个字符,使用`isupper()`函数判断是否为大写字母,如果是,则计数器加1。4.JavaScript编程题(10分)编写一个JavaScript函数,接收一个数组,返回一个新数组,其中包含原数组中所有非负数。例如,输入`[-1,2,-3,4,0]`,返回`[2,4,0]`。javascriptfunctionfilterNonNegative(arr){returnarr.filter(num=>num>=0);}解析:使用`filter()`方法遍历数组,保留所有非负数。5.Go编程题(10分)编写一个Go函数,接收一个整数切片,返回该切片中所有偶数的和。例如,输入`[1,2,3,4,5]`,返回`2+4=6`。gofuncsumOfEvens(nums[]int)int{sum:=0for_,num:=rangenums{ifnum%2==0{sum+=num}}returnsum}解析:遍历切片,判断每个元素是否为偶数,如果是,则累加到`sum`中。二、数据结构与算法(10题,每题10分,共100分)1.二叉树遍历(10分)给定一个二叉树,编写代码实现其前序遍历(根-左-右)。例如,输入以下二叉树:1/\23/\45返回`[1,2,4,5,3]`。pythondefpreorderTraversal(root):result=[]defdfs(node):ifnotnode:returnresult.append(node.val)dfs(node.left)dfs(node.right)dfs(root)returnresult解析:前序遍历采用递归或迭代方式,先访问根节点,然后递归遍历左子树和右子树。2.动态规划(10分)编写代码实现斐波那契数列的第n项。例如,输入`n=5`,返回`5`。pythondeffibonacci(n):ifn<=1:returnna,b=0,1for_inrange(2,n+1):a,b=b,a+breturnb解析:使用动态规划优化斐波那契数列的计算,避免重复计算。3.链表反转(10分)编写代码实现单链表的反转。例如,输入`1->2->3->4->5`,返回`5->4->3->2->1`。pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefreverseList(head):prev,curr=None,headwhilecurr:next_node=curr.nextcurr.next=prevprev=currcurr=next_nodereturnprev解析:使用三个指针`prev`、`curr`和`next_node`依次反转链表节点。4.快速排序(10分)编写代码实现快速排序算法。例如,输入`[3,1,4,1,5,9,2,6,5,3,5]`,返回`[1,1,2,3,3,4,5,5,5,6,9]`。pythondefquickSort(arr):iflen(arr)<=1:returnarrpivot=arr[len(arr)//2]left=[xforxinarrifx<pivot]middle=[xforxinarrifx==pivot]right=[xforxinarrifx>pivot]returnquickSort(left)+middle+quickSort(right)解析:选择基准值`pivot`,将数组分为左、中、右三部分,递归排序左、右部分。5.哈希表应用(10分)编写代码实现判断一个字符串是否包含重复字符。例如,输入`"abcabc"`,返回`True`。pythondefcontainsDuplicate(s):seen=set()forcharins:ifcharinseen:returnTrueseen.add(char)returnFalse解析:使用哈希集合记录已出现的字符,若重复出现则返回`True`。6.栈的应用(10分)编写代码实现有效的括号匹配。例如,输入`"()"`,返回`True`;输入`"()[]{}"`,返回`True`;输入`"(]"`,返回`False`。pythondefisValid(s):stack=[]mapping={')':'(',']':'[','}':'{'}forcharins:ifcharinmapping:top_element=stack.pop()ifstackelse'#'ifmapping[char]!=top_element:returnFalseelse:stack.append(char)returnnotstack解析:使用栈记录左括号,遇到右括号时匹配栈顶左括号,若不匹配则返回`False`。7.贪心算法(10分)编写代码实现活动选择问题:给定活动开始和结束时间,选择最多不冲突的活动。例如,输入`[[1,4],[2,3],[3,5],[0,6],[5,7],[6,8]]`,返回`[0,6],[3,5],[5,7],[6,8]`。pythondefactivitySelection(activities):按结束时间排序activities.sort(key=lambdax:x[1])result=[]last_end_time=0forstart,endinactivities:ifstart>last_end_time:result.append([start,end])last_end_time=endreturnresult解析:按活动结束时间排序,选择最早结束的活动,排除其后的冲突活动。8.二分查找(10分)编写代码实现在一个有序数组中查找目标值的索引。例如,输入`arr=[1,2,3,4,5]`,`target=3`,返回`2`。pythondefbinarySearch(arr,target):left,right=0,len(arr)-1whileleft<=right:mid=(left+right)//2ifarr[mid]==target:returnmidelifarr[mid]<target:left=mid+1else:right=mid-1return-1解析:在有序数组中不断缩小查找范围,直到找到目标值或范围为空。9.图的深度优先搜索(10分)编写代码实现图的深度优先搜索(DFS)。例如,输入以下邻接表:graph={'A':['B','C'],'B':['A','D','E'],'C':['A','F'],'D':['B'],'E':['B','F'],'F':['C','E']}从节点`'A'`开始DFS,返回访问顺序`['A','B','D','E','C','F']`。pythondefdfs(graph,start,visited=None):ifvisitedisNone:visited=set()visited.add(start)result=[start]forneighboringraph[start]:ifneighbornotinvisited:result.extend(dfs(graph,neighbor,visited))returnresult解析:使用递归或栈记录访问顺序,避免重复访问节点。10.广度优先搜索(10分)编写代码实现图的广度优先搜索(BFS)。例如,输入与DFS相同的邻接表,从节点`'A'`开始BFS,返回访问顺序`['A','B','C','D','E','F']`。pythonfromcollectionsimportdequedefbfs(graph,start):visited=set()queue=deque([start])result=[]whilequeue:node=queue.popleft()ifnodenotinvisited:visited.add(node)result.append(node)forneighboringraph[node]:ifneighbornotinvisited:queue.append(neighbor)returnresult解析:使用队列记录待访问节点,按顺序出队并访问相邻节点。三、系统设计(5题,每题20分,共100分)1.设计LRU缓存(20分)设计一个LRU(LeastRecentlyUsed)缓存系统,支持`get`和`put`操作。LRU缓存限制为固定大小,当缓存满时,最久未使用的缓存项将被移除。例如,容量为3的缓存:-`put(1,1)`→缓存为`{1=1}`-`put(2,2)`→缓存为`{1=1,2=2}`-`put(3,3)`→缓存为`{1=1,2=2,3=3}`-`get(1)`→返回`1`,缓存为`{2=2,3=3,1=1}`(1被更新为最近使用)-`put(4,4)`→缓存满,移除最久未使用的`2`,缓存为`{1=1,3=3,4=4}`。pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache=OrderedDict()defget(self,key:int)->int:ifkeynotinself.cache:return-1self.cache.move_to_end(key)returnself.cache[key]defput(self,key:int,value:int)->None:ifkeyinself.cache:self.cache.move_to_end(key)self.cache[key]=valueiflen(self.cache)>self.capacity:self.cache.popitem(last=False)解析:使用`OrderedDict`记录缓存项,`get`操作将键移动到末尾表示最近使用,`put`操作时若超出容量则移除最早的项。2.设计微博系统(20分)设计一个简单的微博系统,支持用户发布、关注、取关、获取时间线等操作。关键功能:-用户注册与登录-发布微博(包含文本、时间戳)-关注/取关用户-获取当前用户的时间线(包括自己发布和关注用户发布的内容)解析:-数据模型:用户(ID、昵称等)、微博(ID、用户ID、内容、时间戳等)、关注关系(用户ID、关注对象ID)。-发布微博:插入到微博表中,关联用户ID和时间戳。-关注/取关:更新关注关系表。-时间线:先获取用户自己发布的微博,再获取关注用户的微博,按时间降序排序。3.设计秒杀系统(20分)设计一个秒杀系统,支持高并发下的商品秒杀。关键功能:-用户下单时验证库存-防止超卖和重复下单-订单生成与支付
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年森林法考试题及答案
- 2025年教育理论知识考试题及答案
- 2025年综艺问答试题大全及答案
- 2025年沈阳消防考试试题及答案
- 【2025年】院感相关知识测考试练习题及答案解析
- 2025年ipa考试试题及答案
- 2026广东佛山市顺德区北滘镇碧江中学招聘临聘教师备考题库带答案详解
- 2025年心理咨询师试卷含答案
- 2025年《审计学》试题及答案
- 2025年环保培训测试题有答案
- 浙江省宁波市2024-2025学年高三上学期期末模拟检测语文试题(原卷版+解析版)
- 生态修复技术集成-深度研究
- 中小企业专利质量控制指引编制说明
- 旅游行业安全风险管控与隐患排查方案
- 专题15 物质的鉴别、分离、除杂、提纯与共存问题 2024年中考化学真题分类汇编
- DL-T5418-2009火电厂烟气脱硫吸收塔施工及验收规程
- 复方蒲公英注射液在痤疮中的应用研究
- 高考数学专题:导数大题专练(含答案)
- 腘窝囊肿的关节镜治疗培训课件
- 淮安市2023-2024学年七年级上学期期末历史试卷(含答案解析)
- 课件:曝光三要素
评论
0/150
提交评论