版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2025年軟件工程師招聘筆試試題及答案1.單項選擇題(每題2分,共20分)1.1在Linux系統(tǒng)中,若進(jìn)程A通過fork()創(chuàng)建子進(jìn)程B,隨后B調(diào)用execve()加載新程序,下列關(guān)于文件描述符fd=3的描述正確的是A.若fd=3在A中設(shè)置了closeonexec標(biāo)志,則B中fd=3一定被關(guān)閉B.若fd=3在A中未設(shè)置closeonexec標(biāo)志,則B中fd=3指向與A相同的打開文件表項C.無論closeonexec標(biāo)志如何,B中fd=3都會被內(nèi)核自動關(guān)閉D.execve()調(diào)用后,fd=3的偏移量會被重置為0答案:B1.2某32位RISC處理器采用五級流水線(IF、ID、EX、MEM、WB),無轉(zhuǎn)發(fā)機(jī)制。下列指令序列中,存在數(shù)據(jù)冒險的指令對數(shù)為addr1,r2,r3subr4,r1,r5andr6,r4,r7orr8,r1,r6A.1B.2C.3D.4答案:C1.3在MySQL8.0中,事務(wù)隔離級別為REPEATABLEREAD,表t(idintprimarykey,valint)初始無數(shù)據(jù)。會話S1先后執(zhí)行:STARTTRANSACTION;INSERTINTOtVALUES(1,10);會話S2執(zhí)行:STARTTRANSACTION;SELECTFROMtWHEREid=1FORUPDATE;則S2的查詢會A.返回空結(jié)果并立即獲得nextkeylockon(1,10]B.阻塞等待S1提交或回滾C.返回(1,10)并加recordlockonid=1D.報錯“Deadlockfound”答案:B1.4某RESTful服務(wù)采用JWTBearerToken,簽名算法為RS256。下列說法正確的是A.資源服務(wù)器必須使用授權(quán)服務(wù)器的私鑰才能驗證簽名B.客戶端可使用授權(quán)服務(wù)器的公鑰自行驗證簽名合法性C.若Token中攜帶exp聲明,則資源服務(wù)器必須拒絕接收未過期的TokenD.刷新Token時,原Token的jti必須保持不變答案:B1.5在C++17中,下列代碼輸出為include<iostream>template<intN>structFact{staticconstexprlonglongv=NFact<N1>::v;};template<>structFact<0>{staticconstexprlonglongv=1;};intmain(){std::cout<<Fact<20>::v/Fact<10>::v;}A.670442572800B.604800C.3628800D.編譯錯誤答案:A1.6某系統(tǒng)采用Raft共識算法,集群共5個節(jié)點。若當(dāng)前Leader宕機(jī),網(wǎng)絡(luò)分區(qū)導(dǎo)致{A,B}與{C,D,E}隔離,則A.分區(qū){C,D,E}可立即選出新的Leader并繼續(xù)提供服務(wù)B.整個集群無法提交新日志條目C.分區(qū){A,B}可提交新日志條目D.必須等待原Leader恢復(fù)才能繼續(xù)答案:A1.7在React18中,下列關(guān)于并發(fā)特性startTransition的描述錯誤的是A.包裹的setState會被標(biāo)記為低優(yōu)先級B.可配合useDeferredValue使用以減少Spinner出現(xiàn)頻率C.startTransition回調(diào)中可執(zhí)行同步IO操作D.并發(fā)渲染過程中,React可能中斷并重啟渲染工作答案:C1.8某IPv4子網(wǎng)掩碼為48,下列地址中可作為主機(jī)地址的是A.5B.6C.7D.3答案:C1.9在Go1.22中,下列代碼片段運(yùn)行時會ch:=make(chanint,2)ch<1ch<2close(ch)forv:=rangech{fmt.Println(v)}A.輸出12并正常退出B.輸出12后panicC.死循環(huán)D.編譯錯誤答案:A1.10某系統(tǒng)使用Kafka3.5,topic分區(qū)數(shù)為6,消費組內(nèi)有9個消費者,采用range分配策略,則A.每個消費者恰好分配到1個分區(qū)B.3個消費者分配到2個分區(qū),其余分配到1個C.6個消費者分配到1個分區(qū),其余空閑D.所有消費者平均分配,但可能觸發(fā)rebalance答案:B2.不定項選擇題(每題3分,共15分)2.1關(guān)于HTTP/3,下列說法正確的是A.基于QUIC協(xié)議,默認(rèn)使用UDP443端口B.支持多路復(fù)用且避免了TCP隊頭阻塞C.保留了HTTP/2的頭部壓縮算法HPACKD.使用TLS1.3作為唯一加密層答案:ABD2.2在Python3.11中,下列表達(dá)式結(jié)果為True的有A.(lambdax:xisx)([])B.hash(float('nan'))==hash(float('nan'))C.''.join(['a','b','c'])=='abc'D.isinstance(True,int)答案:CD2.3某分布式緩存采用一致性哈希,虛擬節(jié)點數(shù)為150,物理節(jié)點數(shù)為5,新增1個物理節(jié)點后A.需要遷移的數(shù)據(jù)量理論期望值約為1/6B.虛擬節(jié)點數(shù)需重新設(shè)置為180以保持均衡C.哈希環(huán)的順時針查找復(fù)雜度仍為O(logn)D.若采用跳躍一致性哈希,則無需遷移數(shù)據(jù)答案:AC2.4在SpringBoot3.2中,下列注解組合可聲明一個僅響應(yīng)JSON且路徑為/api/v1/user的REST控制器方法A.@GetMapping(path="/api/v1/user",produces="application/json")B.@RequestMapping(method=GET,value="/api/v1/user",headers="Accept=application/json")C.@RestController@RequestMapping("/api/v1")并在方法級使用@GetMapping("/user")D.@Controller@ResponseBody并在類級使用@RequestMapping("/api/v1/user")答案:ABC2.5關(guān)于eBPF,下列說法正確的是A.可在內(nèi)核態(tài)執(zhí)行用戶自定義的字節(jié)碼B.借助BPFTypeFormat(BTF)可實現(xiàn)CORE(CompileOnce–RunEverywhere)C.內(nèi)核會驗證eBPF程序是否包含循環(huán)D.eBPF程序可通過perfevent或kprobe動態(tài)附加到內(nèi)核函數(shù)答案:ABCD3.填空題(每空3分,共15分)3.1在Git2.44中,命令gitlogonelinegraphalldecorate可簡寫為gitlog________。答案:onelinegraphalldecorate(或graphonelinealldecorate,順序可換)3.2某AES256GCM加密后的密文長度為264字節(jié),則原始明文長度為________字節(jié)。答案:240(GCM標(biāo)簽占16字節(jié),IV占8字節(jié),264168=240)3.3在PostgreSQL16中,查詢SELECTjsonb_array_length('[1,2,3,{"a":4}]'::jsonb);的返回值為________。答案:43.4某系統(tǒng)使用Nginx作為反向代理,配置proxy_cache_valid20030210m;則狀態(tài)碼為200的響應(yīng)在緩存中最大有效期為________秒。答案:6003.5在Dockerfile中,指令RUNmount=type=cache,target=/var/cache/apt需要Docker引擎版本不低于________。答案:18.094.簡答題(每題10分,共30分)4.1描述一次完整的HTTPS握手過程,并指出在TLS1.3中相比TLS1.2減少的往返次數(shù)及其對性能的影響。答案:1.TCP三次握手建立連接。2.TLS1.3中客戶端發(fā)送ClientHello,內(nèi)含密鑰共享列表(如X25519)、對稱算法提案、隨機(jī)數(shù)、預(yù)共享密鑰標(biāo)識符(若啟用會話恢復(fù))。3.服務(wù)器立即返回ServerHello、加密擴(kuò)展、證書、Finished消息,并攜帶密鑰共享(ServerKeyShare)。此時服務(wù)器已能計算主密鑰。4.客戶端驗證證書,計算共享密鑰,發(fā)送Finished。5.雙方開始使用應(yīng)用數(shù)據(jù)密鑰進(jìn)行加密傳輸。TLS1.3將握手減少為“1RTT”,若啟用0RTT可進(jìn)一步將首包應(yīng)用數(shù)據(jù)與ClientHello合并。減少一次往返在高延遲移動網(wǎng)絡(luò)下可降低100~200ms,提升首屏?xí)r間約15~25%。4.2說明MySQLInnoDB中“幻讀”與“不可重復(fù)讀”的區(qū)別,并給出在REPEATABLEREAD隔離級別下InnoDB如何通過nextkeylocking解決幻讀。答案:不可重復(fù)讀指同一事務(wù)兩次讀取同一行得到不同結(jié)果,由update或delete引起;幻讀指同一范圍查詢兩次返回不同行數(shù),由insert引起。InnoDB對索引記錄加recordlock,對記錄前的gap加gaplock,兩者組合成nextkeylock。例如SELECTFROMtWHEREid>100FORUPDATE會對(100,supremum)加nextkeylock,阻止其他事務(wù)插入id>100的新記錄,從而避免幻讀。4.3給定一段存在內(nèi)存泄漏的C代碼,請指出問題并給出修復(fù)方案。```ctypedefstructNode{intval;structNodenext;}Node;Nodecreate_list(intn){Nodehead=malloc(sizeof(Node));head>val=0;Nodecur=head;for(inti=1;i<n;++i){cur>next=malloc(sizeof(Node));cur=cur>next;cur>val=i;}cur>next=NULL;returnhead;}voidremove_node(Nodehead,intval){Nodeprev=NULL,cur=head;while(cur){if(cur>val==val){if(prev)prev>next=cur>next;free(cur);//此處直接釋放但未斷鏈break;}prev=cur;cur=cur>next;}}```答案:remove_node在釋放cur后未更新cur指針,后續(xù)代碼可能訪問已釋放內(nèi)存;若刪除的是頭節(jié)點,函數(shù)外head指針未更新。修復(fù):1.返回新頭指針;2.釋放后立刻return;3.提供統(tǒng)一釋放鏈表函數(shù)。修正代碼:```cNoderemove_node(Nodehead,intval){Nodeprev=NULL,cur=head;while(cur){if(cur>val==val){if(prev)prev>next=cur>next;elsehead=cur>next;free(cur);returnhead;}prev=cur;cur=cur>next;}returnhead;}voidfree_list(Nodehead){while(head){Nodetmp=head>next;free(head);head=tmp;}}```5.算法與編程題(共20分)5.1最長遞增子序列的變種(10分)給定整數(shù)數(shù)組a[0..n1],允許至多修改k個元素值,求可得到的最長嚴(yán)格遞增子序列長度。要求:時間復(fù)雜度O(nlogn),空間復(fù)雜度O(n)。請寫出完整可編譯的C++17代碼,并給出核心思路。答案:思路:將問題轉(zhuǎn)化為“帶懲罰的LIS”。定義dp[i]表示長度為i+1的LIS所需最小修改次數(shù)。對原數(shù)組離散化后,用樹狀數(shù)組維護(hù)前綴最小修改次數(shù)。代碼:```cppinclude<bits/stdc++.h>usingnamespacestd;intmax_lis_with_k_changes(vector<int>&a,intk){intn=a.size();vector<int>b=a;sort(b.begin(),b.end());b.erase(unique(b.begin(),b.end()),b.end());autoget=[&](intx){returnlower_bound(b.begin(),b.end(),x)b.begin()+1;};constintINF=1e9;vector<int>fen(n+2,INF);autoupd=[&](intp,intv){for(;p<=n;p+=p&p)fen[p]=min(fen[p],v);};autoqry=[&](intp){intr=INF;for(;p>0;p=p&p)r=min(r,fen[p]);returnr;};intbest=0;for(inti=0;i<n;++i){intx=get(a[i]);intcost_keep=qry(x1);//不改intcost_change=qry(x)+1;//改intcur=min(cost_keep,cost_change);if(cur<=k)best=max(best,i+1cur);upd(x,cur);}returnbest;}```主函數(shù)略。復(fù)雜度:離散化O(nlogn),樹狀數(shù)組維護(hù)O(nlogn)。5.2高并發(fā)限流器實現(xiàn)(10分)設(shè)計一個適用于分布式集群的每秒百萬級QPS限流器,要求:1.精確到毫秒級;2.支持動態(tài)調(diào)整閾值;3.支持多機(jī)房協(xié)同;4.單核CPU占用<5%。請給出架構(gòu)圖(文字描述)、核心數(shù)據(jù)結(jié)構(gòu)及偽代碼。答案:架構(gòu):1.令牌桶按毫秒生成,桶容量=峰值QPS。2.每個應(yīng)用節(jié)點本地維護(hù)滑動窗口計數(shù)器+令牌桶,窗口1ms。3.中心協(xié)調(diào)器(基于RedisCluster)每100ms廣播全局閾值變更。4.采用“分層限流”:本地桶先攔截80%流量,剩余20%走RedisLua腳本原子扣減。數(shù)據(jù)結(jié)構(gòu):```cstructMillislot{atomic<long>tokens;atomic<long>timestamp;};Millislotslots[1000];//循環(huán)數(shù)組,毫秒級```偽代碼:```cbooltry_acquire(){autonow=current_ms();auto&slot=slots[now%1000];if(slot.timestamp!=now){slot.timestamp=now;slot.tokens=max_per_ms;}longt=slot.tokens.load();while(t>0&&!pare_exchange_weak(t,t1));if(t>0)returntrue;returnredis_cluster_lua_decr("global_key",1)>0;}```Lua腳本:```lualocalkey,decr=KEYS[1],ARGV[1]localcur=redis.call('GET',key)or0ifcur>=decrthenredis.call('DECRBY',key,decr)return1elsereturn0end```單核CPU<5%:本地?zé)o鎖原子操作占99%流量,Redis調(diào)用占1%,100ms廣播閾值使用pub/sub,避免輪詢。6.系統(tǒng)設(shè)計題(共20分)設(shè)計一個支持“千萬級日活、全球部署”的實時彈幕系統(tǒng),要求:1.端到端延遲<100ms(P99);2.支持高峰100萬條/秒寫入;3.支持歷史彈幕回放,按房間+時間范圍查詢,QPS5萬;4.數(shù)據(jù)持久化且可冷存儲;5.彈幕內(nèi)容需敏感詞過濾,延遲<20ms。請給出:a)總體架構(gòu)文字描述(6分)b)關(guān)鍵表結(jié)構(gòu)與索引(4分)c)熱點房間流量削峰方案(4分)d)全球多機(jī)房數(shù)據(jù)復(fù)制與一致性策略(6分)答案:a)架構(gòu):邊緣層:AnycastUDP接入,邊緣POP將彈幕封裝為QUIC幀,轉(zhuǎn)發(fā)至就近IDC。消息層:IDC內(nèi)使用Kafka集群,topic按room_idhash到1000分區(qū),單分區(qū)峰值1萬條/秒。計算層:Flink作業(yè)做滑動窗口聚合,每秒生成“熱度榜”并回寫Redis。存儲層:?熱數(shù)據(jù):RedisCluster存最近5分鐘彈幕,list結(jié)構(gòu),key=room:timestamp_slot。?溫數(shù)據(jù):ScyllaDB按(room_id,minute_bucket)聚簇主鍵,TTL7天。?冷數(shù)據(jù):Kaf
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026 年中職景區(qū)開發(fā)與管理類(景區(qū)開發(fā)基礎(chǔ))試題及答案
- 旅游法律法規(guī)期末考試試題及答案
- 辦公區(qū)域綠化協(xié)議2025
- 辦公康復(fù)假肢適配合同協(xié)議2025
- 2024年中考道德與法治(安徽)第三次模擬考試(含答案)
- 2025年河北省公需課學(xué)習(xí)-分級診療制度建設(shè)指導(dǎo)意見580
- 2025年遇水反應(yīng)化學(xué)品名單及應(yīng)急處置措施
- 小孩自我保護(hù)測試題及答案
- 房山中考政治題庫及答案
- 近代德國歷史題庫及答案
- 龍和近地表處置場一期一階段建設(shè)項目環(huán)境影響報告書(申請建造階段)
- 金屬非金屬礦山(露天礦山)安全生產(chǎn)管理人員題庫
- 垃圾焚燒飛灰進(jìn)入生活垃圾填埋場填埋
- 黑龍江省哈爾濱市南崗區(qū)五年級上冊期末語文試卷(含答案)
- 辯論賽含計時器
- 【超星爾雅學(xué)習(xí)通】戲曲鑒賞網(wǎng)課章節(jié)答案
- PE燃?xì)夤艿赖男孤┡c搶修
- 2023-2024學(xué)年甘肅省蘭州市小學(xué)語文五年級期末通關(guān)測試題
- GB/T 3883.202-2019手持式、可移式電動工具和園林工具的安全第202部分:手持式螺絲刀和沖擊扳手的專用要求
- GB/T 1819.1-2022錫精礦化學(xué)分析方法第1部分:水分含量的測定熱干燥法
- GB/T 13323-2009光學(xué)制圖
評論
0/150
提交評論