2026年后端開發(fā)工程師專項考核試題及答案_第1頁
2026年后端開發(fā)工程師專項考核試題及答案_第2頁
2026年后端開發(fā)工程師專項考核試題及答案_第3頁
2026年后端開發(fā)工程師專項考核試題及答案_第4頁
2026年后端開發(fā)工程師專項考核試題及答案_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

2026年后端開發(fā)工程師專項考核試題及答案一、單項選擇題(每題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,分區(qū)副本因子=5。當ISR列表長度降為2時,繼續(xù)發(fā)送一條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可在線完成,全程僅鎖元數(shù)據(jù)。4.某Java21服務使用虛擬線程,接口平均RT20ms,QPS1萬。若將平臺線程池大小從200改為4,下列哪項最準確?A.吞吐量下降,CPU利用率下降B.吞吐量不變,CPU利用率不變C.吞吐量不變,CPU利用率下降D.吞吐量下降,CPU利用率上升答案:B解析:虛擬線程由調(diào)度器掛載在4條carrier線程,I/O密集場景下,RT不變則吞吐量不變;CPU利用率取決于實際計算量,未變。5.Redis7.4啟用ACL,用戶u擁有~&+@read權限,執(zhí)行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狀態(tài)碼是?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變?yōu)锳vailable的最小時間,影響滾動更新批次推進速度。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會觸發(fā)哪種索引優(yōu)化?A.主鍵二分+稀疏索引裁剪B.僅分區(qū)裁剪C.跳數(shù)索引D.布隆過濾器答案:A解析:MergeTree稀疏索引按(a,b,c)排序,前綴a命中后可二分定位,c用于進一步行級過濾。10.某服務使用gRPC1.65,客戶端設置maxReceiveMessageSize=4MiB,服務端返回5MiB消息,客戶端收到狀態(tài)?A.RESOURCE_EXHAUSTEDB.INTERNALC.CANCELLEDD.UNAVAILABLE答案:A解析:消息大小超限,gRPC返回RESOURCE_EXHAUSTED,附詳情“Receivedmessagelargerthanmax”。二、不定項選擇題(每題3分,共15分)11.關于Java21的GenerationalZGC,下列說法正確的是?A.年輕代與老年代均使用Region布局B.年輕代回收會觸發(fā)Stop-The-WorldC.大對象直接進入老年代D.最大停頓時間目標仍由-XX:MaxGCPauseMillis控制答案:A、C、D解析:GenerationalZGC將堆劃分為年輕代與老年代Region;年輕代回收采用并發(fā)算法,無STW;大對象閾值由PretenureSizeThreshold控制;停頓目標參數(shù)不變。12.在MySQL8.3中,使用InnoDB的instantaddcolumn功能,下列哪些場景會觸發(fā)全表重建?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,下列哪些場景會觸發(fā)熔斷?A.上游TCP連接數(shù)超過1024B.上游HTTP/2并發(fā)流超過1024C.上游HTTP/1并發(fā)請求超過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倍,減少內(nèi)存浪費。17.Redis7.4的multi-partAOF支持在rewrite期間繼續(xù)寫入,無需阻塞。答案:對解析:MP-AOF將rewrite拆為base+incr,后臺線程完成,主線程無阻塞。18.PostgreSQL17的BRIN索引對高并發(fā)寫入場景性能一定優(yōu)于B-Tree。答案:錯解析:BRIN適合順序插入的“物理有序”數(shù)據(jù),若隨機寫入導致頁跨度大,過濾效果差,回表成本高。19.在Node.js22中,使用--experimental-strip-types可直接運行.ts文件而無需tsc。答案:對解析:22實驗特性支持運行時擦除類型注解,不檢查語義,僅做語法剝離。20.Kafka3.8的KRaft模式已完全廢棄ZooKeeper,生產(chǎn)環(huán)境可直接上線。答案:對解析:3.8宣布KRaft生產(chǎn)就緒,ZooKeeper進入維護模式。21.Rust的Pin<Box<dynFuture>>一定Unpin。答案:錯解析:Pin本身不實現(xiàn)Unpin,除非T:Unpin。22.MySQL8.3的InnoDB支持并行創(chuàng)建多個普通索引,無需鎖表。答案:對解析:OnlineDDL引擎支持并發(fā)添加多個二級索引,僅鎖元數(shù)據(jù)。23.在Kubernetes1.32中,EphemeralContainer必須聲明resources.limits。答案:錯解析:EphemeralContainer共享目標Pod的cgroup,不可再設limits。24.gRPC的server-sidestreamingRPC可以返回多條消息,但每條消息大小仍受maxReceiveMessageSize限制。答案:對解析:streaming只是邏輯連續(xù),每條消息獨立校驗大小。25.ClickHouse24.5的MaterializedMySQL引擎支持雙向同步。答案:錯解析:僅支持單向拉取,沖突檢測與回寫未實現(xiàn)。四、填空題(每空2分,共20分)26.在Go1.24中,定義類型別名typeA=int與typeBint的字節(jié)大小分別為________與________。答案:8、8解析:別名與原名完全等價,底層均為int(64位平臺8字節(jié))。27.Redis7.4的ACLLOG最大保留條數(shù)由配置項________控制,默認________條。答案:acllog-max-len、12828.PostgreSQL17的并行查詢上限由參數(shù)________控制,默認________。答案:max_parallel_workers、829.在Rust1.82中,將Vec<u8>轉為Box<[u8]>的零成本方法是________。答案:o_boxed_slice()30.MySQL8.3的redolog文件大小由參數(shù)________與________共同決定。答案:innodb_log_file_size、innodb_log_files_in_group31.在Kubernetes1.32中,Pod的DNS策略為ClusterFirstWithHostNet時,其resolv.conf的ndots默認值為________。答案:532.Envoy1.32的outlier_detection.consecutive_5xx默認________次觸發(fā)驅逐。答案:533.Node.js22的默認libuv線程池大小為________。答案:434.ClickHouse24.5的MergeTree寫入線程數(shù)由參數(shù)________控制。答案:background_pool_size35.Kafka3.8的KRaft控制器法定人數(shù)最小為________。答案:3五、簡答題(每題10分,共30分)36.描述在Go1.24中實現(xiàn)一個支持泛型、線程安全、無鎖的LRU緩存的核心思路,并給出關鍵代碼片段。答案:核心思路:1)使用泛型約束comparable的key;2)采用雙向鏈表+map實現(xiàn)O(1)操作;3)利用atomic.Pointer與CAS實現(xiàn)無鎖鏈表;4)使用hazardpointer避免ABA;5)緩存容量滿時,CAS方式淘汰尾節(jié)點。關鍵代碼:```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}//無鎖移動到頭節(jié)點for{oldHead:=c.head.Load()n.next.Store(oldHead)ifc.head.CompareAndSwap(oldHead,n){break}}returnn.val,true}```37.某高并發(fā)訂單服務使用MySQL8.3,要求每秒5萬INSERT,表結構為order_idBIGINTPK、user_idBIGINT、sku_idBIGINT、amountDECIMAL(10,2)、create_timeDATETIME(3)。請給出分區(qū)與索引方案,并解釋如何消除熱點。答案:分區(qū)方案:1)使用HASH分區(qū),表達式為PARTITIONBYHASH(order_id)PARTITIONS64;2)每個分區(qū)落在獨立SSD盤,打散IO;3)主鍵order_id自帶全局唯一,避免自增鎖。索引方案:1)二級索引僅保留(user_id,create_time)聯(lián)合索引,滿足用戶時間范圍查詢;2)不建sku_id單列索引,通過異步寬表或ES解決;3)使用COMPRESSED行格式,減少磁盤IO。消除熱點:1)order_id采用雪花算法+隨機workerId,使高位隨機;2)連接池按分區(qū)維度拆分64個連接池,每個池綁定只寫單一分區(qū),避免全局鎖;3)批量INSERT使用INSERT…VALUES(),(),()1000條/次,減少SQL解析與網(wǎng)絡往返;4)關閉binlog或采用WRITESET并行復制,降低從庫延遲。38.在Kubernetes1.32集群中,某Deployment的Pod需要訪問云廠商的RDS實例,但云廠商未提供VPC內(nèi)網(wǎng)端點。請給出兩種安全訪問方案,并比較優(yōu)劣。答案:方案一:PrivateLink+云廠商NLB1)在云廠商創(chuàng)建NLB并綁定RDS私網(wǎng)IP;2)在K8s所在VPC創(chuàng)建EndpointService,接受NLB;3)在集群內(nèi)通過CoreDNS重寫RDS域名到PrivateLink地址;4)流量經(jīng)云骨干網(wǎng),不暴露公網(wǎng)。優(yōu)點:網(wǎng)絡延遲低,帶寬高;缺點:云廠商需支持PrivateLink,費用按流量+小時計費。方案二:SidecarSSHSOCKS5代理1)在集群外準備一臺跳板機,開啟SSHD;2)Pod內(nèi)運行sidecar容器,執(zhí)行ssh-D1080-N-f-ikeyuser@bastion;3)業(yè)務容器配置ALL_PROXY=socks5://:1080;4)通過SOCKS5代理訪問RDS公網(wǎng)地址。優(yōu)點:通用,任何云均可;缺點:SSH隧道單點瓶頸,TLS需額外校驗,跳板機需加固。六、編程題(共25分)39.用Rust1.82實現(xiàn)一個基于tokio的異步限流器,要求:1)支持每秒允許N個請求;2)支持異步等待而非忙等;3)提供acquire(&self)->implFuture<Output=()>接口;4)使用原子操作,無鎖實現(xiàn);5)給出單元測試,覆蓋并發(fā)場景。答案:```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億,用戶平均發(fā)布10條動態(tài)/天,每條動態(tài)平均500字符。要求:1)支持按時間線拉取最新1000條;2)支持按關鍵詞搜索,延遲<100ms;3)支持按用戶維度聚合近30天發(fā)布量,QPS5萬;4)數(shù)據(jù)保存90天,成本可控;5)給出表結構、索引、分區(qū)、緩存、搜索、聚合全鏈路方案,并估算資源。答案:存

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論