版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年IT企业软件工程师面试题库一、编程基础(3题,每题10分,共30分)题目1(10分)请用Python实现一个函数,该函数接收一个字符串作为参数,返回该字符串中所有重复字符及其出现次数的字典。例如,输入"abccba",输出应该为`{'c':2,'a':2,'b':1}`。pythondefcount_duplicates(s:str)->dict:请在此处编写代码pass题目2(10分)请用C++实现一个单链表节点类`ListNode`,包含整型数据域`val`和指向下一个节点的指针`next`。然后实现一个成员函数`remove_duplicates`,用于删除链表中所有重复的元素,只保留不重复的元素。cppclassListNode{public:intval;ListNodenext;//构造函数ListNode(intx):val(x),next(nullptr){}//请在此处实现remove_duplicates函数voidremove_duplicates(){//请在此处编写代码}};题目3(10分)请用Java实现一个方法,接收一个整数数组,返回一个新数组,其中包含原数组中所有奇数索引处的元素。例如,输入`[1,2,3,4,5]`,返回`[1,3,5]`。javapublicclassArrayUtils{publicstaticint[]getOddIndexElements(int[]arr){//请在此处编写代码returnnull;}}二、算法与数据结构(5题,每题14分,共70分)题目4(14分)给定一个非负整数数组`nums`和一个整数`target`,请编写一个函数,找出数组中和为目标`target`的两个数,并返回它们的索引。你可以假设每个输入都只有一个解,且不能重复使用同一个元素。pythondeftwo_sum(nums,target):请在此处编写代码pass题目5(14分)请实现一个二叉搜索树(BST)的迭代后序遍历。你可以使用递归或非递归方式实现。python定义二叉树节点classTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefpostorder_traversal(root):请在此处编写代码pass题目6(14分)请实现一个LRU(最近最少使用)缓存。缓存应该支持以下操作:-`LRUCache(intcapacity)`,用容量`capacity`初始化缓存-`get(intkey)`,如果键存在,则返回其值,否则返回-1-`put(intkey,intvalue)`,如果键已存在,则更新其值。如果键不存在,则添加键值对。当缓存容量已满时,删除最久未使用的键。pythonclassLRUCache:def__init__(self,capacity:int):请在此处编写代码passdefget(self,key:int)->int:请在此处编写代码passdefput(self,key:int,value:int)->None:请在此处编写代码pass题目7(14分)请实现一个函数,判断一个字符串是否是另一个字符串的子序列。子序列可以通过删除一些字符而不改变剩余字符的相对顺序得到。pythondefis_subsequence(s:str,t:str)->bool:请在此处编写代码pass题目8(14分)请实现一个函数,给定一个整数`n`,返回`n`的汉诺塔移动方案。你需要从顶部开始,按顺序移动所有盘子。一次只能移动一个盘子,并且在移动过程中,任何大盘子都不可以在小盘子上面。pythondefhanoi(n:int,source:str,auxiliary:str,target:str)->List[str]:请在此处编写代码pass三、系统设计(2题,每题20分,共40分)题目9(20分)设计一个简单的微博系统,需要支持以下功能:1.用户注册和登录2.发布微博(限制长度为280字符)3.关注/取消关注用户4.获取关注用户的最新微博时间线5.获取指定用户的微博请简要描述系统架构,包括主要组件、数据存储方式以及关键接口设计。题目10(20分)设计一个高并发的短链接生成系统。系统需要满足以下要求:1.支持高并发请求2.链接短小且唯一3.支持自定义短链接前缀4.能够快速查找到原始长链接5.具有高可用性和可扩展性请描述系统设计方案,包括数据结构、算法以及部署架构。答案与解析编程基础答案与解析题目1答案pythondefcount_duplicates(s:str)->dict:count={}forcharins:ifcharincount:count[char]+=1else:count[char]=1return{char:cntforchar,cntincount.items()ifcnt>1}解析:使用字典统计每个字符的出现次数,然后筛选出出现次数大于1的字符。时间复杂度为O(n),空间复杂度为O(n)。题目2答案cppclassListNode{public:intval;ListNodenext;ListNode(intx):val(x),next(nullptr){}voidremove_duplicates(){ListNodecurrent=this;while(current!=nullptr){ListNoderunner=current;while(runner->next!=nullptr){if(runner->next->val==current->val){ListNodetemp=runner->next;runner->next=runner->next->next;deletetemp;}else{runner=runner->next;}}current=current->next;}}};解析:使用快慢指针法,当前节点与后续节点比较,如果相同则删除。时间复杂度为O(n^2),空间复杂度为O(1)。题目3答案javapublicclassArrayUtils{publicstaticint[]getOddIndexElements(int[]arr){if(arr==null||arr.length==0){returnnewint[0];}int[]result=newint[arr.length/2+(arr.length%2==0?0:1)];intindex=0;for(inti=0;i<arr.length;i+=2){result[index++]=arr[i];}returnresult;}}解析:遍历数组,将奇数索引处的元素复制到新数组中。时间复杂度为O(n),空间复杂度为O(n)。算法与数据结构答案与解析题目4答案pythondeftwo_sum(nums,target):num_to_index={}fori,numinenumerate(nums):complement=target-numifcomplementinnum_to_index:return[num_to_index[complement],i]num_to_index[num]=ireturn[]解析:使用哈希表记录每个数字及其索引,遍历数组时检查补数是否存在。时间复杂度为O(n),空间复杂度为O(n)。题目5答案pythondefpostorder_traversal(root):ifnotroot:return[]stack=[(root,False)]result=[]whilestack:node,visited=stack.pop()ifnode:ifvisited:result.append(node.val)else:stack.append((node,True))stack.append((node.right,False))stack.append((node.left,False))returnresult解析:使用栈实现非递归后序遍历,先右后左再访问。时间复杂度为O(n),空间复杂度为O(n)。题目6答案pythonclassLRUCache:classNode:def__init__(self,key=0,value=0):self.key=keyself.value=valueself.prev=Noneself.next=Nonedef__init__(self,capacity:int):self.capacity=capacityself.cache={}self.head=self.Node(0,0)self.tail=self.Node(0,0)self.head.next=self.tailself.tail.prev=self.headdefget(self,key:int)->int:ifkeyinself.cache:node=self.cache[key]self._remove(node)self._add(node)returnnode.valuereturn-1defput(self,key:int,value:int)->None:ifkeyinself.cache:self._remove(self.cache[key])node=self.Node(key,value)self.cache[key]=nodeself._add(node)iflen(self.cache)>self.capacity:lru=self.head.nextself._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解析:使用双向链表和哈希表实现LRU缓存。链表头为最近使用,尾为最久未使用。时间复杂度为O(1),空间复杂度为O(capacity)。题目7答案pythondefis_subsequence(s:str,t:str)->bool:ifnots:returnTrueifnott:returnFalses_idx,t_idx=0,0whiles_idx<len(s)andt_idx<len(t):ifs[s_idx]==t[t_idx]:s_idx+=1t_idx+=1returns_idx==len(s)解析:双指针法,遍历t字符串,如果找到s中的字符则移动s指针。时间复杂度为O(m+n),空间复杂度为O(1)。题目8答案pythondefhanoi(n:int,source:str,auxiliary:str,target:str)->List[str]:ifn==1:return[f"Movefrom{source}to{target}"]moves=[]moves.extend(hanoi(n-1,source,target,auxiliary))moves.append(f"Movefrom{source}to{target}")moves.extend(hanoi(n-1,auxiliary,source,target))returnmoves解析:递归解法,先将n-1个盘子从源移动到辅助,然后移动最大盘子,再将n-1个盘子从辅助移动到目标。时间复杂度为O(2^n),空间复杂度为O(n)。系统设计答案与解析题目9答案系统架构1.主要组件:-用户服务:处理用户注册、登录、个人信息管理-微博服务:处理微博发布、获取、编辑、删除-关注服务:处理关注/取消关注关系-消息队列:处理异步任务,如通知-缓存:Redis缓存热点数据2.数据存储:-用户信息:MySQL,索引用户ID-微博数据:MySQL,索引微博ID、用户ID、发布时间-关注关系:Redis哈希表,键为用户ID,值为关注列表-热点数据:Redis有序集合,按发布时间排序3.关键接口:-用户登录:POST/login,返回token-发布微博:POST/tweets,参数:内容、图片等-获取时间线:GET/timeline,参数:用户ID、页码-关注用户:POST/follow/{user
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药房三基培训与考核制度
- 河北企业管理培训制度
- 钢琴培训卫生制度
- 新人员培训管理制度
- 公司培训标准化管理制度
- 医院继教培训制度
- 急诊科医务人员培训制度
- 岗位职责及培训考核制度
- 商务局干部培训制度
- 班干部培训工作制度
- 04S519小型排水构筑物1
- 光纤激光打标机说明书
- 劳动者个人职业健康监护档案
- 《两角和与差的正弦、余弦、正切公式》示范公开课教学PPT课件【高中数学人教版】
- 治理现代化下的高校合同管理
- 境外宗教渗透与云南边疆民族地区意识形态安全研究
- GB/T 28920-2012教学实验用危险固体、液体的使用与保管
- GB/T 26389-2011衡器产品型号编制方法
- GB/T 16588-2009带传动工业用多楔带与带轮PH、PJ、PK、PL和PM型:尺寸
- 人大企业经济学考研真题-802经济学综合历年真题重点
- 建筑抗震鉴定标准课件
评论
0/150
提交评论