版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2026年軟件開發(fā)工程師面試題目與解析一、編程語(yǔ)言與基礎(chǔ)算法(共5題,每題10分,總分50分)1.題目:給定一個(gè)非空字符串`s`,最多刪除`1`個(gè)字符后,判斷能否使字符串成為回文字符串。例如,`"aba"`和`"abca"`都是回文,但`"abca"`刪除`'b'`后可成為回文。請(qǐng)實(shí)現(xiàn)該功能。2.題目:設(shè)計(jì)一個(gè)函數(shù),將一個(gè)非負(fù)整數(shù)`n`轉(zhuǎn)換為羅馬數(shù)字。羅馬數(shù)字由`'I'`,`'V'`,`'X'`,`'L'`,`'C'`,`'D'`,`'M'`組成,其中`'I'`=1,`'V'`=5,`'X'`=10,`'L'`=50,`'C'`=100,`'D'`=500,`'M'`=1000。例如,`3`轉(zhuǎn)換為`'III'`,`4`轉(zhuǎn)換為`'IV'`,`9`轉(zhuǎn)換為`'IX'`。3.題目:給定一個(gè)整數(shù)數(shù)組`nums`和一個(gè)目標(biāo)值`target`,返回?cái)?shù)組中和為目標(biāo)值的三元組數(shù)量。例如,`nums=[-1,0,1,2]`,`target=0`,則解為`[(-1,0,1),(-1,2,1)]`。4.題目:實(shí)現(xiàn)一個(gè)LRU(最近最少使用)緩存,使用哈希表和雙向鏈表結(jié)合。提供`get`和`put`方法,`get(key)`返回`key`對(duì)應(yīng)的值,如果不存在返回`-1`;`put(key,value)`插入或更新鍵值對(duì),如果容量已滿,則刪除最久未使用的元素。5.題目:給定一個(gè)鏈表,判斷鏈表是否存在環(huán)。如果存在,返回入環(huán)的起始節(jié)點(diǎn);否則返回`null`。例如,`1->2->3->4->2`(`2`重復(fù),存在環(huán))。二、系統(tǒng)設(shè)計(jì)(共3題,每題15分,總分45分)1.題目:設(shè)計(jì)一個(gè)高并發(fā)的短鏈接系統(tǒng)。要求:-輸入任意長(zhǎng)度的URL,返回固定長(zhǎng)度的短鏈接(如`/abcde`)。-支持高并發(fā)訪問(wèn),秒級(jí)響應(yīng)。-支持自定義短鏈接前綴和有效期。-要求說(shuō)明數(shù)據(jù)結(jié)構(gòu)、算法、分布式部署方案及負(fù)載均衡策略。2.題目:設(shè)計(jì)一個(gè)消息隊(duì)列系統(tǒng)(如Kafka的簡(jiǎn)化版),要求:-支持至少`1000`TPS的消息吞吐量。-保證消息的至少一次傳遞。-提供消息重試機(jī)制和死信隊(duì)列。-說(shuō)明核心組件(生產(chǎn)者、消費(fèi)者、Broker、Topic)、數(shù)據(jù)一致性協(xié)議(如ISR)及故障恢復(fù)方案。3.題目:設(shè)計(jì)一個(gè)實(shí)時(shí)推薦系統(tǒng),輸入用戶行為日志(如點(diǎn)擊、購(gòu)買),輸出個(gè)性化推薦結(jié)果。要求:-支持`10萬(wàn)`并發(fā)用戶請(qǐng)求。-推薦算法需兼顧實(shí)時(shí)性和準(zhǔn)確性(如協(xié)同過(guò)濾+深度學(xué)習(xí))。-說(shuō)明數(shù)據(jù)存儲(chǔ)方案(如Redis+HBase)、計(jì)算框架(如Spark/Flink)及離線與在線結(jié)合的架構(gòu)。三、數(shù)據(jù)庫(kù)與分布式(共4題,每題15分,總分60分)1.題目:解釋MySQL中的`事務(wù)`、`隔離級(jí)別`(讀未提交、讀已提交、可重復(fù)讀、串行化)及`MVCC`(多版本并發(fā)控制)的實(shí)現(xiàn)原理。舉例說(shuō)明`臟讀`、`不可重復(fù)讀`、`幻讀`的場(chǎng)景。2.題目:設(shè)計(jì)一個(gè)分布式數(shù)據(jù)庫(kù)分片方案,要求:-支持`1000`萬(wàn)用戶數(shù)據(jù),分片鍵為`user_id`。-考慮分片鍵的哈希取模、范圍分片等方案,說(shuō)明優(yōu)缺點(diǎn)。-描述跨分片查詢的解決方案及數(shù)據(jù)一致性問(wèn)題。3.題目:如何優(yōu)化SQL查詢性能?給出至少`3`個(gè)具體方案,如:-索引設(shè)計(jì)(主鍵、外鍵、組合索引)。-查詢優(yōu)化(`EXPLAIN`分析、`JOIN`類型選擇)。-緩存策略(Redis+MySQL)。4.題目:解釋`分布式鎖`的幾種實(shí)現(xiàn)方式(基于Redis、Zookeeper、數(shù)據(jù)庫(kù))及`Redis`分布式鎖的`Lua`腳本防死鎖方案。四、網(wǎng)絡(luò)與安全(共3題,每題15分,總分45分)1.題目:解釋TCP的三次握手和四次揮手過(guò)程,說(shuō)明每個(gè)階段的作用及可能出現(xiàn)的異常場(chǎng)景(如`TIME_WAIT`狀態(tài))。2.題目:如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的HTTPS加密通信?說(shuō)明`非對(duì)稱加密`、`對(duì)稱加密`、`證書`(`CA`簽發(fā))及`TLS`握手過(guò)程。3.題目:列舉常見的Web安全漏洞(如`XSS`、`CSRF`、`SQL注入`),并給出防護(hù)措施。例如,`XSS`可通過(guò)`HTML實(shí)體編碼`、`CSP`(內(nèi)容安全策略)防御。五、編程題(共3題,每題20分,總分60分)1.題目:用Python或Java實(shí)現(xiàn)快速排序算法,要求:-手寫代碼,不得使用庫(kù)函數(shù)。-說(shuō)明遞歸與迭代兩種實(shí)現(xiàn)方式,并分析時(shí)間復(fù)雜度。2.題目:實(shí)現(xiàn)一個(gè)簡(jiǎn)單的LRU緩存類,支持`get`和`put`方法。要求:-使用`HashMap`和`LinkedList`實(shí)現(xiàn)。-提供`put`時(shí)刪除最久未使用節(jié)點(diǎn)的邏輯。3.題目:設(shè)計(jì)一個(gè)算法,輸入一個(gè)`n`層二叉樹,輸出所有從根到葉子的路徑。例如,`n=3`的二叉樹,輸出`["1->2->4","1->3"]`。答案與解析一、編程語(yǔ)言與基礎(chǔ)算法1.回文刪除題代碼示例(Python):pythondefvalid_palindrome(s:str)->bool:defis_palindrome(i,j):whilei<j:ifs[i]!=s[j]:returnFalsei+=1j-=1returnTruei,j=0,len(s)-1whilei<j:ifs[i]!=s[j]:returnis_palindrome(i+1,j)oris_palindrome(i,j-1)i+=1j-=1returnTrue解析:-雙指針從兩端向中間遍歷,遇到不匹配時(shí)嘗試刪除左或右字符,任一子串為回文即返回`True`。-時(shí)間復(fù)雜度:`O(n)`,`is_palindrome`函數(shù)最多調(diào)用`O(n)`次。2.整數(shù)轉(zhuǎn)羅馬數(shù)字代碼示例(Python):pythondefint_to_roman(num:int)->str:val=[1000,900,500,400,100,90,50,40,10,9,5,4,1]syms=["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]roman=''foriinrange(len(val)):whilenum>=val[i]:roman+=syms[i]num-=val[i]returnroman解析:-列表`val`和`syms`按從大到小排列,貪心算法從高位到低位匹配羅馬數(shù)字符號(hào)。-時(shí)間復(fù)雜度:`O(1)`,最多循環(huán)12次。3.三數(shù)之和代碼示例(Python):pythondefthree_sum(nums,target):nums.sort()n=len(nums)res=[]foriinrange(n):ifi>0andnums[i]==nums[i-1]:continueleft,right=i+1,n-1whileleft<right:total=nums[i]+nums[left]+nums[right]iftotal==target:res.append([nums[i],nums[left],nums[right]])whileleft<rightandnums[left]==nums[left+1]:left+=1whileleft<rightandnums[right]==nums[right-1]:right-=1left+=1right-=1eliftotal<target:left+=1else:right-=1returnres解析:-先排序,雙指針`left`和`right`從兩端向中間移動(dòng),避免重復(fù)解。-時(shí)間復(fù)雜度:`O(n^2)`。4.LRU緩存代碼示例(Python):pythonclassLRUCache:def__init__(self,capacity:int):self.cache={}self.capacity=capacityself.head,self.tail=Node(0,0),Node(0,0)self.head.next=self.tailself.tail.prev=self.headclassNode:def__init__(self,key,value):self.key=keyself.value=valueself.prev,self.next=None,Nonedefget(self,key:int)->int:ifkeyinself.cache:node=self.cache[key]self._remove(node)self._add(node)returnnode.valuereturn-1defput(self,key:int,value:int)->None:ifkeyinself.cache:self._remove(self.cache[key])node=self.Node(key,value)self.cache[key]=nodeself._add(node)iflen(self.cache)>self.capacity:lru=self.tail.prevself._remove(lru)delself.cache[lru.key]def_remove(self,node):delself.cache[node.key]node.prev.next=node.nextnode.next.prev=node.prevdef_add(self,node):node.next=self.head.nextnode.next.prev=nodeself.head.next=nodenode.prev=self.head解析:-雙向鏈表+哈希表實(shí)現(xiàn),`get`時(shí)移動(dòng)節(jié)點(diǎn)到頭部,`put`時(shí)刪除最久未使用節(jié)點(diǎn)。-時(shí)間復(fù)雜度:`O(1)`。5.判斷鏈表環(huán)代碼示例(Python):pythonclassListNode:def__init__(self,x):self.val=xself.next=Nonedefdetect_cycle(head:ListNode)->ListNode:slow,fast=head,headwhilefastandfast.next:slow=slow.nextfast=fast.next.nextifslow==fast:slow=headwhileslow!=fast:slow=slow.nextfast=fast.nextreturnslowreturnNone解析:-快慢指針?lè)?,`slow`每次走1步,`fast`每次走2步,相遇時(shí)從頭部重新遍歷找入環(huán)點(diǎn)。-時(shí)間復(fù)雜度:`O(n)`,空間復(fù)雜度:`O(1)`。二、系統(tǒng)設(shè)計(jì)1.短鏈接系統(tǒng)設(shè)計(jì)核心思路:-使用`hash`算法(如`MD5`+`Base62`)將長(zhǎng)URL映射為短碼,如`/a1b2c3`。-數(shù)據(jù)結(jié)構(gòu):Redis存儲(chǔ)短碼與長(zhǎng)URL的映射,分布式緩存熱點(diǎn)數(shù)據(jù)。-分布式部署:使用`Nginx`負(fù)載均衡,分片存儲(chǔ)到不同Broker(如Kafka),避免單點(diǎn)故障。-安全性:HTTPS加密傳輸,短鏈接有效期控制。2.消息隊(duì)列設(shè)計(jì)核心組件:-生產(chǎn)者:向Broker發(fā)送消息,支持異步發(fā)送、重試機(jī)制。-Broker:存儲(chǔ)消息(如Topic分片),使用ISR(In-SyncReplicas)保證高可用。-消費(fèi)者:拉取或推送消息,支持手動(dòng)/自動(dòng)確認(rèn)。-數(shù)據(jù)一致性:通過(guò)`冪等性`(如消息簽名)、`事務(wù)消息`(如RocketMQ)保證至少一次傳遞。3.實(shí)時(shí)推薦系統(tǒng)設(shè)計(jì)架構(gòu):-離線:使用`Spark`計(jì)算用戶畫像、協(xié)同過(guò)濾模型。-在線:`Redis`存儲(chǔ)實(shí)時(shí)推薦結(jié)果,`Flink`處理實(shí)時(shí)流數(shù)據(jù)。-數(shù)據(jù)流:用戶行為日志→`Kafka`→`Flink`→`Redis`(推薦結(jié)果)→前端。三、數(shù)據(jù)庫(kù)與分布式1.事務(wù)與MVCC隔離級(jí)別:-讀未提交:可能出現(xiàn)臟讀(未提交數(shù)據(jù)被讀?。?。-讀已提交:避免臟讀,但不可重復(fù)讀(同一事務(wù)內(nèi)多次讀取結(jié)果不同)。-可重復(fù)讀:使用MVCC,保證同一事務(wù)內(nèi)讀取一致。-串行化:完全隔離,但性能最低。解析:-MySQL默認(rèn)`InnoDB`使用`可重復(fù)讀`,通過(guò)`ReadView`實(shí)現(xiàn)MVCC,記錄`updatetime`和`trx_id`判斷數(shù)據(jù)版本。2.分布式分片方案方案:-哈希分片:`user_id%N`,均分?jǐn)?shù)據(jù),但跨分片查詢效率低。-范圍分片:按`user_id`范圍分片(如`1-10000`、`10001-20000`),適合有序查詢。解析:-跨分片查詢需使用`ShardingKey`關(guān)聯(lián)所有分片,如`user_id`關(guān)聯(lián)訂單表需傳遞`user_id`。3.SQL優(yōu)化方案-索引優(yōu)化:如`user_id`作為主鍵,`order_id`作為外鍵。-查詢優(yōu)化:避免`SELECT`,使用`EXPLAIN`分析執(zhí)行計(jì)劃,優(yōu)先`JOIN`類型為`indexscan`。-緩存策略:熱點(diǎn)數(shù)據(jù)如`用戶信息`存入`Redis`,減少DB查詢。4.分布式鎖實(shí)現(xiàn)Redis方案:luaifredis.call("get",KEYS[1])==ARGV[1]thenredis.call("set",KEYS[1],ARGV[1],"NX","EX",10)return1elsereturn0end解析:-使用`Lua`腳本保證原子性,`NX`表示不存在時(shí)才設(shè)置,`EX`設(shè)置過(guò)期時(shí)間防止死鎖。四、網(wǎng)絡(luò)與安全1.TCP三次握手-第一次:客戶端發(fā)送`SYN=1,seq=x`。-第二次:服務(wù)器回復(fù)`SYN=1,ACK=1,seq=y,ack=x+1`。-第三次:客戶端回復(fù)`ACK=1,ack=y+1`。解析:-建立`連接確認(rèn)`,防止歷史連接請(qǐng)求重發(fā)。2.HTTPS實(shí)現(xiàn)-非對(duì)稱加密:客戶端用`公鑰`加密數(shù)據(jù),服務(wù)器用`私鑰`解密。-對(duì)稱加密:會(huì)話密鑰用非對(duì)稱加密傳輸,后續(xù)數(shù)據(jù)用`AES`傳輸。-證書:`CA`簽發(fā)證書,驗(yàn)證服務(wù)器身份。3.Web安全防護(hù)-`XSS`:輸入過(guò)濾(如`HTML實(shí)體編碼`)、`CSP`(限制腳本來(lái)源)。-`CSRF`:`Token`驗(yàn)證、`SameSite`
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 平房出租合同協(xié)議
- 工程量合同范本
- 建筑出租合同范本
- 征拆協(xié)助協(xié)議書
- 蕪湖光伏協(xié)議書
- 2025廣東工業(yè)大學(xué)物理與光電工程學(xué)院高層次人才招聘?jìng)淇己诵脑囶}附答案解析
- 學(xué)生自殺協(xié)議書
- 莊稼管護(hù)協(xié)議書
- 贈(zèng)與小孩協(xié)議書
- 裝修補(bǔ)充協(xié)議書
- 10Kv電力變壓器試驗(yàn)報(bào)告
- 市政工程試驗(yàn)檢測(cè)培訓(xùn)教程
- 寧夏調(diào)味料項(xiàng)目可行性研究報(bào)告
- GRR計(jì)算表格模板
- 長(zhǎng)沙市長(zhǎng)郡雙語(yǔ)實(shí)驗(yàn)學(xué)校人教版七年級(jí)上冊(cè)期中生物期中試卷及答案
- 馬克思主義經(jīng)典著作選讀智慧樹知到課后章節(jié)答案2023年下四川大學(xué)
- GB/T 19867.1-2005電弧焊焊接工藝規(guī)程
- GB/T 16102-1995車間空氣中硝基苯的鹽酸萘乙二胺分光光度測(cè)定方法
- GB/T 15171-1994軟包裝件密封性能試驗(yàn)方法
- 醫(yī)院轉(zhuǎn)院證明樣本圖片(范文四篇)
- 外科護(hù)理學(xué)期末試卷3套18p
評(píng)論
0/150
提交評(píng)論