版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年软件工程师面试笔试题库一、编程语言基础(共5题,每题10分,总分50分)1.题目:用Python实现一个函数,输入一个正整数n,返回一个列表,其中包含从1到n的所有奇数,但不能使用循环。示例:输入:5输出:[1,3,5]2.题目:在Java中,编写一个方法,输入一个字符串,返回该字符串中所有单词的逆序排列,单词之间用空格分隔。示例:输入:"HelloWorld"输出:"WorldHello"3.题目:用C++实现一个函数,输入一个整数数组,返回该数组的中位数。假设数组长度为奇数。示例:输入:[3,1,2]输出:24.题目:在JavaScript中,编写一个箭头函数,输入一个对象和一个键名,返回该对象中对应键名的值,如果键名不存在则返回null。示例:输入:({name:"Alice",age:25},"name")输出:"Alice"5.题目:用Go语言实现一个函数,输入一个字符串,返回该字符串的所有子串,不包含空串。示例:输入:"abc"输出:["a","b","c","ab","bc","abc"]二、数据结构与算法(共5题,每题12分,总分60分)1.题目:设计一个LRU(LeastRecentlyUsed)缓存,使用哈希表和双向链表实现,支持get和put操作。要求:-get(key)返回key对应的value,并更新该key的最近使用时间。-put(key,value)插入或更新key-value对,如果缓存已满,则删除最近最少使用的项。2.题目:给定一个包含n个整数的数组,找出其中三个数,使得它们的和最接近给定的目标数target。返回这三个数的和。示例:输入:nums=[-1,2,1,-4],target=1输出:2(-1+2+1=2)3.题目:在二叉树中,实现一个函数,输入一个二叉树的根节点和一个整数target,返回从根节点到目标值的最近路径的节点值列表。示例:输入:root=[3,9,20,null,null,15,7],target=15输出:[3,20,15]4.题目:用动态规划实现一个函数,输入一个字符串s和一个单词列表wordDict,判断s是否可以由wordDict中的单词组合而成。示例:输入:s="leetcode",wordDict=["leet","code"]输出:true("leetcode"="leet"+"code")5.题目:给定一个字符串,判断它是否是一个有效的括号字符串,其中括号类型包括()、[]、{},且括号必须正确嵌套。示例:输入:"()[]{}"输出:true三、系统设计与架构(共3题,每题20分,总分60分)1.题目:设计一个高并发的短链接系统,要求:-输入一个长链接,返回一个短链接。-访问短链接时,能够解析并返回对应的长链接。要求说明:-系统需要支持高并发访问。-短链接应具有唯一性和可记忆性。2.题目:设计一个微博系统的消息推送服务,要求:-用户可以关注其他用户,接收其发布的消息。-消息推送需要支持离线缓存和多线程异步处理。要求说明:-推送延迟应尽可能低。-系统需要支持动态扩容。3.题目:设计一个分布式数据库的读写分离架构,要求:-主库负责写操作,从库负责读操作。-需要支持数据同步和故障切换。要求说明:-数据同步延迟应小于100ms。-系统需要保证数据一致性。四、数据库与SQL(共3题,每题15分,总分45分)1.题目:给定一个订单表orders(id,customer_id,order_date,amount),编写SQL查询,返回每个客户的总订单金额,并按金额从高到低排序。示例:sqlSELECTcustomer_id,SUM(amount)AStotal_amountFROMordersGROUPBYcustomer_idORDERBYtotal_amountDESC;2.题目:在一个学生表students(id,name,grade)和课程表courses(id,name)中,编写SQL查询,返回每个学生的姓名、课程名和成绩,要求只显示成绩大于80的记录。示例:sqlSELECT,AScourse_name,s.gradeFROMstudentssJOINcoursescONs.course_id=c.idWHEREs.grade>80;3.题目:给定一个表log(timestamp,user_id,action),编写SQL查询,返回每个用户每天的操作次数,并按用户ID和日期排序。示例:sqlSELECTuser_id,DATE(timestamp)ASdate,COUNT()ASaction_countFROMlogGROUPBYuser_id,DATE(timestamp)ORDERBYuser_id,date;五、计算机网络(共3题,每题15分,总分45分)1.题目:解释TCP和UDP的区别,并说明在哪些场景下会选择使用UDP。2.题目:描述HTTP和HTTPS协议的主要区别,并说明HTTPS如何实现加密通信。3.题目:解释DNS解析的过程,包括递归解析和迭代解析的区别。六、操作系统与系统编程(共2题,每题20分,总分40分)1.题目:解释进程和线程的区别,并说明在哪些场景下会选择使用多线程。2.题目:描述Linux中的文件系统结构,并解释硬链接和软链接的区别。答案与解析一、编程语言基础1.Python:pythondefodd_numbers(n):returnlist(range(1,n+1,2))解析:使用`range`函数从1开始,步长为2,生成从1到n的奇数列表。2.Java:javapublicStringreverseWords(Strings){String[]words=s.split("");StringBuildersb=newStringBuilder();for(inti=words.length-1;i>=0;i--){sb.append(words[i]);if(i!=0){sb.append("");}}returnsb.toString();}解析:先按空格分割字符串,然后逆序拼接单词。3.C++:cppinclude<vector>include<algorithm>usingnamespacestd;intfindMedian(vector<int>&nums){sort(nums.begin(),nums.end());intn=nums.size();returnnums[n/2];}解析:对数组排序后,返回中间元素。4.JavaScript:javascriptconstgetValue=(obj,key)=>obj[key]||null;解析:使用条件运算符检查键名是否存在,不存在返回null。5.Go:gofuncgetSubstrings(sstring)[]string{varsubstrings[]stringfori:=0;i<len(s);i++{forj:=i+1;j<=len(s);j++{substrings=append(substrings,s[i:j])}}returnsubstrings}解析:双层循环生成所有子串。二、数据结构与算法1.LRU缓存:pythonclassNode:def__init__(self,key,value):self.key=keyself.value=valueself.prev=Noneself.next=NoneclassLRUCache:def__init__(self,capacity):self.capacity=capacityself.cache={}self.head,self.tail=Node(0,0),Node(0,0)self.head.next=self.tailself.tail.prev=self.headdefget(self,key):ifkeyinself.cache:node=self.cache[key]self._move_to_head(node)returnnode.valuereturn-1defput(self,key,value):ifkeyinself.cache:node=self.cache[key]node.value=valueself._move_to_head(node)else:iflen(self.cache)==self.capacity:self._remove_tail()new_node=Node(key,value)self.cache[key]=new_nodeself._add_to_head(new_node)解析:使用双向链表和哈希表实现,链表头为最近使用,尾为最久未使用。2.三数之和接近target:pythondefthreeSumClosest(nums,target):nums.sort()n=len(nums)closest_sum=nums[0]+nums[1]+nums[2]foriinrange(n-2):left,right=i+1,n-1whileleft<right:current_sum=nums[i]+nums[left]+nums[right]ifabs(current_sum-target)<abs(closest_sum-target):closest_sum=current_sumifcurrent_sum<target:left+=1else:right-=1returnclosest_sum解析:排序后使用双指针法,固定一个数,移动左右指针寻找最接近target的三数之和。3.二叉树最近路径:pythondefpathSum(root,target):defdfs(node,path):ifnotnode:returnFalsepath.append(node.val)ifnode.val==target:returnpath.copy()ifdfs(node.left,path)ordfs(node.right,path):returnpathpath.pop()returnFalsereturndfs(root,[])解析:递归遍历二叉树,找到目标路径后返回。4.字符串组合判断:pythondefwordBreak(s,wordDict):dp=[False](len(s)+1)dp[0]=Trueforiinrange(1,len(s)+1):forwordinwordDict:ifi>=len(word)ands[i-len(word):i]==wordanddp[i-len(word)]:dp[i]=Truebreakreturndp[-1]解析:动态规划,dp[i]表示s[:i]是否可以由单词组合。5.有效括号判断:pythondefisValid(s):stack=[]mapping={'(':')','[':']','{':'}'}forcharins:ifcharinmapping:stack.append(mapping[char])else:ifnotstackorchar!=stack.pop():returnFalsereturnnotstack解析:使用栈匹配括号,左括号入栈,右括号出栈并判断是否匹配。三、系统设计与架构1.短链接系统:方案:-使用哈希函数(如MD5)将长链接映射为短链接。-使用分布式缓存(如Redis)存储短链接和长链接的映射关系。-短链接可以设计为`base62`编码,减少长度。2.微博消息推送:方案:-使用消息队列(如Kafka)异步处理推送请求。-用户关注关系存储在数据库中,推送时查询关注列表。-支持离线缓存,未在线用户的消息暂存到数据库,上线后推送。3.分布式数据库读写分离:方案:-主库处理写操作,从库处理读操作。-使用Binlog同步主库数据到从库。-故障切换时,自动选举新的主库。四、数据库与SQL1.订单总金额:sqlSELECTcustomer_id,SUM(amount)AStotal_amountFROMordersGROUPBYcustomer_idORDERBYtotal_amountDESC;2.学生课程成绩:sqlSELECT,AScourse_name,s.gradeFROMstudentssJOIN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 除油粉生产项目原料预处理优化方案
- 《健康饮品生产项目灌装环节卫生管控方案》
- 材料选型阶段遮光产品筛选方案
- 施工质量在线监测方案
- 泡沫铝板施工安全管理方案
- 模块化工程装备项目施工方案
- 企业内训机构定制化课程验收评估方案
- 既有建筑弹性建筑涂料翻新施工方案
- 工业用地道路硬化施工方案
- 焊接材料安全生产方案
- 2026江苏苏州常熟市融媒体中心(传媒集团)招聘7人备考题库有答案详解
- 外墙曲臂车高空作业专项施工方案
- 2026年湖南省政工专业职称考试(中国近现代史)强化练习题及答案
- 2026湖北交投宜昌高速公路运营管理有限公司一线工作人员招聘考试备考试题及答案解析
- 雨课堂学堂在线学堂云《自然辩证法概论(北京航空航天)》单元测试考核答案
- 2026年高考全国二卷数学真题试卷(含答案)
- 广东省深圳市各县区乡镇行政村村庄村名明细
- 农商行运营条线岗位职责说明书
- 《设施农业环境学》课件第二章 设施光照环境及其调控
- 国家开放大学《行政组织学》章节测试参考答案
- GA 1551.6-2021 石油石化系统治安反恐防范要求 第6部分:石油天然气管道企业
评论
0/150
提交评论