版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年软件开发工程师秋招题库及答案一、单项选择题(每题2分,共20分)1.在Linux系统中,查看当前目录下所有隐藏文件的命令是A.ls-a B.ls-l C.ls-h D.ls-d答案:A解析:-a参数会列出以“.”开头的隐藏文件。2.下列关于TCP与UDP的描述正确的是A.TCP提供无连接服务 B.UDP保证数据按序到达C.TCP头部固定8字节 D.UDP支持广播答案:D解析:UDP无连接、支持广播,TCP面向连接、头部20字节起。3.在MySQL中,事务隔离级别“可重复读”解决的现象是A.脏读 B.不可重复读 C.幻读 D.丢失更新答案:B解析:可重复读通过MVCC保证同一事务内多次读取结果一致,解决不可重复读。4.以下Java代码片段输出结果为```javainta=0;for(inti=0;i<100;i++){a=a++;}System.out.println(a);```A.100 B.0 C.99 D.编译错误答案:B解析:a++先返回原值再自增,赋值回a的是旧值,因此循环后a仍为0。5.Redis中用于实现分布式锁常用的命令是A.SETNX B.LPUSH C.HSET D.ZADD答案:A解析:SETNX(SETifNoteXists)原子性检查并设置,适合锁。6.在ReactHooks中,用于模拟componentDidMount的Hook是A.useState B.useEffect空依赖 C.useRef D.useContext答案:B解析:useEffect第二个参数为[]时仅执行一次,等价于componentDidMount。7.下列算法中,最坏时间复杂度为O(nlogn)的是A.冒泡排序 B.归并排序 C.快速排序(已退化) D.插入排序答案:B解析:归并排序始终O(nlogn),快速排序退化后O(n²)。8.在Git中,将暂存区文件恢复至工作区且保留改动的命令是A.gitresetHEAD B.gitcheckout-<file>C.gitrestore--staged<file> D.gitclean-fd答案:C解析:gitrestore--staged把文件从暂存区撤出,工作区改动保留。9.关于CAP理论,当网络分区发生时,系统必须在以下两者间选择A.一致性与可用性 B.一致性与分区容错C.可用性与分区容错 D.一致性与延迟答案:A解析:分区容错必须保证,只剩C与A权衡。10.在Kubernetes中,用于暴露Pod稳定网络访问的资源对象是A.Deployment B.Service C.Ingress D.ConfigMap答案:B解析:Service通过ClusterIP/NodePort等提供稳定访问端点。二、不定项选择题(每题3分,共15分)11.以下哪些HTTP状态码表示客户端错误A.301 B.400 C.403 D.500 E.418答案:B、C、E解析:4xx系列为客户端错误,418是IETF愚人节玩笑但仍属4xx。12.关于Java垃圾回收,正确的是A.年轻代采用复制算法 B.G1回收器可设置最大停顿时间C.System.gc()立即触发FullGC D.永久代在JDK8后改为元空间E.对象首次分配一定在Eden区答案:A、B、D、E解析:System.gc()只是建议,JVM可拒绝。13.下列属于进程间通信方式的有A.信号量 B.Socket C.管道 D.共享内存 E.线程互斥锁答案:A、B、C、D解析:线程互斥锁用于线程同步,非进程间。14.在CSS中,可让元素脱离文档流的方法有A.position:fixed B.float:left C.display:flexD.position:absolute E.overflow:hidden答案:A、B、D解析:flex容器本身不脱离,子项可能脱离;overflow仅裁剪。15.以下关于SpringBean生命周期的说法正确的是A.单例Bean默认预加载 B.可通过@Lazy延迟加载C.自定义销毁方法可用@PreDestroy D.prototypeBean由容器负责销毁E.BeanPostProcessor可在初始化前后介入答案:A、B、C、E解析:prototypeBean销毁归调用方,容器不跟踪。三、填空题(每空2分,共20分)16.在Python中,使用________关键字可以捕获所有异常基类。答案:Exception17.数据库索引采用B+树而非哈希的主要原因是支持________查询。答案:范围18.Linux系统调用________用于将修改过的文件页立即刷入磁盘。答案:fsync19.在Go语言中,channel的默认零值是________。答案:nil20.TCP三次握手过程中,客户端发送的第二个报文段标志位为________。答案:SYN+ACK21.在Dockerfile中,指令________用于声明运行时监听的端口,仅作说明。答案:EXPOSE22.算法题:给定数组nums,求乘积最大连续子数组,状态转移方程为dp[i]=max(nums[i],dp[i-1]nums[i],________)。22.算法题:给定数组nums,求乘积最大连续子数组,状态转移方程为dp[i]=max(nums[i],dp[i-1]nums[i],________)。答案:nums[i]minPrev(需维护minPrev)答案:nums[i]minPrev(需维护minPrev)23.在React中,调用setState传入函数而非对象的好处是可避免________状态。答案:异步合并24.在MySQL中,查看慢查询日志是否开启的命令是SHOWVARIABLESLIKE'________';答案:slow_query_log25.在Git合并分支时,若希望生成一条新提交保留历史分支信息,应使用________策略。答案:--no-ff四、算法与程序设计题(共45分)26.(10分)最长无重复子串给定字符串s,返回不重复字符的最长子串长度。示例:输入"abcabcbb",输出3。要求:O(n)时间,O(∑)空间,∑为字符集大小。答案:```javapublicintlengthOfLongestSubstring(Strings){int[]map=newint[128];Arrays.fill(map,-1);intleft=0,max=0;for(intright=0;right<s.length();right++){charc=s.charAt(right);if(map[c]>=left)left=map[c]+1;map[c]=right;max=Math.max(max,rightleft+1);}returnmax;}```解析:滑动窗口+数组哈希,128覆盖ASCII。27.(12分)合并K个升序链表给出链表数组lists,每个链表升序,合并后仍升序。要求:时间O(Nlogk),空间O(1)(不含结果)。答案:```pythonimportheapqclassListNode:def__init__(self,val=0,nxt=None):self.val,self.next=val,nxtdef__lt__(self,other):returnself.val<other.valdefmergeKLists(lists):heap=[nodefornodeinlistsifnode]heapq.heapify(heap)dummy=cur=ListNode()whileheap:node=heapq.heappop(heap)cur.next=nodecur=cur.nextifnode.next:heapq.heappush(heap,node.next)returndummy.next```解析:最小堆维护k个头指针,每次弹出最小节点。28.(13分)分布式限流器设计设计一个基于Redis的滑动窗口限流器,限制某用户每分钟最多请求N次。要求:1.支持多节点部署无竞态;2.内存占用不随时间增长;3.提供Java调用示例。答案:采用RedisLua脚本保证原子性,key格式为`rate:uid:MMddHHmm`,每分钟一个桶。Lua脚本:```lualocalkey=KEYS[1]locallimit=tonumber(ARGV[1])localcurr=redis.call('INCR',key)ifcurr==1thenredis.call('EXPIRE',key,60)endifcurr>limitthenreturn0elsereturn1end```Java封装:```javapublicbooleantryAcquire(Stringuid,intlimit){Stringkey="rate:"+uid+":"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("MMddHHmm"));Longres=(Long)redisTemplate.execute(rateLimitScript,Collections.singletonList(key),String.valueOf(limit));returnres!=null&&res==1;}```解析:每分钟自动过期,内存恒定;INCR+EXPIRE原子性由Lua保证。29.(10分)高并发库存扣减商品库存表item(id,stock),高并发下避免超卖。要求:1.不依赖悲观锁;2.支持热点商品;3.写SQL与Java核心代码。答案:采用乐观锁+版本号,或Redis预扣。SQL:```sqlUPDATEitemSETstock=stock1WHEREid=123ANDstock>0;```若返回影响行数为1则成功,否则重试。Java层使用Redis预扣:```javaLongremain=redisTemplate.opsForValue().decrement("stock:123");if(remain<0){redisTemplate.opsForValue().increment("stock:123");thrownewSoldOutException();}//异步写DB,消息队列保证最终一致```解析:Redis单线程decrement原子,失败回滚;DB异步批量更新,避免行锁热点。五、系统设计题(共30分)30.(30分)设计“千万级用户实时弹幕系统”背景:直播房间峰值在线500万,每秒弹幕量10万条,需支持实时推送、敏感词过滤、用户禁言、按房间隔离。要求:1.给出整体架构图(文字描述即可);2.说明消息上行与下行路径;3.阐述削峰、缓存、降级策略;4.评估存储容量并给出选型;5.提供核心表结构与关键代码片段。答案:架构:边缘层:WS长连接网关集群,基于Netty,4L7负载均衡;消息层:KafkaTopic按roomId哈希分区,分区数=1000;逻辑层:微服务(Go)消费Kafka,调用敏感词服务(AC自动机+Trie),写RedisList缓存最新200条,同时推送给WS网关;存储层:MySQL归档+TiDB分析,冷热分离;降级:网关本地缓存最近5秒弹幕,Kafka堆积超阈值则丢弃非VIP消息。上行路径:用户APP→边缘WS网关→KafkaProducer异步批量→逻辑服务→敏感词过滤→写Redis并广播→网关推送。下行路径:用户进入房间→网关拉取Redis历史200条→实时订阅Kafka消费组→WebSocket推流。削峰:Kafka批量攒消息200ms或64KB刷盘;令牌桶限流按用户等级:普通20条/分钟,VIP100条/分钟;突刺场景触发熔断,网关直接返回“弹幕繁忙”。缓存:RedisList结构,key=room:rid:bullet,value=JSON列表,设置TTL=1h;本地Caffeine缓存热门房间弹幕,命中率>90%。存储容量:单条弹幕≈200B(含用户ID、时间、内容、房间ID),日活1000万,人均发20条,日增量=200B×2亿=40GB;冷热分离,7天热数据存MySQL,90天冷数据存OSS,压缩后≈1TB/年。核心表:```sqlCREATETABLEbullet(idBIGINTPRIMARYKEYAUTO_INCREMENT,room_idBIGINTNOTNULL,user_idBIGINTNOTNULL,contentVARCHAR(200)NOTNULL,tsDATETIME(3)NOTNULL,INDEXidx_room_ts(room_id,ts))PARTITIONBYHASH(room_id)PARTITIONS100;```Go代码片段:```gofuncFilterAndStore(msg[]byte)error{varbBulletjson.Unmarshal(msg,&b)ifsensitive.Hit(b.Content){returnnil}pipe:=redis.Client.Pipeline()pipe.LPush(ctx,fmt.Sprintf("room:%d:bullet",b.RoomID),msg)pipe.LTrim(ctx,fmt.Sprintf("room:%d:bullet",b.RoomID),0,199)pipe.Expire(ctx,fmt.Sprintf("room:%d:bullet",b.RoomID),time.Hour)_,err:=pipe.Exec(ctx)returnerr}```WebSocket推送:```gofunc(cClient)push(){func(cClient)push(){ticker:=time.NewTicker(50time.Millisecond)ticker:=time.NewTicker(50time.Millisecond)deferticker.Stop()for{select{case<-c.done:returncase<-ticker.C:msgs:=redis.LRange(ctx,fmt.Sprintf("room:%d:bullet",c.roomID),0,-1).Val()for_,m:=rangemsgs{c.conn.WriteMessage(websocket.TextMessage,[]byte(m))}}}}```解析:通过Kafka解耦,Redis缓存热点,MySQL分区归档,支持水平扩展;敏感词服务独立,可动态更新词库;网关无状态,扩容秒级完成。六、编程填空题(每空3分,共15分)31.补全快速排序分区函数:```cintpartition(inta,intl,intr){intpartition(inta,intl,intr){intpivot=a[r],i=l;for(i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 市政道路工程开工报告
- 希望工程数字电影院线公益项目需求调查报告
- 项目机械临时电管理员安全生产职责培训
- SPE合并HELLP综合征个案护理
- 软化操作工职责培训课件
- 刮板机检修制度培训课件
- 外来施工单位及人员职业危害管理制度培训
- 2026年广西信息职业技术学院单招职业倾向性考试题库带答案详解(精练)
- 2026年广东交通职业技术学院单招职业适应性测试题库附答案详解(综合题)
- 2026年广西国际商务职业技术学院单招综合素质考试题库带答案详解(模拟题)
- 【华信咨询】中国智算中心(AIDC)产业发展白皮书(2024年)
- 2026年及未来5年市场数据中国吡咯喹啉醌PQQ行业发展潜力分析及投资战略数据分析研究报告
- 重建祠堂施工方案(3篇)
- 酒店餐厅外包协议书
- 2026年湖南城建职业技术学院单招职业技能测试模拟测试卷附答案
- 燃气管道安装质量控制管理措施
- 2025年公安专业科目考试真题及答案
- 儿童肥胖疾病科普
- 水电预埋施工流程方案
- 2025“Z世代眼中的世界”全球青年调查研究报告
- 安全生产春季五防
评论
0/150
提交评论