2026年后端开发岗位招聘笔试题(含答案)_第1页
2026年后端开发岗位招聘笔试题(含答案)_第2页
2026年后端开发岗位招聘笔试题(含答案)_第3页
2026年后端开发岗位招聘笔试题(含答案)_第4页
2026年后端开发岗位招聘笔试题(含答案)_第5页
已阅读5页,还剩8页未读, 继续免费阅读

下载本文档

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

文档简介

2026年后端开发岗位招聘笔试题(含答案)一、单项选择题(每题2分,共20分)1.HTTP协议中,下列哪个方法具有幂等性?A.POSTB.PUTC.PATCHD.OPTIONS答案:B解析:PUT表示替换资源,多次相同请求结果一致,具备幂等性;POST用于创建新资源,不具备幂等性;PATCH可能非幂等;OPTIONS虽幂等但不是主要考察点。2.在关系型数据库中,联合索引的最左前缀原则适用于哪种索引?A.哈希索引B.B+树联合索引C.全文索引D.位图索引答案:B解析:B+树联合索引按照字段顺序组织,查询必须从最左列开始匹配,否则索引失效。3.关于进程和线程的区别,下列哪个说法是正确的?A.进程拥有独立的地址空间,线程共享所属进程的地址空间B.线程拥有独立的地址空间,进程共享地址空间C.进程和线程都拥有独立的地址空间D.进程和线程都共享地址空间答案:A4.TCP三次握手过程中,第二次握手的报文标志位包含什么?A.SYNB.ACKC.SYN+ACKD.RST答案:C解析:服务端收到SYN后,回复SYN+ACK报文,表示同意建立连接并确认序列号。5.Redis中,用于为已有键设置过期时间的命令是?A.SETEXB.EXPIREC.TTLD.PERSIST答案:B解析:EXPIREkeyseconds为已存在的键设置过期时间;SETEX是设置值的同时设定过期时间;TTL查询剩余时间;PERSIST移除过期时间。6.下列哪种排序算法在最坏情况下的时间复杂度是O(A.快速排序B.冒泡排序C.归并排序D.插入排序答案:C解析:归并排序无论最好、最坏、平均时间复杂度均为O(nlogn)7.数据库事务的ACID特性中,I代表什么?A.一致性(Consistency)B.隔离性(Isolation)C.持久性(Durability)D.原子性(Atomicity)答案:B8.在Linux中,文件权限"-rw-r--r--"的数字表示是?A.744B.644C.755D.600答案:B解析:rw-r--r--对应110100100二进制,即644。9.下列哪种设计模式将对象的创建过程延迟到子类?A.单例模式B.工厂方法模式C.抽象工厂模式D.建造者模式答案:B解析:工厂方法模式定义一个创建对象的接口,由子类决定实例化哪个类,从而将创建过程延迟到子类。10.缓存穿透是指?A.大量缓存同一时间失效B.请求不存在的数据,导致请求全部打到数据库C.缓存服务器宕机D.热点数据过期后,大量请求同时重建缓存答案:B解析:缓存穿透指查询一个不存在的数据,缓存和数据库中都没有,每次请求都会落到数据库,造成数据库压力过大。二、多项选择题(每题3分,共15分)1.以下哪些是分布式系统中用于实现数据一致性的算法或协议?A.PaxosB.RaftC.ZABD.2PC答案:ABCD解析:Paxos、Raft、ZAB是分布式一致性算法;2PC(两阶段提交)是分布式事务协议,同样用于保证一致性。2.消息队列在后端系统中的应用场景包括哪些?A.异步处理B.应用解耦C.流量削峰D.分布式事务答案:ABCD解析:消息队列常用于异步处理(如发送邮件、短信)、解耦系统、削峰填谷、以及通过事务消息实现分布式事务。3.HTTP状态码中,以下哪些属于客户端错误(4xx)?A.400B.401C.403D.500答案:ABC解析:400BadRequest、401Unauthorized、403Forbidden均属于4xx客户端错误;500属于5xx服务端错误。4.在SQL标准中,以下哪些事务隔离级别可以避免脏读?A.读未提交(ReadUncommitted)B.读已提交(ReadCommitted)C.可重复读(RepeatableRead)D.串行化(Serializable)答案:BCD解析:读未提交允许脏读;读已提交及以上隔离级别均可避免脏读。5.下列哪些属于NoSQL数据库?A.RedisB.MongoDBC.CassandraD.PostgreSQL答案:ABC解析:Redis是键值存储,MongoDB是文档型,Cassandra是列族型,均属于NoSQL;PostgreSQL是关系型数据库。三、填空题(每题2分,共10分)1.在TCP/IP模型中,传输层有两个主要协议,分别是TCP和______。答案:UDP2.在MySQL的InnoDB存储引擎中,默认的事务隔离级别是______。答案:可重复读(REPEATABLEREAD)3.快速排序在最坏情况下的时间复杂度是______。答案:O4.Redis中,当内存达到上限时淘汰最近最少使用的键,该数据淘汰策略简称为______。答案:LRU5.在RESTfulAPI设计中,使用HTTP方法______表示删除资源。答案:DELETE四、简答题(每题5分,共15分)1.简述乐观锁和悲观锁的区别,并分别给出一个适用场景。答案:乐观锁假设冲突较少,操作数据时不加锁,更新时通过版本号或时间戳检测冲突,若冲突则重试;悲观锁假设冲突较多,操作数据时直接加锁,阻塞其他事务。乐观锁适用于读多写少、冲突概率低的场景,如商品详情页的浏览计数更新;悲观锁适用于写多、冲突频繁或数据一致性要求极高的场景,如银行账户转账扣款。解析:核心区别在于加锁时机和冲突处理方式。乐观锁以重试换取更高的并发吞吐量,悲观锁以阻塞换取强一致性。2.解释什么是CAP定理,并说明在实际分布式系统中如何权衡。答案:CAP定理指出,分布式系统无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partitiontolerance)三者。由于网络分区不可避免,分区容错性必须保证,因此系统只能在一致性和可用性之间进行取舍。例如银行核心系统优先保证一致性,在分区时可能拒绝部分写请求以保持数据一致;互联网产品则更看重可用性,允许短暂的数据不一致,采用最终一致性方案。3.简述如何设计一个高并发场景下的限流方案。答案:常见限流算法包括固定窗口计数器、滑动窗口、漏桶和令牌桶算法。令牌桶算法允许一定程度的突发流量,且实现简单、平滑。实际实现可采用Redis+Lua脚本进行分布式限流,为每个接口在Redis中维护一个令牌桶,按固定速率补充令牌,请求到达时获取令牌,获取不到则快速失败或进入等待队列。同时可结合网关层统一限流和业务降级策略。五、编程题(每题10分,共20分)1.实现一个LRU(最近最少使用)缓存数据结构,要求支持get(key)和put(key,value)操作,且时间复杂度均为$O(1)$。classNode:

def__init__(self,key=0,value=0):

self.key=key

self.value=value

self.prev=None

self.next=None

classLRUCache:

def__init__(self,capacity:int):

self.capacity=capacity

self.cache={}

self.head=Node()

self.tail=Node()

self.head.next=self.tail

self.tail.prev=self.head

def_remove(self,node):

node.prev.next=node.next

node.next.prev=node.prev

def_add_to_head(self,node):

node.prev=self.head

node.next=self.head.next

self.head.next.prev=node

self.head.next=node

defget(self,key:int)->int:

ifkeynotinself.cache:

return-1

node=self.cache[key]

self._remove(node)

self._add_to_head(node)

returnnode.value

defput(self,key:int,value:int)->None:

ifkeyinself.cache:

node=self.cache[key]

node.value=value

self._remove(node)

self._add_to_head(node)

else:

iflen(self.cache)>=self.capacity:

tail_node=self.tail.prev

self._remove(tail_node)

delself.cache[tail_node.key]

new_node=Node(key,value)

self.cache[key]=new_node

self._add_to_head(new_node)解析:采用哈希表+双向链表实现。哈希表保证O(2.编写一个函数,判断一个只包含'('、')'、'{'、'}'、'['、']'的字符串是否为有效括号序列,并返回布尔值。defis_valid(s:str)->bool:

stack=[]

mapping={')':'(','}':'{',']':'['}

forcharins:

ifcharinmapping.values():

stack.append(char)

elifcharinmapping:

ifnotstackorstack[-1]!=mapping[char]:

returnFalse

stack.pop()

else:

returnFalse

returnnotstack解析:使用栈进行匹配。遇到左括号压栈,遇到右括号检查栈顶是否匹配,匹配则弹出,否则返回False。最后栈为空则有效。六、系统设计题(20分)1.设计一个短链接服务(类似TinyURL),需要支持将长URL转换为短URL,并根据短URL重定向到原始长URL。请描述系统架构、核心模块、数据存储设计、短码生成算法以及高并发处理方案。功能需求:•用户提交长URL,系统返回一个短URL;•访问短URL时,服务301重定向到原始长URL;•支持自定义短码(可选)。非功能需求:•高可用:服务持续可用,单点故障不影响整体;•低延迟:重定向请求响应快;•可扩展:支持海量URL存储和访问。系统架构:客户端请求经CDN或反向代理(如Nginx)转发至负载均衡器,分发到应用服务器集群。应用服务器负责短码生成、重定向和缓存读写。数据层采用Redis作为缓存,MySQL或NoSQL(如MongoDB)作为持久化存储。使用分布式ID生成器(如Snowflake或数据库自增ID+号段模式)生成唯一ID。数据存储设计:•表short_ur

温馨提示

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

评论

0/150

提交评论