版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年软件工程师技术面试题及系统设计能力评估含答案一、编程题(共5题,每题20分,总分100分)1.题目:给定一个包含重复数字的数组,请编写一个函数,返回所有不重复的子集。例如,输入`[1,2,2]`,输出`[[],[1],[1,2],[1,2,2],[2],[2,2]]`。要求:-时间复杂度O(N2^N)-空间复杂度O(N2^N)-不能使用内置集合去重2.题目:实现一个LRU(LeastRecentlyUsed)缓存,支持`get`和`put`操作。缓存容量为`capacity`,超出容量时需删除最久未使用的页。要求:-`get(key)`返回键对应的值,若不存在返回`-1`-`put(key,value)`插入或更新键值对,若超出容量则删除最久未使用的页-使用哈希表和双向链表实现3.题目:编写一个函数,将一个32位无符号整数(二进制表示)的反转。例如,输入`123`,输出`321`;输入`120`,输出`21`。要求:-不能使用库函数-不能使用字符串转换-处理边缘情况(如输入`0`或`INT_MAX`)4.题目:给定一个二叉树,判断其是否为平衡二叉树(左右子树高度差不超过1)。要求:-时间复杂度O(N)-递归实现5.题目:实现一个Trie(前缀树),支持`insert`、`search`和`startsWith`操作。要求:-`insert(word)`插入一个单词-`search(word)`完全匹配单词-`startsWith(prefix)`检查是否有以prefix开头的单词二、系统设计题(共3题,每题50分,总分150分)1.题目:设计一个高并发的短链接系统(如`tinyurl`)。要求:-输入任意长链接,输出6位短链接(如`aBcDeF`)-支持高并发访问(百万级QPS)-短链接唯一且可逆(通过短链接找回原链接)-需考虑分布式部署、缓存、数据库设计2.题目:设计一个实时消息推送系统(如微信、抖音的动态刷新)。要求:-支持用户订阅和取消订阅主题-新消息实时推送给所有订阅者-支持离线消息缓存-需考虑高可用、可扩展性3.题目:设计一个高并发的秒杀系统(如双十一抢购)。要求:-支持10万用户秒杀1000件商品-防止超卖、重复下单-需考虑限流、分布式锁、数据库优化三、数据库设计题(共2题,每题25分,总分50分)1.题目:设计一个电商平台的订单表(`orders`),包含以下字段:-`order_id`(主键)-`user_id`(用户ID)-`product_id`(商品ID)-`quantity`(数量)-`price`(单价)-`order_time`(下单时间)-`status`(订单状态,如待支付、已支付、已发货等)要求:-考虑索引设计(哪些字段需要索引?为什么?)-处理高并发写入场景2.题目:设计一个社交平台的用户关系表(`relations`),支持添加关注、取消关注、查看粉丝列表等功能。要求:-表结构设计-关系类型(单向/双向)-查询性能优化四、算法题(共3题,每题25分,总分75分)1.题目:给定一个字符串,找到其中不重复的最长子串长度。例如,输入`"abcabcbb"`,输出`3`(子串`"abc"`)。要求:-时间复杂度O(N)-使用滑动窗口方法2.题目:设计一个算法,判断一个数是否为素数。要求:-处理大数(如`10^18`)-优化时间复杂度3.题目:实现快速排序算法,并分析其平均时间复杂度和最坏时间复杂度。要求:-手写代码-解释随机化如何优化答案及解析一、编程题1.子集问题答案:pythondefsubsetsWithDup(nums):res=[]nums.sort()#排序去重subset=[]defbacktrack(index):res.append(subset.copy())foriinrange(index,len(nums)):ifi>indexandnums[i]==nums[i-1]:continue#跳过重复元素subset.append(nums[i])backtrack(i+1)subset.pop()backtrack(0)returnres解析:-排序后通过`i>index`跳过重复元素-递归时`backtrack(i+1)`确保不重复使用同一元素-时间复杂度O(N2^N),空间复杂度O(N2^N)2.LRU缓存答案:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.head,self.tail=Node(0,0),Node(0,0)self.head.next=self.tailself.tail.prev=self.headclassNode:def__init__(self,key,value):self.key=keyself.value=valueself.prev=Noneself.next=Nonedefget(self,key:int)->int:ifkeynotinself.cache:return-1node=self.cache[key]self._remove(node)self._add(node)returnnode.valuedefput(self,key:int,value:int)->None:ifkeyinself.cache:self._remove(self.cache[key])node=Node(key,value)self.cache[key]=nodeself._add(node)iflen(self.cache)>self.capacity:lru=self.tail.prevself._remove(lru)delself.cache[lru.key]def_remove(self,node):delself.cache[node.key]node.prev.next=node.nextnode.next.prev=node.prevdef_add(self,node):node.next=self.head.nextnode.next.prev=nodeself.head.next=nodenode.prev=self.head解析:-使用双向链表维护访问顺序,头为最近使用,尾为最久未使用-哈希表实现O(1)访问-超出容量时删除链表尾部节点3.整数反转答案:pythondefreverse(x:int)->int:INT_MAX=231-1INT_MIN=-231res=0whilex!=0:pop=x%10x//=10ifres>INT_MAX//10or(res==INT_MAX//10andpop>7):return0#溢出ifres<INT_MIN//10or(res==INT_MIN//10andpop<-8):return0#溢出res=res10+popreturnres解析:-逐位取出数字,构建反转结果-检查32位整数溢出情况4.平衡二叉树答案:pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefisBalanced(root:TreeNode)->bool: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),空间复杂度O(N)5.Trie答案:pythonclassTrie:def__init__(self):self.root={}definsert(self,word:str)->None:node=self.rootforcharinword:ifcharnotinnode:node[char]={}node=node[char]node['#']=True#标记结束defsearch(self,word:str)->bool:node=self._find(word)returnnodeisnotNoneand'#'innodedefstartsWith(self,prefix:str)->bool:returnself._find(prefix)isnotNonedef_find(self,word):node=self.rootforcharinword:ifcharnotinnode:returnNonenode=node[char]returnnode解析:-使用字典存储节点,`#`表示单词结束-时间复杂度O(L),L为单词长度二、系统设计题1.短链接系统设计:核心思路:-使用Base62编码(a-z,A-Z,0-9)将ID映射为短链接-分布式ID生成器(如Snowflake算法)-缓存层(Redis)加速短链接解析数据库设计:sqlCREATETABLEshort_links(idBIGINTPRIMARYKEYAUTO_INCREMENT,original_urlVARCHAR(2048)NOTNULL,short_codeCHAR(6)NOTNULLUNIQUE,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP);流程:1.输入长链接,生成唯一ID(Snowflake)2.ID转为Base62编码(如`aBcDeF`)3.存储`(ID,original_url,short_code)`到数据库4.缓存`short_code->original_url`到Redis2.实时消息推送系统设计:核心思路:-发布订阅模式(如Kafka、RabbitMQ)-WebSocket或长轮询实现实时性-离线消息队列(Redis)架构:1.用户订阅主题(存储到数据库/Redis)2.消息生产者发布消息到Kafka/RabbitMQ3.消息消费者(服务端)订阅队列,推送给客户端4.离线消息存储Redis,客户端上线后补发3.秒杀系统设计:核心思路:-分布式锁(Redis或ZooKeeper)-数据库乐观锁(版本号)-流量控制(熔断限流)数据库设计:sqlCREATETABLEproducts(idINTPRIMARYKEY,stockINTNOTNULL,versionINTNOTNULL);流程:1.用户请求时,检查`stock>0`2.获取分布式锁,更新`stock`和`version`3.校验`version`未被修改,确认秒杀成功4.释放锁,返回结果三、数据库设计题1.电商订单表设计:索引设计:-`order_id`(主键,自增)-`user_id`(索引,用于查询用户订单)-`(status,order_time)`(复合索引,用于查询某状态订单按时间排序)高并发写入:-分库分表(按`user_id`或`order_id`碎片化)-使用MVCC隔离级别2.社交关系表设计:表结构:sqlCREATETABLErelations(user_idINTNOTNULL,target_idINTNOTNULL,typeENUM('follow','follower')NOTNULL,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,PRIMARYKEY(user_id,target_id,type),FOREIGNKEY(user_id)REFERENCESusers(id),FOREIGNKEY(target_id)REFERENCESusers(id));查询优化:-使用覆盖索引`(user_id,type)`查询粉丝-分页时使用`LIMIToffset,count`四、算法题1.滑动窗口子串问题:pythondeflengthOfLongestSubstring(s:str)->int:char_set=set()left=0max_len=0forrightinrange(len(s)):whiles[right]inchar_set:char_set.remove(s[left])left+=1char_set.add(s[right])max_len=max(max_len,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年浙江邮电职业技术学院单招职业适应性考试备考题库及答案解析
- 2026年安徽工业经济职业技术学院单招职业适应性测试备考题库及答案解析
- 2026年铜仁幼儿师范高等专科学校单招职业适应性测试备考题库及答案解析
- 2026年天津渤海职业技术学院单招职业适应性测试模拟试题及答案解析
- 期中考试没考好的学生检讨书4篇
- 2026年苏州健雄职业技术学院单招职业适应性考试模拟试题及答案解析
- 2026年江海职业技术学院单招职业适应性测试模拟试题及答案解析
- 2026年新乡职业技术学院单招职业适应性测试模拟试题及答案解析
- 2026年贵州建设职业技术学院单招职业适应性测试模拟试题及答案解析
- 2026年合肥信息技术职业学院单招职业适应性考试模拟试题及答案解析
- 三年级数学上册 (提高版)第8章《分数的初步认识》单元培优拔高测评试题(教师版含解析)(人教版)
- 19计科机器学习学习通超星期末考试答案章节答案2024年
- 全国职业院校技能大赛赛项规程(高职)农产品质量安全检测
- DB51∕T 3179-2024 杵针技术操作规范
- 专利共同申请合同模板(2024版)
- 国开机考答案21-人文英语1(闭卷)
- AQ∕T 7009-2013 机械制造企业安全生产标准化规范
- MOOC 近代物理实验-西南大学 中国大学慕课答案
- 教科版三年级科学上册课件《运动和位置》
- 河北省部分地区2023-2024学年度高二上学期期末考试英语试题(解析版)
- GB/T 9390-2017导航术语
评论
0/150
提交评论