版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年软件工程师面试笔试题编程语言及算法应用方向一、编程语言基础(3题,每题10分,共30分)考察目标:数据类型、运算符、控制流、函数、面向对象基础(Java/Python/JavaScript任选其一)。题目1(10分):题目:请用Java/Python/JavaScript实现一个简单的计算器类,支持加、减、乘、除四种运算。要求:1.类名自定,方法名为`calculate`,参数为两个`double`类型数字和一个`char`类型运算符。2.若运算符无效或除数为0,抛出异常(Java)或返回错误信息(Python/JavaScript)。3.输入示例:`calculate(10,5,'+')`应返回`15.0`,`calculate(10,0,'/')`应抛出异常。题目2(10分):题目:用所选语言实现一个函数/方法,接收一个字符串,返回该字符串中出现频率最高的字符及其出现次数。若多个字符频率相同,返回第一个遇到的字符。示例:`topFrequency("hello")`应返回`('l',2)`。题目3(10分):题目:实现一个简单的单例模式(选择饿汉或懒汉实现),确保全局只有一个实例。测试用例:创建两个实例,验证是否为同一对象。二、数据结构与算法(5题,每题14分,共70分)考察目标:数组、链表、栈、队列、哈希表、树、排序、查找。题目4(14分):题目:给定一个包含重复数字的数组,返回所有不重复的三元组,使得三元组内数字之和等于目标值。示例:输入`[1,-1,0,1,2]`,目标值`0`,返回`[[-1,0,1],[-1,-1,2]]`。要求:时间复杂度O(n²)。题目5(14分):题目:设计一个LRU(最近最少使用)缓存,支持`get`和`put`操作。缓存容量为固定值`capacity`。示例:pythonlru=LRUCache(2)lru.put(1,1)#缓存是{1:1}lru.put(2,2)#缓存是{1:1,2:2}lru.get(1)#返回1lru.put(3,3)#去除键2,缓存是{1:1,3:3}lru.get(2)#返回-1(未找到)要求:使用哈希表+双向链表实现。题目6(14分):题目:给定一个二叉搜索树,返回其“中序遍历”的“下一个”节点(中序遍历的下一个节点)。假设所有节点值唯一。示例:5/\37/\/\2468中序遍历:2,3,4,5,6,7,8。若节点为`5`,返回`6`;若节点为`8`,返回`-1`。题目7(14分):题目:实现快速排序算法,要求:1.使用“三数取中”法选择基准。2.处理递归栈溢出的情况(如使用尾递归优化)。3.对`[4,1,3,9,7,2,5]`进行排序,输出`[1,2,3,4,5,7,9]`。题目8(14分):题目:给定一个字符串,判断是否是有效的括号字符串(只含`(`,`)`,`{}`,`[]`,`<>`)。示例:`"({[]})"`有效,`"({[})"`无效。要求:使用栈实现,时间复杂度O(n)。三、系统设计与工程(2题,每题13分,共26分)考察目标:分布式系统、数据库、缓存、负载均衡。题目9(13分):题目:设计一个高并发的短链接生成服务。要求:1.输入任意URL,返回固定长度的短链接(如`/a1b2c3`)。2.支持高并发访问(如QPS10万+)。3.提供至少两种实现方案的简要说明(如数据库自增ID+编码,或分布式ID生成器)。题目10(13分):题目:为高并发电商系统设计商品秒杀功能,要求:1.防止超卖和重复购买。2.说明至少两种技术方案(如数据库乐观锁、RedisLua脚本)。3.分析各自优缺点及适用场景。答案与解析一、编程语言基础题目1答案(Java示例):javapublicclassSimpleCalculator{publicdoublecalculate(doublea,doubleb,charoperator)throwsIllegalArgumentException{switch(operator){case'+':returna+b;case'-':returna-b;case'':returnab;case'/':if(b==0)thrownewIllegalArgumentException("Divisionbyzero");returna/b;default:thrownewIllegalArgumentException("Invalidoperator:"+operator);}}publicstaticvoidmain(String[]args){SimpleCalculatorcalc=newSimpleCalculator();try{System.out.println(calc.calculate(10,5,'+'));//15.0System.out.println(calc.calculate(10,0,'/'));//抛出异常}catch(IllegalArgumentExceptione){System.out.println(e.getMessage());}}}解析:1.使用`switch`处理运算符,覆盖所有情况。2.除法时检查除数是否为0,若为0则抛出`IllegalArgumentException`。3.其他无效运算符也抛出异常,符合Java异常处理规范。题目2答案(Python示例):pythonfromcollectionsimportCounterdeftopFrequency(s):freq=Counter(s)max_char=max(freq,key=freq.get)return(max_char,freq[max_char])print(topFrequency("hello"))#('l',2)解析:1.`Counter`统计字符频率。2.`max`函数通过`key=freq.get`找到频率最大的字符。3.返回元组形式,符合题目要求。题目3答案(Java懒汉单例):javapublicclassSingleton{privatestaticSingletoninstance;privateSingleton(){}publicstaticSingletongetInstance(){if(instance==null){instance=newSingleton();}returninstance;}publicstaticvoidmain(String[]args){Singletona=Singleton.getInstance();Singletonb=Singleton.getInstance();System.out.println(a==b);//true}}解析:1.双向检查锁定(DCL)实现懒加载。2.`instance`为私有静态变量,确保全局唯一。3.静态方法获取实例,线程安全(需补充volatile关键字)。二、数据结构与算法题目4答案(Python):pythondefthreeSum(nums,target):nums.sort()n=len(nums)res=[]foriinrange(n-2):ifi>0andnums[i]==nums[i-1]:continueleft,right=i+1,n-1whileleft<right:total=nums[i]+nums[left]+nums[right]iftotal==target:res.append([nums[i],nums[left],nums[right]])whileleft<rightandnums[left]==nums[left+1]:left+=1whileleft<rightandnums[right]==nums[right-1]:right-=1left+=1;right-=1eliftotal<target:left+=1else:right-=1returnresprint(threeSum([1,-1,0,1,2],0))#[[-1,0,1],[-1,-1,2]]解析:1.先排序,固定第一个数,双指针遍历剩余部分。2.跳过重复数字避免重复三元组。3.时间复杂度O(n²),空间复杂度O(1)(若不计输出)。题目5答案(JavaScript):javascriptclassLRUCache{constructor(capacity){this.capacity=capacity;this.map=newMap();this.head=newNode(0,0);this.tail=newNode(0,0);this.head.next=this.tail;this.tail.prev=this.head;}get(key){if(!this.map.has(key))return-1;constnode=this.map.get(key);this.remove(node);this.add(node);returnnode.value;}put(key,value){if(this.map.has(key)){this.remove(this.map.get(key));}constnode=newNode(key,value);this.map.set(key,node);this.add(node);if(this.map.size>this.capacity){constlru=this.tail.prev;this.remove(lru);this.map.delete(lru.key);}}add(node){node.next=this.head.next;node.prev=this.head;this.head.next.prev=node;this.head.next=node;}remove(node){node.prev.next=node.next;node.next.prev=node.prev;}}classNode{constructor(key,value){this.key=key;this.value=value;this.prev=null;this.next=null;}}解析:1.使用`Map`实现O(1)查找,`Node`双向链表维护顺序。2.`get`时移动节点到头部,`put`时先删除旧节点再添加。3.超过容量时删除尾节点。题目6答案(Java):javaclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intx){val=x;}}publicTreeNodeinorderSuccessor(TreeNoderoot,TreeNodetarget){if(root==null)returnnull;TreeNodesuccessor=null;while(root!=null){if(target.val<root.val){successor=root;root=root.left;}else{root=root.right;}}returnsuccessor;}解析:1.中序遍历的下一个节点是右子树的最左节点。2.若目标节点有右子树,则该子树的最左节点即为后继。3.无右子树时,向上遍历父节点直到找到左子树节点。题目7答案(Python):pythondefquickSort(arr):defpartition(low,high):mid=(low+high)//2pivot=sorted([arr[low],arr[mid],arr[high]])[1]arr[low],arr[arr.index(pivot)]=arr[arr.index(pivot)],arr[low]pivot=arr[low]i,j=low+1,highwhileTrue:whilei<=jandarr[i]<=pivot:i+=1whilei<=jandarr[j]>=pivot:j-=1ifi<=j:arr[i],arr[j]=arr[j],arr[i]else:breakarr[low],arr[j]=arr[j],arr[low]returnjdefquickSortRec(low,high):iflow<high:mid=partition(low,high)quickSortRec(low,mid-1)quickSortRec(mid+1,high)quickSortRec(0,len(arr)-1)returnarrprint(quickSort([4,1,3,9,7,2,5]))#[1,2,3,4,5,7,9]解析:1.“三数取中”选择基准,避免极端输入性能下降。2.尾递归优化:先处理较小的子区间。3.时间复杂度O(nlogn),最坏O(n²)。题目8答案(Python):pythondefisValid(s):stack=[]mapping={')':'(','}':'{',']':'[','>':'<'}forcins:ifcinmapping.values():stack.append(c)elifcinmapping:ifnotstackormapping[c]!=st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026山东华宇工学院博士人才招聘考试参考题库及答案解析
- 2025年汕头卫生事业单位考试及答案
- 2025年杭州在职教师事业编考试及答案
- 2025年洛师竞选团员笔试及答案
- 2025年事业编学校后勤考试笔试及答案
- 2026年金属材料的晶体结构与力学性能关系
- 2026陕西西北工业大学飞行器动力润滑系统研究团队招聘2人笔试模拟试题及答案解析
- 2026年施工现场职业病与安全事故案例分析
- 2026年黑金色汇聚年度总结的深度思考
- 2026年工程地质勘察的风险管理策略
- UCL介绍教学课件
- 广东省衡水金卷2025-2026学年高三上学期12月联考物理试题(含答案)
- 扁鹊凹凸脉法课件
- 2026年开封大学单招职业适应性测试题库及完整答案详解1套
- 北京市2025北京市体育设施管理中心应届毕业生招聘2人笔试历年参考题库典型考点附带答案详解(3卷合一)2套试卷
- 建筑施工现场材料采购流程
- DB31∕T 1234-2020 城市森林碳汇计量监测技术规程
- 园林绿化施工工艺及注意事项
- 2025年高中语文必修上册《登泰山记》文言文对比阅读训练(含答案)
- 2025年金蝶AI苍穹平台新一代企业级AI平台报告-
- 2026届山东菏泽一中高三化学第一学期期末达标测试试题含解析
评论
0/150
提交评论