




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2025年計(jì)算機(jī)面試題目邏輯題及答案1.分布式節(jié)點(diǎn)獎(jiǎng)勵(lì)分配問(wèn)題某區(qū)塊鏈網(wǎng)絡(luò)中有5個(gè)節(jié)點(diǎn)(A、B、C、D、E),需要共同分配100枚加密貨幣作為區(qū)塊打包獎(jiǎng)勵(lì)。分配規(guī)則如下:-節(jié)點(diǎn)按算力從高到低排序?yàn)锳→B→C→D→E,算力越高的節(jié)點(diǎn)優(yōu)先提出分配方案。-所有節(jié)點(diǎn)(包括提議者)對(duì)方案進(jìn)行投票,若同意票數(shù)≥50%(含提議者自身投票),則方案通過(guò);否則提議者被淘汰,由下一個(gè)算力的節(jié)點(diǎn)重新提議。-節(jié)點(diǎn)的行為邏輯是絕對(duì)理性的,優(yōu)先保證自身存活,其次追求收益最大化,最后傾向于淘汰更多其他節(jié)點(diǎn)(若收益相同,選擇讓后續(xù)提議者更少的方案)。問(wèn)題:A作為第一個(gè)提議者,應(yīng)如何分配100枚加密貨幣才能確保方案通過(guò)?答案:要解決這個(gè)問(wèn)題,需從后往前逆推每個(gè)節(jié)點(diǎn)在不同情況下的最優(yōu)策略。(1)只剩E節(jié)點(diǎn)時(shí)(前4個(gè)均被淘汰):E自己獲得100枚,方案自動(dòng)通過(guò)(1票≥50%)。(2)剩D、E兩個(gè)節(jié)點(diǎn)時(shí):D需要至少1票(自己)。D知道若自己被淘汰,E將獨(dú)得100枚。因此D的方案只需讓自己存活,無(wú)需考慮E的收益——D提議(D:100,E:0),自己投票同意,方案通過(guò)(1/2≥50%)。(3)剩C、D、E三個(gè)節(jié)點(diǎn)時(shí):C需要至少2票(自己+1個(gè)其他節(jié)點(diǎn))。C需分析D和E在C被淘汰后的結(jié)果:若C被淘汰,D將獨(dú)吞100枚,E得0。因此C只需拉攏E——給E至少1枚(E若反對(duì),C被淘汰后E得0,所以E會(huì)支持1枚)。C的方案為(C:99,D:0,E:1),C和E投票同意(2/3≥50%),方案通過(guò)。(4)剩B、C、D、E四個(gè)節(jié)點(diǎn)時(shí):B需要至少2票(自己+1個(gè)其他節(jié)點(diǎn))。B需分析其他節(jié)點(diǎn)在B被淘汰后的結(jié)果:若B被淘汰,C將分配(99,0,1),D得0。因此B可以拉攏D——給D至少1枚(D若反對(duì),B被淘汰后D得0,所以D會(huì)支持1枚)。B的方案為(B:99,C:0,D:1,E:0),B和D投票同意(2/4=50%),方案通過(guò)。(5)回到A提議時(shí):A需要至少3票(自己+2個(gè)其他節(jié)點(diǎn))。A需分析其他節(jié)點(diǎn)在A被淘汰后的結(jié)果:若A被淘汰,B將分配(99,0,1,0),C和E得0。因此A可以拉攏C和E——給C和E各至少1枚(C若反對(duì),A被淘汰后C得0;E若反對(duì),A被淘汰后E得0)。A的方案為(A:98,B:0,C:1,D:0,E:1)。此時(shí)A、C、E三票同意(3/5≥50%),方案通過(guò)。關(guān)鍵點(diǎn):每個(gè)節(jié)點(diǎn)的決策依賴于對(duì)后續(xù)節(jié)點(diǎn)行為的準(zhǔn)確預(yù)判,核心是找到“在反對(duì)提議時(shí)收益更低”的節(jié)點(diǎn)并給予最小必要獎(jiǎng)勵(lì)。2.數(shù)組異常值檢測(cè)的邏輯優(yōu)化給定一個(gè)未排序整數(shù)數(shù)組nums(長(zhǎng)度n≥3),其中恰好有一個(gè)元素出現(xiàn)次數(shù)超過(guò)n/2(絕對(duì)眾數(shù)),其余元素出現(xiàn)次數(shù)均不超過(guò)n/2。但數(shù)據(jù)采集過(guò)程中可能存在1次“異常寫(xiě)入”:某位置的元素被錯(cuò)誤修改為另一個(gè)值(可能與原數(shù)組中已有元素重復(fù))。要求設(shè)計(jì)一個(gè)時(shí)間復(fù)雜度O(n)、空間復(fù)雜度O(1)的算法,找出原始數(shù)組中的絕對(duì)眾數(shù)(即未被修改前的絕對(duì)眾數(shù))。示例:輸入:[3,3,4,2,3](假設(shè)原始數(shù)組為[3,3,3,2,3],其中一個(gè)3被錯(cuò)誤修改為4)輸出:3答案:常規(guī)尋找絕對(duì)眾數(shù)的算法是摩爾投票法,但本題因存在1次異常修改,需調(diào)整邏輯。原始摩爾投票法的核心:絕對(duì)眾數(shù)出現(xiàn)次數(shù)>n/2,因此遍歷數(shù)組時(shí),眾數(shù)的計(jì)數(shù)會(huì)超過(guò)其他數(shù)的總和。但異常修改可能導(dǎo)致當(dāng)前數(shù)組的“表面眾數(shù)”不是原始眾數(shù)(例如原始眾數(shù)被修改為其他值,或其他值被修改為原始眾數(shù))。關(guān)鍵觀察:原始眾數(shù)在修改前出現(xiàn)次數(shù)≥?n/2?+1(因n≥3,n/2向下取整后+1至少為2)。修改操作最多使原始眾數(shù)出現(xiàn)次數(shù)減少1(若修改的是原始眾數(shù)),或其他數(shù)出現(xiàn)次數(shù)增加1(若修改的是非原始眾數(shù))。因此,原始眾數(shù)在修改后的數(shù)組中可能仍為眾數(shù)(若修改的是其他數(shù)),或出現(xiàn)次數(shù)與當(dāng)前眾數(shù)相同(若修改的是原始眾數(shù))。算法步驟:(1)使用摩爾投票法找出當(dāng)前數(shù)組的候選眾數(shù)candidate1及其計(jì)數(shù)count1。(2)再次遍歷數(shù)組,統(tǒng)計(jì)candidate1的真實(shí)出現(xiàn)次數(shù)realCount1。(3)若realCount1≥?n/2?(即修改前至少為?n/2?+1),則candidate1即為原始眾數(shù)(因?yàn)榧词贡恍薷囊淮?,仍可能滿足條件)。(4)若realCount1<?n/2?,說(shuō)明原始眾數(shù)被修改了一次。此時(shí),原始眾數(shù)在修改后的數(shù)組中出現(xiàn)次數(shù)為realCount1,而修改操作將一個(gè)原始眾數(shù)改為了另一個(gè)值x。因此,x在修改后的數(shù)組中出現(xiàn)次數(shù)比原始多1。此時(shí),需要找到另一個(gè)候選眾數(shù)candidate2(即x),并驗(yàn)證其原始出現(xiàn)次數(shù)是否≤n/2(因?yàn)樵紨?shù)組中x的出現(xiàn)次數(shù)最多為n/2,修改后為n/2+1,但不可能是絕對(duì)眾數(shù))。(5)由于原始數(shù)組只有一個(gè)絕對(duì)眾數(shù),因此當(dāng)realCount1不滿足時(shí),原始眾數(shù)只能是被修改的那個(gè)數(shù),即遍歷數(shù)組時(shí),所有與candidate1不同的元素中,出現(xiàn)次數(shù)最多的那個(gè)數(shù)(但需排除修改后的干擾)。更簡(jiǎn)單的方法是:原始眾數(shù)在修改后的數(shù)組中可能出現(xiàn)的位置是除了被修改的那個(gè)位置外的所有位置,因此再次遍歷數(shù)組,統(tǒng)計(jì)每個(gè)元素的出現(xiàn)次數(shù),若某個(gè)元素的出現(xiàn)次數(shù)為realCount1+1,則它是原始眾數(shù)(因?yàn)楸恍薷牧艘淮危J纠治觯狠斎隱3,3,4,2,3],n=5,?n/2?=2。-摩爾投票法得到candidate1=3,count1=3(遍歷過(guò)程:3→count=1;3→count=2;4→count=1;2→count=0;3→count=1。最終候選為3,需重新統(tǒng)計(jì)真實(shí)次數(shù):3出現(xiàn)3次)。-realCount1=3≥2,因此3是原始眾數(shù)(原始出現(xiàn)次數(shù)為4次,被修改為4后剩余3次,仍≥2)。另一種情況:原始數(shù)組為[5,5,5,3,2],被修改為[5,5,3,3,2]。此時(shí)當(dāng)前數(shù)組的摩爾投票候選為5(count=2)和3(count=2),最終候選可能是3(取決于遍歷順序)。重新統(tǒng)計(jì)5的出現(xiàn)次數(shù)為2,3的出現(xiàn)次數(shù)為2。此時(shí)realCount1=2<2(不成立,因?5/2?=2),需檢查原始眾數(shù)是否為5(被修改了一次)。原始5的出現(xiàn)次數(shù)為3次,修改后為2次,因此5是原始眾數(shù)。3.微服務(wù)調(diào)用鏈的異常定位邏輯某分布式系統(tǒng)中有服務(wù)A→B→C的調(diào)用鏈(A調(diào)用B,B調(diào)用C),每個(gè)服務(wù)均有獨(dú)立的日志系統(tǒng),記錄調(diào)用時(shí)間戳(精確到毫秒)和狀態(tài)(成功/失?。?。某天用戶反饋調(diào)用A后結(jié)果異常,需通過(guò)日志定位問(wèn)題節(jié)點(diǎn)。已知:-服務(wù)A的日志記錄:調(diào)用B的開(kāi)始時(shí)間t1=10:00:00.000,結(jié)束時(shí)間t2=10:00:01.500,狀態(tài)為失敗。-服務(wù)B的日志記錄:調(diào)用C的開(kāi)始時(shí)間t3=10:00:00.100,結(jié)束時(shí)間t4=10:00:01.400,狀態(tài)為成功。-服務(wù)C的日志無(wú)異常記錄,所有調(diào)用均成功。問(wèn)題:僅根據(jù)時(shí)間戳和狀態(tài),如何推理異常發(fā)生的節(jié)點(diǎn)?可能的異常原因有哪些?答案:需分析調(diào)用鏈的時(shí)間邏輯和狀態(tài)傳遞關(guān)系。(1)時(shí)間戳的合理性驗(yàn)證:-A調(diào)用B的總耗時(shí)為t2-t1=1500ms。-B調(diào)用C的耗時(shí)為t4-t3=1300ms。-B處理A的請(qǐng)求的時(shí)間應(yīng)包括:接收A的請(qǐng)求→調(diào)用C→返回結(jié)果給A。因此,B的總處理時(shí)間應(yīng)≥調(diào)用C的時(shí)間(1300ms)。但B的處理時(shí)間實(shí)際是從A的t1到t2(1500ms),其中調(diào)用C的時(shí)間是t3到t4(1300ms)。因此,B在收到A的請(qǐng)求后,延遲了100ms(t3-t1=100ms)才開(kāi)始調(diào)用C,調(diào)用C耗時(shí)1300ms,之后需要將結(jié)果返回給A,耗時(shí)為t2-t4=100ms(1500ms-1300ms-100ms=100ms)。(2)狀態(tài)矛盾分析:-B調(diào)用C的狀態(tài)為成功,但A調(diào)用B的狀態(tài)為失敗。說(shuō)明B在調(diào)用C成功后,處理C的返回結(jié)果時(shí)出現(xiàn)了錯(cuò)誤,導(dǎo)致向A返回失敗。(3)可能的異常原因:①B的業(yè)務(wù)邏輯錯(cuò)誤:B在收到C的成功響應(yīng)后,未正確解析返回?cái)?shù)據(jù)(如JSON格式錯(cuò)誤、字段缺失),導(dǎo)致業(yè)務(wù)邏輯判斷失?。ɡ鏑返回“庫(kù)存=0”,但B未處理該情況,誤判為異常)。②B的超時(shí)設(shè)置不合理:A對(duì)B的超時(shí)時(shí)間設(shè)置為1500ms,而B(niǎo)處理總耗時(shí)剛好等于超時(shí)時(shí)間(1500ms)。但B調(diào)用C耗時(shí)1300ms,加上前后處理100ms+100ms=200ms,總耗時(shí)1500ms。若B在返回結(jié)果時(shí)因網(wǎng)絡(luò)延遲(如最后100ms是網(wǎng)絡(luò)傳輸時(shí)間),導(dǎo)致A未在超時(shí)前收到響應(yīng),A可能誤判為失?。词笲已成功處理)。③B的資源競(jìng)爭(zhēng)問(wèn)題:B在處理C的響應(yīng)時(shí),可能因線程池滿、內(nèi)存不足等原因,導(dǎo)致無(wú)法完成后續(xù)處理邏輯(例如,C返回大對(duì)象,B在反序列化時(shí)內(nèi)存溢出)。④時(shí)間戳記錄誤差:服務(wù)B的日志時(shí)間可能存在時(shí)鐘偏移(如B的服務(wù)器時(shí)間比A慢50ms),導(dǎo)致實(shí)際調(diào)用C的結(jié)束時(shí)間晚于記錄的t4,最終A因超時(shí)未收到響應(yīng)而標(biāo)記為失敗。關(guān)鍵邏輯:調(diào)用鏈的狀態(tài)傳遞必須滿足“下游成功不必然導(dǎo)致上游成功”,需關(guān)注上游在下游成功后的處理邏輯和時(shí)間邊界。4.數(shù)據(jù)庫(kù)查詢的概率優(yōu)化問(wèn)題某電商數(shù)據(jù)庫(kù)有100萬(wàn)條商品記錄,其中“庫(kù)存>0”的商品占20%(20萬(wàn)條),“銷量>1000”</think>的商品占10%(10萬(wàn)條),“庫(kù)存>0且銷量>1000”的商品占5%(5萬(wàn)條)?,F(xiàn)需設(shè)計(jì)一個(gè)查詢,找出“庫(kù)存>0或銷量>1000”的商品,有兩種索引方案:方案一:為“庫(kù)存>0”建立布爾索引(索引A);方案二:為“銷量>1000”建立布爾索引(索引B);方案三:為“庫(kù)存>0OR銷量>1000”建立聯(lián)合索引(索引C)。問(wèn)題:從查詢效率(IO次數(shù))角度,應(yīng)優(yōu)先選擇哪種方案?若數(shù)據(jù)庫(kù)支持概率統(tǒng)計(jì)(如知道各條件的滿足概率),如何通過(guò)邏輯推理優(yōu)化索引選擇?答案:需計(jì)算不同索引下的查詢成本,核心是減少需要掃描的數(shù)據(jù)量。(1)基礎(chǔ)概率計(jì)算:-P(庫(kù)存>0)=0.2,P(銷量>1000)=0.1,P(庫(kù)存>0∧銷量>1000)=0.05。-根據(jù)容斥原理,P(庫(kù)存>0∨銷量>1000)=P(A)+P(B)-P(A∧B)=0.2+0.1-0.05=0.25(25萬(wàn)條)。(2)各方案的查詢邏輯:方案一(索引A):通過(guò)索引A找到庫(kù)存>0的20萬(wàn)條記錄,再?gòu)闹泻Y選出銷量≤1000的記錄(20萬(wàn)-5萬(wàn)=15萬(wàn)條),然后需要額外掃描銷量>1000但庫(kù)存≤0的記錄(總銷量>1000的10萬(wàn)條中,5萬(wàn)條庫(kù)存>0,因此庫(kù)存≤0的銷量>1000的記錄為5萬(wàn)條)??傂杼幚?0萬(wàn)+5萬(wàn)=25萬(wàn)條(與目標(biāo)結(jié)果數(shù)相同)。方案二(索引B):類似方案一,通過(guò)索引B找到銷量>1000的10萬(wàn)條記錄,再篩選出庫(kù)存≤0的5萬(wàn)條,然后掃描庫(kù)存>0但銷量≤1000的15萬(wàn)條,總處理10萬(wàn)+15萬(wàn)=25萬(wàn)條。方案三(索引C):直接通過(guò)聯(lián)合索引找到滿足“庫(kù)存>0OR銷量>1000”的25萬(wàn)條記錄,無(wú)需額外掃描。(3)IO成本對(duì)比:索引的IO成本主要取決于索引覆蓋的數(shù)據(jù)量和是否需要回表。假設(shè)索引A、B、C均為非覆蓋索引(需回表獲取其他字段),則:-方案一:掃描索引A的20萬(wàn)條→回表20萬(wàn)次;掃描銷量>1000且?guī)齑妗?的5萬(wàn)條(需全表掃描或通過(guò)索引B掃描10萬(wàn)條后過(guò)濾5萬(wàn)條)→回表5萬(wàn)次??偦乇?5萬(wàn)次。-方案二:掃描索引B的10萬(wàn)條→回表10萬(wàn)次;掃描庫(kù)存>0且銷量≤1000的15萬(wàn)條(需全表掃描或通過(guò)索引A掃描20萬(wàn)條后過(guò)濾15萬(wàn)條)→回表15萬(wàn)次??偦乇?5萬(wàn)次。-方案三:掃描索引C的25萬(wàn)條→回表25萬(wàn)次。表面看三者回表次數(shù)相同,但實(shí)際中:-索引A和B的掃描可能涉及更多離散IO(例如,庫(kù)存>0的記錄可能分散在磁盤不同位置),而索引C的聯(lián)合條件可能將滿足條件的記錄在索引中連續(xù)存儲(chǔ)(若索引按“庫(kù)存>0OR銷量>1000”排序),減少尋道時(shí)間。-若數(shù)據(jù)庫(kù)支持索引合并(IndexMerge),方案一和方案二可通過(guò)OR條件合并索引A和B的結(jié)果,避免全表掃描。此時(shí),索引合并的成本為掃描索引A(20萬(wàn)條)和索引B(10萬(wàn)條),取并集(25萬(wàn)條),回表25萬(wàn)次。但索引合并的CPU成本(去重)可能高于直接掃描索引C。(4)概率優(yōu)化的邏輯:數(shù)據(jù)庫(kù)若知道各條件的概率,可通過(guò)計(jì)算“選擇性”(Selectivity)選擇最優(yōu)索引。選擇性=滿足條件的記錄數(shù)/總記錄數(shù)。-索引
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年小學(xué)畢業(yè)考試真題及答案
- 江蘇省考真題2025
- 2025公務(wù)員金融類試題及答案
- 烏司他丁對(duì)老年人腹部手術(shù)術(shù)后認(rèn)知功能的影響:機(jī)制與臨床實(shí)踐
- β-環(huán)糊精衍生物的合成優(yōu)化與毛細(xì)管電泳手性拆分應(yīng)用研究
- 2024年吉林長(zhǎng)春市消防救援支隊(duì)特勤大隊(duì)招錄政府專職消防員筆試真題
- 競(jìng)爭(zhēng)對(duì)手情報(bào)收集方法
- 2024年上海市第一人民醫(yī)院招聘真題
- 2024年二級(jí)造價(jià)師考試題庫(kù)附完整答案【全優(yōu)】
- 《病原生物與免疫學(xué)》練習(xí)題庫(kù)(含答案)
- FZ/T 95032-2021長(zhǎng)環(huán)蒸化機(jī)
- 水電站教學(xué)講解課件
- N-苯基馬來(lái)酰亞胺
- 自控儀表安裝工程施工方案52919
- 激光職業(yè)病危害告知卡
- 易氧化有機(jī)碳的測(cè)定
- 壓力性尿失禁專題宣講PPT培訓(xùn)課件
- 化學(xué)藥品新注冊(cè)分類申報(bào)資料要求英文版-1類
- (完整版)100句搞定雅思閱讀長(zhǎng)難句——練習(xí)版
- 中國(guó)銀監(jiān)會(huì)關(guān)于整治銀行業(yè)金融機(jī)構(gòu)不規(guī)范經(jīng)營(yíng)的通知
- 礦山機(jī)電設(shè)備綜述ppt課件
評(píng)論
0/150
提交評(píng)論