(2026校招)软件工程师招聘笔试试题及答案_第1页
(2026校招)软件工程师招聘笔试试题及答案_第2页
(2026校招)软件工程师招聘笔试试题及答案_第3页
(2026校招)软件工程师招聘笔试试题及答案_第4页
(2026校招)软件工程师招聘笔试试题及答案_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(2026校招)软件工程师招聘笔试试题及答案题型说明本次笔试满分为100分,考试时间120分钟,共分为5个模块:单项选择题(15题,每题2分,共30分)、多项选择题(5题,每题2分,共10分)、填空题(10题,每题1分,共10分)、编程题(3题,每题10分,共30分)、系统设计与场景题(2题,每题10分,共20分)。一、单项选择题1.某CPU采用4级流水线设计,流水线阶段分别为取指、译码、执行、写回,每个阶段耗时均为1ns,若连续执行100条指令,总耗时为()A.100nsB.103nsC.104nsD.400ns2.某系统中有3个并发进程,每个进程都需要4个同类独占资源,为保证系统不发生死锁,最少需要配置的资源总数为()A.9B.10C.11D.123.TCP三次握手过程中,若第三次握手的ACK报文丢失,服务端将处于什么状态()A.LISTENB.SYN-SENTC.SYN-RCVDD.ESTABLISHED4.HTTP3协议的底层传输层协议为()A.TCPB.UDPC.ICMPD.QUIC5.以下MySQL索引设计的描述中,正确的是()A.性别等区分度极低的字段适合建立B+树索引B.更新频率极高的字段适合建立索引C.区分度高、查询频率高的字段适合建立索引D.长度超过2000字节的文本字段适合建立普通索引6.Java虚拟机内存模型中,属于线程私有区域的是()A.堆B.方法区C.程序计数器D.字符串常量池7.以下关于CPython全局解释器锁(GIL)的描述中,正确的是()A.GIL会导致多线程无法利用多核CPU的计算资源B.GIL存在于所有Python解释器实现中C.IO密集型任务使用多线程会因为GIL导致性能大幅下降D.加GIL的主要目的是提升Python的并发性能8.以下关于Redis持久化机制的描述中,错误的是()A.RDB是二进制快照文件,适合做冷备份B.AOF文件记录所有写操作指令,恢复速度比RDB更快C.混合持久化结合了RDB和AOF的优势,是Redis4.0之后支持的特性D.AOF的刷盘策略可以配置为每秒刷盘、每次写操作刷盘或者操作系统自动刷盘9.以下微服务注册中心组件中,默认属于AP(可用性+分区容错性)模型的是()A.ZookeeperB.ConsulC.EurekaD.Nacos默认模式10.以下Git命令中,可以撤销工作区未暂存的修改的是()A.gitresetHEAD<file>B.gitcheckout--<file>C.gitcommit--amendD.gitrevert11.以下排序算法中,属于不稳定排序的是()A.冒泡排序B.插入排序C.快速排序D.归并排序12.十进制数值2026转换为十六进制的结果为()A.7EAB.7E2C.8EAD.8E213.ServiceMesh(服务网格)的核心数据面组件是()A.控制平面B.边车代理(Sidecar)C.网关D.注册中心14.以下大模型辅助代码开发的实践中,属于最佳实践的是()A.不提供上下文直接要求大模型生成全量业务代码B.明确说明输入输出约束、边界条件、技术栈要求和性能指标后再生成代码C.大模型生成的代码不需要测试直接上线D.完全依赖大模型排查复杂线上问题15.以下防范SQL注入的手段中,错误的是()A.使用预编译SQL语句B.对用户输入的特殊字符做过滤转义C.直接将用户输入拼接进SQL语句D.使用成熟的ORM框架操作数据库二、多项选择题(多选、少选、错选均不得分)16.以下属于进程间通信(IPC)方式的有()A.管道B.消息队列C.共享内存D.信号量E.线程局部存储17.MySQL事务的ACID特性包括()A.原子性B.一致性C.隔离性D.持久性E.并发性18.分布式系统CAP理论的三个核心特性包括()A.一致性B.可用性C.分区容错性D.持久性E.原子性19.前端框架(React/Vue)中虚拟DOM的优势包括()A.减少直接操作DOM的次数,提升复杂页面的渲染性能B.支持跨平台渲染,适配Web、小程序、客户端等多端场景C.所有场景下的渲染性能都高于原生操作DOMD.方便实现状态与视图的自动同步,降低开发复杂度20.以下属于Go语言原生特性的有()A.天生支持轻量级协程(Goroutine)B.无类和继承的面向对象设计C.支持自动垃圾回收D.编译为原生机器码直接运行E.支持函数作为一等公民,可作为参数传递和返回值三、填空题21.操作系统中将逻辑地址转换为物理地址的过程称为____。22.HTTPS协议在传输层和应用层之间加入的安全层是____。23.MySQL中用于支持事务回滚、实现MVCC的核心日志是____。24.Redis中实现分布式锁的核心原子命令是____。25.计算机网络OSI七层模型的最顶层是____。26.Python异步编程中用于定义异步函数、等待异步任务执行的核心关键字是____。27.Kubernetes集群中最小的调度和管理单元是____。28.时间复杂度为O(nlogn)的经典排序算法有____(写出任意一种即可)。29.Java中实现多线程的三种核心方式为:继承Thread类、实现Runnable接口、____。30.大模型应用开发中,通过召回外部知识库内容补充Prompt上下文,提升回答准确性的技术是____。四、编程题31.给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的两个整数,并返回它们的数组下标。要求:每种输入只会对应一个答案,数组中同一个元素不能在答案中重复出现,可按任意顺序返回答案,时间复杂度不高于O(n)。示例1:输入:nums=[2,7,11,15],target=9输出:[0,1]示例2:输入:nums=[3,2,4],target=6输出:[1,2]示例3:输入:nums=[3,3],target=6输出:[0,1]32.给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效规则:1.左括号必须用相同类型的右括号闭合;2.左括号必须以正确的顺序闭合;3.每个右括号都有对应的相同类型的左括号。要求时间复杂度O(n),空间复杂度O(n)。示例1:输入:s="()"输出:true示例2:输入:s="()[]{}"输出:true示例3:输入:s="(]"输出:false示例4:输入:s="([)]"输出:false示例5:输入:s="{[]}"输出:true33.给定一个按照升序排列的整数数组nums和一个目标值target,找出目标值在数组中的开始位置和结束位置。如果数组中不存在目标值,返回[-1,-1]。要求必须实现时间复杂度为O(logn)的算法。示例1:输入:nums=[5,7,7,8,8,10],target=8输出:[3,4]示例2:输入:nums=[5,7,7,8,8,10],target=6输出:[-1,-1]示例3:输入:nums=[],target=0输出:[-1,-1]五、系统设计与场景题34.某电商平台要上线商品秒杀活动,预计活动开始后每秒会产生10万次针对同一款商品的秒杀请求,该商品库存仅为100件。请设计该秒杀系统的核心架构,说明核心优化点,同时说明如何避免超卖、拦截恶意请求。(10分)35.某企业需要搭建内部大模型知识库问答系统,供全体员工查询内部规章制度、项目文档、产品手册等内容,要求回答准确率不低于95%,单次请求响应时间不超过2秒,支持1000人同时在线使用。请设计该系统的核心架构,说明核心组件的作用,以及准确率和性能的优化方案。(10分)参考答案一、单项选择题答案1.B2.B3.C4.D5.C6.C7.A8.B9.C10.B11.C12.A13.B14.B15.C>解析:第1题:流水线总耗时=单条指令耗时+(指令数-1)*单阶段耗时=4ns+99*1ns=103ns;第2题:死锁临界点为每个进程获取3个资源,共3*3=9个,新增1个资源即可让1个进程执行完成释放资源,因此最少需要10个;第4题:HTTP3基于QUIC协议,QUIC底层基于UDP实现;第8题:RDB是二进制快照,恢复速度远快于AOF。二、多项选择题答案16.ABCD17.ABCD18.ABC19.ABD20.ABCDE>解析:第19题:简单页面直接操作DOM性能高于虚拟DOM,C错误;其余选项均为Go语言原生特性。三、填空题答案21.地址重定位(地址映射)22.TLS(传输层安全协议,或SSL均可)23.undolog(回滚日志)24.SETNX(或SETkeyvalueNXEX过期时间均可)25.应用层26.async/await27.Pod28.归并排序/快速排序/堆排序(任意一种即可)29.实现Callable接口配合FutureTask30.RAG(检索增强生成)四、编程题参考答案31题解题思路:使用哈希表存储已遍历元素与对应下标,遍历过程中判断`target-当前元素`是否存在于哈希表中,存在则直接返回下标对,否则将当前元素存入哈希表,时间复杂度O(n),空间复杂度O(n)。Python实现:```pythonfromtypingimportListdeftwoSum(nums:List[int],target:int)->List[int]:hash_map={}foridx,numinenumerate(nums):iftarget-numinhash_map:return[hash_map[target-num],idx]hash_map[num]=idxreturn[]```Java实现:```javaimportjava.util.HashMap;importjava.util.Map;classSolution{publicint[]twoSum(int[]nums,inttarget){Map<Integer,Integer>map=newHashMap<>();for(inti=0;i<nums.length;i++){if(map.containsKey(target-nums[i])){returnnewint[]{map.get(target-nums[i]),i};}map.put(nums[i],i);}returnnewint[0];}}```>评分标准:时间复杂度符合要求得4分,边界条件处理正确得3分,代码规范无语法错误得3分。32题解题思路:使用栈结构存储预期匹配的右括号,遍历字符串时遇到左括号则入栈对应的右括号,遇到右括号则判断栈是否为空或栈顶元素与当前右括号是否匹配,不匹配直接返回false,遍历结束后判断栈是否为空即可。Python实现:```pythondefisValid(s:str)->bool:stack=[]bracket_map={'(':')','{':'}','[':']'}forcins:ifcinbracket_map:stack.append(bracket_map[c])else:ifnotstackorstack.pop()!=c:returnFalsereturnlen(stack)==0```Java实现:```javaimportjava.util.Deque;importjava.util.HashMap;importjava.util.LinkedList;importjava.util.Map;classSolution{publicbooleanisValid(Strings){Deque<Character>stack=newLinkedList<>();Map<Character,Character>map=newHashMap<>();map.put('(',')');map.put('{','}');map.put('[',']');for(charc:s.toCharArray()){if(map.containsKey(c)){stack.push(map.get(c));}else{}}}returnstack.isEmpty();}}```>评分标准:栈结构使用正确得3分,括号映射关系正确得2分,边界条件处理正确得3分,代码规范得2分。33题解题思路:利用数组升序的特性,通过两次二分查找分别定位左边界和右边界:查找左边界时,当中间值>=目标值则收缩右边界,否则收缩左边界;查找右边界时,当中间值<=目标值则收缩左边界,否则收缩右边界,最终校验边界值是否等于目标值即可。Python实现:```pythonfromtypingimportListdefsearchRange(nums:List[int],target:int)->List[int]:deffind_left():left,right=0,len(nums)-1whileleft<=right:mid=(left+right)//2ifnums[mid]>=target:right=mid-1else:left=mid+1returnleftifleft<len(nums)andnums[left]==targetelse-1deffind_right():left,right=0,len(nums)-1whileleft<=right:mid=(left+right)//2ifnums[mid]<=target:left=mid+1else:right=mid-1returnrightifright>=0andnums[right]==targetelse-1left=find_left()return[-1,-1]ifleft==-1else[left,find_right()]```Java实现:```javaclassSolution{publicint[]searchRange(int[]nums,inttarget){intleft=findLeft(nums,target);if(left==-1)returnnewint[]{-1,-1};returnnewint[]{left,findRight(nums,target)};}privateintfindLeft(int[]nums,inttarget){intleft=0,right=nums.length-1;while(left<=right){intmid=left+(right-left)/2;if(nums[mid]>=target)right=mid-1;elseleft=mid+1;}returnleft<nums.length&&nums[left]==target?left:-1;}privateintfindRight(int[]nums,inttarget){intleft=0,right=nums.length-1;while(left<=right){intmid=left+(right-left)/2;if(nums[mid]<=target)left=mid+1;elseright=mid-1;}returnright>=0&&nums[right]==target?right:-1;}}```>评分标准:二分查找逻辑正确得4分,左右边界判断条件正确得3分,边界处理正确得2分,代码规范得1分。五、系统设计与场景题参考答案34题参考答案:核心架构与优化点:1.前端与CDN层:将秒杀活动页静态化后缓存到CDN节点,前端设置按钮点击冷却(3秒内不可重复点击)、滑块验证码,拦截无效请求和机器请求,减少90%以上的无效流量。2.接入层:Nginx做负载均衡,配置IP限流(单个IP每秒最多请求10次),WAF防火墙拦截恶意IP和异常请求,同时对接入请求做身份校验,只有登录用户携带有效token才能访问秒杀接口。3.服务层:①预热缓存:活动开始前将商品库存、活动状态缓存到Redis,请求首先判断活动是否已开始,未开始直接返回;②原子扣库存:使用Redis的`DECRBY`原子命令扣减库存,只有扣减结果>=0的请求才视为秒杀成功,从根源上避免超卖;③资源隔离:秒杀服务单独部署,不与其他业务共用资源,避免秒杀流量影响正常业务;④削峰填谷:扣减库存成功后,将订单创建请求发送到RocketMQ/Kafka消息队列,异步处理订单创建、支付通知等流程,直接返回用户秒杀成功,大幅提升系统吞吐量。4.数据层:订单库做分库分表,避免单库单表性能瓶颈,同时配置定时任务定期核对Redis库存与数据库库存的一致性,若订单创建失败则回写Redis库存,保证数据最终一致性。超卖防范:完全依托Redis单线程原子操作扣减库存,禁止直接操作数据库扣减库存,同时创建订单时新增数据库库存兜底校验,双重保障不会出现超卖。恶意请求防范:①接口参数加入签名校验,防止请求被篡改;②基于用户ID限流,单个用户每秒最多请求1次,单个用户仅能秒杀1件商品;③高频请求用户自动加入黑名单,禁止参与活动。>评分标准:覆盖CDN/前端限流、Redis缓存、原子扣库存、消息队列削峰、防超卖、防恶意请求核心点每点1分,逻辑清晰合理得2分,满分10分。35题参考答案:核心架构分为四层:1.数据处理层:①文档接入模块:支持Word/PDF/Markdown等多格式文档上传,同时对接Con

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论