2026年后端开发工程师专项考核试题及答案_第1页
2026年后端开发工程师专项考核试题及答案_第2页
2026年后端开发工程师专项考核试题及答案_第3页
2026年后端开发工程师专项考核试题及答案_第4页
2026年后端开发工程师专项考核试题及答案_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

2026年后端开发工程师专项考核试题及答案一、单项选择题(每题2分,共20分)1.在Go1.24中,下列关于泛型约束的写法,哪一项可以正确通过编译并满足“可比较且可排序”的语义?A.typeSet[Tcomparable]map[T]struct{}B.typeOrderedSet[Tinterface{comparable;~int|~string}]map[T]struct{}C.typeOrderedSet[Tinterface{~int;~string}]map[T]struct{}D.typeOrderedSet[Tcomparable]map[T]struct{}答案:B解析:Go1.24要求“可比较”由comparable表达,“可排序”需显式列出可排序的基础类型,~int|~string同时满足两者。A缺少排序语义;C缺少comparable;D同A。2.某服务使用Kafka3.8,Producer配置acks=all,min.insync.replicas=3,分区副本因子=5。当ISR列表长度降为2时,继续发送一条key=123的消息,客户端会收到哪类异常?A.NotLeaderForPartitionB.TimeoutExceptionC.InvalidReplicationFactorD.NotEnoughReplicasException答案:D解析:ISR长度<min.insync.replicas,Broker拒绝写入并返回NotEnoughReplicasException,客户端立即失败,不会重试到超时。3.在PostgreSQL17中,对一张十亿行表做在线加列并设置默认值为nextval('seq'),哪种技术可避免全表重写?A.ALTERTABLE…ADDCOLUMN…DEFAULTnextval('seq')B.先加列NULL,再backfill,再SETDEFAULTC.使用GENERATED列D.使用ALTERTABLE…ADDCOLUMN…DEFAULTnextval('seq')NOTNULL答案:B解析:PG17对非易失性默认值仍需重写;先加NULL不重写,再分批backfill,最后SETDEFAULT可在线完成,全程仅锁元数据。4.某Java21服务使用虚拟线程,接口平均RT20ms,QPS1万。若将平台线程池大小从200改为4,下列哪项最准确?A.吞吐量下降,CPU利用率下降B.吞吐量不变,CPU利用率不变C.吞吐量不变,CPU利用率下降D.吞吐量下降,CPU利用率上升答案:B解析:虚拟线程由调度器挂载在4条carrier线程,I/O密集场景下,RT不变则吞吐量不变;CPU利用率取决于实际计算量,未变。5.Redis7.4启用ACL,用户u拥有~&+@read权限,执行EVAL"returnredis.call('set','k','v')"0的结果为?A.OKB.NOPERMC.WRONGPASSD.NOSCRIPT答案:B解析:EVAL属于@dangerous权限,u仅拥有@read,返回NOPERM。6.某团队使用Rust1.82的axum框架,Handler签名为asyncfnhandler(Json(payload):Json<CreateUser>)->implIntoResponse。若payload缺少字段,框架返回的HTTP状态码是?A.400B.404C.422D.500答案:C解析:axum使用serde,缺失字段返回422UnprocessableEntity。7.在Kubernetes1.32中,某Deployment的Pod模板添加字段minReadySeconds:30,下列哪项最准确?A.Pod启动30s后才被Service加入endpointsB.Pod启动30s后才被视为Available,滚动更新速度可能降低C.readinessProbe初始延迟30sD.终止宽限期为30s答案:B解析:minReadySeconds控制Pod变为Available的最小时间,影响滚动更新批次推进速度。8.某Node.js22服务使用undici做HTTP客户端,默认连接池大小为?A.1B.6C.128D.256答案:B解析:undici遵循浏览器同源策略,默认对单origin保持6条连接。9.在ClickHouse24.5中,MergeTree表使用ORDERBY(a,b,c),查询WHEREa=1ANDc=3会触发哪种索引优化?A.主键二分+稀疏索引裁剪B.仅分区裁剪C.跳数索引D.布隆过滤器答案:A解析:MergeTree稀疏索引按(a,b,c)排序,前缀a命中后可二分定位,c用于进一步行级过滤。10.某服务使用gRPC1.65,客户端设置maxReceiveMessageSize=4MiB,服务端返回5MiB消息,客户端收到状态?A.RESOURCE_EXHAUSTEDB.INTERNALC.CANCELLEDD.UNAVAILABLE答案:A解析:消息大小超限,gRPC返回RESOURCE_EXHAUSTED,附详情“Receivedmessagelargerthanmax”。二、不定项选择题(每题3分,共15分)11.关于Java21的GenerationalZGC,下列说法正确的是?A.年轻代与老年代均使用Region布局B.年轻代回收会触发Stop-The-WorldC.大对象直接进入老年代D.最大停顿时间目标仍由-XX:MaxGCPauseMillis控制答案:A、C、D解析:GenerationalZGC将堆划分为年轻代与老年代Region;年轻代回收采用并发算法,无STW;大对象阈值由PretenureSizeThreshold控制;停顿目标参数不变。12.在MySQL8.3中,使用InnoDB的instantaddcolumn功能,下列哪些场景会触发全表重建?A.新增列并指定AFTERcol_firstB.新增列并指定FIRSTC.新增列并指定DEFAULT(uuid())D.新增列并指定DEFAULT'static'NOTNULL答案:A、B、C解析:Instant仅支持追加到末尾且默认值为常量;AFTER/FIRST需重建;uuid()非常量需重建;D可instant。13.关于Rust的async-trait0.1,下列写法可以编译通过?A.#[async_trait]traitT{asyncfnf(&self);}B.#[async_trait(?Send)]traitT{asyncfnf(&self);}C.traitT{asyncfnf(&self);}D.#[async_trait]traitT{fnf<'a>(&'aself)->implFuture<Output=()>+Send+'a;}答案:A、B、D解析:async-trait宏将asyncfn转为返回BoxFuture;?Send关闭Send约束;裸trait不支持asyncfn;手动implFuture写法亦可。14.在Prometheus3.0中,下列哪些指标类型支持Histogram的_sum时间序列?A.counterB.histogramC.summaryD.gauge答案:B、C解析:Histogram与Summary均暴露_sum与_count;Counter与Gauge无。15.某服务使用Envoy1.32做边车,配置circuit_breakers.thresholds.max_connections=1024,下列哪些场景会触发熔断?A.上游TCP连接数超过1024B.上游HTTP/2并发流超过1024C.上游HTTP/1并发请求超过1024D.上游连接池等待队列长度超过1024答案:A、B解析:Envoy的max_connections对TCP与HTTP/2生效;HTTP/1由max_requests控制;等待队列由max_pending_requests控制。三、判断题(每题1分,共10分)16.Go1.24的切片append在容量不足时,新容量一律按2倍扩容。答案:错解析:当原容量<256时按2倍,≥256时按1.25倍,减少内存浪费。17.Redis7.4的multi-partAOF支持在rewrite期间继续写入,无需阻塞。答案:对解析:MP-AOF将rewrite拆为base+incr,后台线程完成,主线程无阻塞。18.PostgreSQL17的BRIN索引对高并发写入场景性能一定优于B-Tree。答案:错解析:BRIN适合顺序插入的“物理有序”数据,若随机写入导致页跨度大,过滤效果差,回表成本高。19.在Node.js22中,使用--experimental-strip-types可直接运行.ts文件而无需tsc。答案:对解析:22实验特性支持运行时擦除类型注解,不检查语义,仅做语法剥离。20.Kafka3.8的KRaft模式已完全废弃ZooKeeper,生产环境可直接上线。答案:对解析:3.8宣布KRaft生产就绪,ZooKeeper进入维护模式。21.Rust的Pin<Box<dynFuture>>一定Unpin。答案:错解析:Pin本身不实现Unpin,除非T:Unpin。22.MySQL8.3的InnoDB支持并行创建多个普通索引,无需锁表。答案:对解析:OnlineDDL引擎支持并发添加多个二级索引,仅锁元数据。23.在Kubernetes1.32中,EphemeralContainer必须声明resources.limits。答案:错解析:EphemeralContainer共享目标Pod的cgroup,不可再设limits。24.gRPC的server-sidestreamingRPC可以返回多条消息,但每条消息大小仍受maxReceiveMessageSize限制。答案:对解析:streaming只是逻辑连续,每条消息独立校验大小。25.ClickHouse24.5的MaterializedMySQL引擎支持双向同步。答案:错解析:仅支持单向拉取,冲突检测与回写未实现。四、填空题(每空2分,共20分)26.在Go1.24中,定义类型别名typeA=int与typeBint的字节大小分别为________与________。答案:8、8解析:别名与原名完全等价,底层均为int(64位平台8字节)。27.Redis7.4的ACLLOG最大保留条数由配置项________控制,默认________条。答案:acllog-max-len、12828.PostgreSQL17的并行查询上限由参数________控制,默认________。答案:max_parallel_workers、829.在Rust1.82中,将Vec<u8>转为Box<[u8]>的零成本方法是________。答案:o_boxed_slice()30.MySQL8.3的redolog文件大小由参数________与________共同决定。答案:innodb_log_file_size、innodb_log_files_in_group31.在Kubernetes1.32中,Pod的DNS策略为ClusterFirstWithHostNet时,其resolv.conf的ndots默认值为________。答案:532.Envoy1.32的outlier_detection.consecutive_5xx默认________次触发驱逐。答案:533.Node.js22的默认libuv线程池大小为________。答案:434.ClickHouse24.5的MergeTree写入线程数由参数________控制。答案:background_pool_size35.Kafka3.8的KRaft控制器法定人数最小为________。答案:3五、简答题(每题10分,共30分)36.描述在Go1.24中实现一个支持泛型、线程安全、无锁的LRU缓存的核心思路,并给出关键代码片段。答案:核心思路:1)使用泛型约束comparable的key;2)采用双向链表+map实现O(1)操作;3)利用atomic.Pointer与CAS实现无锁链表;4)使用hazardpointer避免ABA;5)缓存容量满时,CAS方式淘汰尾节点。关键代码:```gotypenode[Kcomparable,Vany]struct{keyKvalVprevatomic.Pointer[node[K,V]]nextatomic.Pointer[node[K,V]]}typeCache[Kcomparable,Vany]struct{headatomic.Pointer[node[K,V]]tailatomic.Pointer[node[K,V]]matomic.Value//map[K]*node[K,V]capint32}func(c*Cache[K,V])Get(keyK)(vV,okbool){m:=c.m.Load().(map[K]*node[K,V])n,ok:=m[key]if!ok{returnv,false}//无锁移动到头节点for{oldHead:=c.head.Load()n.next.Store(oldHead)ifc.head.CompareAndSwap(oldHead,n){break}}returnn.val,true}```37.某高并发订单服务使用MySQL8.3,要求每秒5万INSERT,表结构为order_idBIGINTPK、user_idBIGINT、sku_idBIGINT、amountDECIMAL(10,2)、create_timeDATETIME(3)。请给出分区与索引方案,并解释如何消除热点。答案:分区方案:1)使用HASH分区,表达式为PARTITIONBYHASH(order_id)PARTITIONS64;2)每个分区落在独立SSD盘,打散IO;3)主键order_id自带全局唯一,避免自增锁。索引方案:1)二级索引仅保留(user_id,create_time)联合索引,满足用户时间范围查询;2)不建sku_id单列索引,通过异步宽表或ES解决;3)使用COMPRESSED行格式,减少磁盘IO。消除热点:1)order_id采用雪花算法+随机workerId,使高位随机;2)连接池按分区维度拆分64个连接池,每个池绑定只写单一分区,避免全局锁;3)批量INSERT使用INSERT…VALUES(),(),()1000条/次,减少SQL解析与网络往返;4)关闭binlog或采用WRITESET并行复制,降低从库延迟。38.在Kubernetes1.32集群中,某Deployment的Pod需要访问云厂商的RDS实例,但云厂商未提供VPC内网端点。请给出两种安全访问方案,并比较优劣。答案:方案一:PrivateLink+云厂商NLB1)在云厂商创建NLB并绑定RDS私网IP;2)在K8s所在VPC创建EndpointService,接受NLB;3)在集群内通过CoreDNS重写RDS域名到PrivateLink地址;4)流量经云骨干网,不暴露公网。优点:网络延迟低,带宽高;缺点:云厂商需支持PrivateLink,费用按流量+小时计费。方案二:SidecarSSHSOCKS5代理1)在集群外准备一台跳板机,开启SSHD;2)Pod内运行sidecar容器,执行ssh-D1080-N-f-ikeyuser@bastion;3)业务容器配置ALL_PROXY=socks5://:1080;4)通过SOCKS5代理访问RDS公网地址。优点:通用,任何云均可;缺点:SSH隧道单点瓶颈,TLS需额外校验,跳板机需加固。六、编程题(共25分)39.用Rust1.82实现一个基于tokio的异步限流器,要求:1)支持每秒允许N个请求;2)支持异步等待而非忙等;3)提供acquire(&self)->implFuture<Output=()>接口;4)使用原子操作,无锁实现;5)给出单元测试,覆盖并发场景。答案:```rustusestd::sync::atomic::{AtomicU64,Ordering};usestd::time::{Duration,Instant};usetokio::sync::Notify;pubstructRateLimiter{rate:u64,tokens:AtomicU64,last:AtomicU64,notify:Notify,}implRateLimiter{pubfnnew(rate:u64)->Self{Self{rate,tokens:AtomicU64::new(rate),last:AtomicU64::new(Instant::now().duration_since(Instant::now()).as_millis()asu64,),notify:Notify::new(),}}pubasyncfnacquire(&self){loop{letnow=Instant::now().duration_since(Instant::now()).as_millis()asu64;letlast=self.last.load(Ordering::Relaxed);letmuttokens=self.tokens.load(Ordering::Relaxed);//补充令牌letdelta=now.saturating_sub(last)*self.rate/1000;tokens=(tokens+delta).min(self.rate);self.tokens.store(tokens,Ordering::Relaxed);self.last.store(now,Ordering::Relaxed);//尝试获取matchpare_exchange_weak(tokens,tokens.saturating_sub(1),Ordering::SeqCst,Ordering::SeqCst,){Ok(_)=>return,Err(_)=>self.notify.notified().await,}}}}[cfg(test)]modtests{usesuper::*;usestd::sync::Arc;usetokio::time::{sleep,Duration};[tokio::test]asyncfntest_concurrent(){letlim=Arc::new(RateLimiter::new(10));letmuthandles=vec![];for_in0..30{letlim=lim.clone();handles.push(tokio::spawn(asyncmove{lim.acquire().await;}));}letstart=Instant::now();forhinhandles{h.await.unwrap();}letelapsed=start.elapsed();assert!(elapsed>=Duration::from_secs(2));assert!(elapsed<Duration::from_secs(3));}}```七、综合设计题(共30分)40.某社交平台2026年DAU2亿,用户平均发布10条动态/天,每条动态平均500字符。要求:1)支持按时间线拉取最新1000条;2)支持按关键词搜索,延迟<100ms;3)支持按用户维度聚合近30天发布量,QPS5万;4)数据保存90天,成本可控;5)给出表结构、索引、分区、缓存、搜索、聚合全链路方案,并估算资源。答案:存

温馨提示

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

评论

0/150

提交评论