版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2026年程序員中級面試專業(yè)題集一、編程語言與數(shù)據(jù)結(jié)構(gòu)(共5題,每題10分,總分50分)1.題目:請實(shí)現(xiàn)一個函數(shù),輸入一個整數(shù)數(shù)組,返回數(shù)組中所有可能的子集(不包含空集)。要求:不能使用遞歸,時間復(fù)雜度盡可能低。示例輸入:`[1,2,3]`示例輸出:`[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]`2.題目:給定一個字符串`s`,判斷其是否是有效的括號字符串(只包含`'{'`、`'}'`、`'['`、`']'`、`'('`、`')'`,且括號匹配正確)。示例輸入:`"()[]{}"`示例輸出:`true`示例輸入:`"(]"`示例輸出:`false`3.題目:實(shí)現(xiàn)一個LRU(LeastRecentlyUsed)緩存,支持`get`和`put`操作。LRU緩存容量為`capacity`,當(dāng)緩存滿時,最近最少使用的項(xiàng)將被移除。示例輸入:`LRUCache=LRUCache(2)``LRUCache.put(1,1)``LRUCache.put(2,2)``LRUCache.get(1)`//返回1`LRUCache.put(3,3)`//去除鍵2`LRUCache.get(2)`//返回-1(未找到)示例輸出:`[1,-1]`4.題目:給定一個非負(fù)整數(shù)`num`,將其轉(zhuǎn)換為羅馬數(shù)字。羅馬數(shù)字由以下字符組成:`I=1`,`V=5`,`X=10`,`L=50`,`C=100`,`D=500`,`M=1000`。示例輸入:`3`示例輸出:`"III"`5.題目:實(shí)現(xiàn)一個快速排序算法,要求:-不使用遞歸,使用迭代的方式實(shí)現(xiàn)。-處理包含重復(fù)元素的數(shù)組時,要求穩(wěn)定性(盡量保持相等元素的相對順序)。示例輸入:`[4,2,2,8,3,3,1]`示例輸出:`[1,2,2,3,3,4,8]`二、系統(tǒng)設(shè)計(共3題,每題15分,總分45分)1.題目:設(shè)計一個短鏈接系統(tǒng),要求:-輸入一個長鏈接,返回一個短鏈接(如`/abcd`)。-支持通過短鏈接反查原始長鏈接。-系統(tǒng)需要支持高并發(fā)訪問,且短鏈接生成唯一性要求高。考察點(diǎn):-分布式ID生成方案(如TwitterSnowflake算法)。-高并發(fā)緩存策略(Redis)。-數(shù)據(jù)庫設(shè)計(短鏈接與長鏈接的映射關(guān)系)。2.題目:設(shè)計一個實(shí)時日志分析系統(tǒng),要求:-支持每秒接收大量日志(如10萬條/秒)。-實(shí)時統(tǒng)計當(dāng)前活躍用戶數(shù)(如IP或設(shè)備ID)。-支持按時間窗口(如1分鐘)統(tǒng)計PV、UV??疾禳c(diǎn):-數(shù)據(jù)流處理框架(如Flink或SparkStreaming)。-內(nèi)存緩存(Redis)。-數(shù)據(jù)庫寫入優(yōu)化(水平分片)。3.題目:設(shè)計一個消息隊(duì)列(如Kafka),要求:-支持高吞吐量和低延遲(如毫秒級)。-保證消息的順序性(同一會話的消息按發(fā)送順序消費(fèi))。-支持消息重試機(jī)制(如失敗后重新投遞)。考察點(diǎn):-消息分區(qū)策略。-消息確認(rèn)機(jī)制(如ACK)。-容災(zāi)設(shè)計(多副本存儲)。三、數(shù)據(jù)庫與SQL(共4題,每題12分,總分48分)1.題目:假設(shè)有一個訂單表`orders`,字段包括`id`(主鍵)、`user_id`、`order_time`(訂單創(chuàng)建時間)、`status`(訂單狀態(tài),如`'pending'`、`'completed'`)。請寫SQL查詢:-統(tǒng)計每個狀態(tài)下的訂單數(shù)量,按狀態(tài)升序排列。-查詢最近7天內(nèi)每個用戶的訂單完成率(`status='completed'`的比例)。2.題目:假設(shè)有一個商品表`products`,字段包括`id`(主鍵)、`name`、`category`、`price`。請寫SQL查詢:-查詢每個分類下的平均價格,且只返回平均價格超過100的商品分類。-查詢價格最低的前3個商品,要求按分類分組,同類商品按價格升序。3.題目:假設(shè)有一個用戶表`users`(`id`,`name`,`city`)和一個訂單表`orders`(`id`,`user_id`,`amount`)。請寫SQL查詢:-查詢每個城市的用戶數(shù)量,且只返回用戶數(shù)量超過100的城市。-查詢每個用戶的總消費(fèi)金額,并按消費(fèi)金額降序排列,只返回消費(fèi)金額前10的用戶。4.題目:假設(shè)有一個表`logs`,包含字段`id`,`user_id`,`action`(如`'login'`,`'logout'`,`'purchase'`),`timestamp`。請寫SQL查詢:-查詢每個用戶的最后`'login'`和`'logout'`時間,并計算登錄時長(`logout`-`login`)。-查詢最近24小時內(nèi),每個`'purchase'`動作的用戶數(shù)量。四、網(wǎng)絡(luò)與分布式(共3題,每題15分,總分45分)1.題目:解釋HTTP和HTTPS的區(qū)別,并說明HTTPS的工作原理(TLS/SSL握手過程)??疾禳c(diǎn):-HTTP狀態(tài)碼(如`200`,`404`,`500`)的含義。-TLS握手步驟(ClientHello,ServerHello,Certificate,etc.)。-CDN和WAF的作用。2.題目:假設(shè)你要設(shè)計一個分布式緩存系統(tǒng)(如Redis集群),要求:-說明Redis集群的節(jié)點(diǎn)劃分方式(如16384個槽位)。-如何保證緩存的高可用性(主從復(fù)制+哨兵或RedisSentinel)。-緩存穿透、緩存擊穿、緩存雪崩的解決方案。3.題目:解釋CAP理論,并說明在分布式系統(tǒng)中如何選擇一致性模型(強(qiáng)一致性、最終一致性)。考察點(diǎn):-Paxos/Raft算法的基本原理。-分布式事務(wù)(2PC/3PC)。-CAP理論在實(shí)踐中的應(yīng)用(如Cassandra與MongoDB的選擇)。五、算法與設(shè)計(共4題,每題12分,總分48分)1.題目:給定一個字符串`s`,判斷其是否是回文串(忽略大小寫和非字母數(shù)字字符)。示例輸入:`"Aman,aplan,acanal:Panama"`示例輸出:`true`示例輸入:`"raceacar"`示例輸出:`false`2.題目:實(shí)現(xiàn)一個二叉樹的深度優(yōu)先遍歷(前序、中序、后序),要求:-不使用遞歸,使用棧實(shí)現(xiàn)。-輸出遍歷結(jié)果。示例輸入:1/\23/\45示例輸出:-前序:`[1,2,4,5,3]`-中序:`[4,2,5,1,3]`-后序:`[4,5,2,3,1]`3.題目:實(shí)現(xiàn)一個LRU緩存,使用雙向鏈表和哈希表實(shí)現(xiàn)(不使用現(xiàn)成庫)??疾禳c(diǎn):-雙向鏈表的插入和刪除操作。-哈希表快速查找。4.題目:設(shè)計一個算法,判斷一個無向圖是否是二分圖(BipartiteGraph)??疾禳c(diǎn):-深度優(yōu)先搜索(DFS)或廣度優(yōu)先搜索(BFS)的應(yīng)用。-色彩標(biāo)記法。答案與解析一、編程語言與數(shù)據(jù)結(jié)構(gòu)1.子集生成(非遞歸)pythondefsubsets(nums):res=[[]]fornuminnums:復(fù)制當(dāng)前所有子集,并添加新元素new_subsets=[]forsubsetinres:new_subsets.append(subset+[num])res+=new_subsetsreturnres解析:-使用迭代方式,初始時只有空集`[]`。-每次遍歷一個新元素,將其添加到所有現(xiàn)有子集的末尾,生成新的子集。-時間復(fù)雜度:O(2^n),因?yàn)槊總€元素有選擇或不選擇的兩種情況。2.有效括號判斷pythondefisValid(s):stack=[]mapping={')':'(','}':'{',']':'['}forcharins:ifcharinmapping:top=stack.pop()ifstackelse'#'ifmapping[char]!=top:returnFalseelse:stack.append(char)returnnotstack解析:-使用棧,遇到左括號入棧,遇到右括號時彈出棧頂并檢查是否匹配。-棧頂始終是最近未匹配的左括號。-時間復(fù)雜度:O(n),每個字符遍歷一次。3.LRU緩存(迭代實(shí)現(xiàn))pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.order=[]defget(self,key:int)->int:ifkeyinself.cache:將key移動到order末尾表示最近使用self.order.remove(key)self.order.append(key)returnself.cache[key]return-1defput(self,key:int,value:int)->None:ifkeyinself.cache:更新值,并移動到最近使用self.order.remove(key)eliflen(self.cache)==self.capacity:移除最久未使用的元素(order第一個)oldest=self.order.pop(0)delself.cache[oldest]self.cache[key]=valueself.order.append(key)解析:-使用哈希表`cache`存儲鍵值對,`order`列表記錄使用順序。-`get`時將key移到列表末尾,`put`時如果容量滿則刪除列表第一個元素。4.整數(shù)轉(zhuǎn)羅馬數(shù)字pythondefintToRoman(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"]res=[]foriinrange(len(val)):whilenum>=val[i]:res.append(syms[i])num-=val[i]return''.join(res)解析:-從最大值開始匹配,將對應(yīng)符號添加到結(jié)果中,并減少數(shù)值。-時間復(fù)雜度:O(1),符號數(shù)量固定。5.迭代快速排序(穩(wěn)定性)pythondefquick_sort(arr):stack=[(0,len(arr)-1)]whilestack:start,end=stack.pop()ifstart>=end:continuepivot=arr[end]lt=startgt=endi=startwhilei<=gt:ifarr[i]<pivot:arr[i],arr[lt]=arr[lt],arr[i]lt+=1i+=1elifarr[i]>pivot:arr[i],arr[gt]=arr[gt],arr[i]gt-=1else:i+=1stack.append((start,lt-1))stack.append((gt+1,end))returnarr解析:-使用棧模擬遞歸,將數(shù)組分為`<pivot`、`==pivot`、`>pivot`三部分。-穩(wěn)定性通過`lt`和`gt`指針控制,確保相等元素保持順序。二、系統(tǒng)設(shè)計1.短鏈接系統(tǒng)設(shè)計-ID生成:使用TwitterSnowflake算法,生成64位唯一ID(41位時間戳+10位機(jī)器ID+13位序列號)。-緩存策略:短鏈接查詢通過Redis緩存,TTL設(shè)為24小時。-數(shù)據(jù)庫設(shè)計:sqlCREATETABLEshort_links(idBIGINTPRIMARYKEY,original_urlVARCHAR(2048),created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP);-高并發(fā)處理:API網(wǎng)關(guān)限流,后端通過ShardingSphere水平分庫。2.實(shí)時日志分析系統(tǒng)-數(shù)據(jù)流處理:使用Flink窗口函數(shù)統(tǒng)計1分鐘內(nèi)PV/UV,內(nèi)存緩存活躍用戶(Redis)。-數(shù)據(jù)庫優(yōu)化:日志表按時間分片(每日一個分區(qū)),使用InnoDB引擎支持高并發(fā)寫入。-容災(zāi)方案:Kafka集群3副本,日志寫入HDFS雙副本。3.消息隊(duì)列設(shè)計-分區(qū)策略:按業(yè)務(wù)ID哈希分區(qū),確保同一會話消息有序。-確認(rèn)機(jī)制:消費(fèi)端ACK確認(rèn),超時自動重試(最多3次)。-容災(zāi)設(shè)計:消息副本存儲在異構(gòu)機(jī)房,使用Raft協(xié)議保證數(shù)據(jù)一致性。三、數(shù)據(jù)庫與SQL1.訂單統(tǒng)計SQLsql--訂單數(shù)量統(tǒng)計SELECTstatus,COUNT()AScountFROMordersGROUPBYstatusORDERBYstatus;--用戶完成率SELECTuser_id,ROUND(COUNT(CASEWHENstatus='completed'THEN1END)1.0/COUNT()100,2)AScompletion_rateFROMordersWHEREorder_time>=NOW()-INTERVAL7DAYGROUPBYuser_idORDERBYcompletion_rateDESC;2.商品價格統(tǒng)計SQLsql--分類平均價格>100SELECTcategory,AVG(price)ASavg_priceFROMproductsGROUPBYcategoryHAVINGAVG(price)>100;--價格最低的前3個商品(按分類分組)SELECTid,name,priceFROM(SELECTid,name,price,category,ROW_NUMBER()OVER(PARTITIONBYcategoryORDERBYprice)ASrankFROMproducts)ASrankedWHERErank<=3;3.用戶統(tǒng)計SQLsql--城市用戶數(shù)量>100SELECTcity,COUNT()ASuser_countFROMusersGROUPBYcityHAVINGCOUNT()>100;--消費(fèi)金額前10的用戶SELECTuser_id,SUM(amount)AStotal_spentFROMordersGROUPBYuser_idORDERBYtotal_spentDESCLIMIT10;4.日志分析SQLsql--最后登錄/登出時間SELECTuser_id,MAX(CASEWHENaction='login'THENtimestampEND)ASlast_login,MAX(CASEWHENaction='logout'THENtimestampEND)ASlast_logoutFROMlogsGROUPBYuser_id;--24小時內(nèi)購買次數(shù)SELECTuser_id,COUNT()ASpurchase_countFROMlogsWHEREaction='purchase'ANDtimestamp>=NOW()-INTERVAL24HOURGROUPBYuser_id;四、網(wǎng)絡(luò)與分布式1.HTTP與HTTPS-區(qū)別:-HTTP:明文傳輸,易被竊??;HTTPS:加密傳輸(TLS/SSL)。-HTTPS需要證書和CA驗(yàn)證。-TLS握手過程:1.ClientHello:發(fā)送支持的加密算法、隨機(jī)數(shù)。2.ServerHello:選擇最優(yōu)算法,發(fā)送證書。3.證書驗(yàn)證:CA驗(yàn)證證書有效性。4.SessionKeys:協(xié)商生成對稱密鑰。2.Redis集群設(shè)計-節(jié)點(diǎn)劃分:16384個槽位,每個節(jié)點(diǎn)負(fù)責(zé)部分槽位。-高可用:-主從復(fù)制(Master寫,Slave讀)。-哨兵(Sentinel)監(jiān)控Master,故障自動切換。-緩存問題解決方案:-緩存穿透:布隆過濾器攔截不存在的key。-緩存擊穿:設(shè)置熱點(diǎn)key永不過期。-緩存雪崩:隨機(jī)設(shè)置不同TTL。3.CAP理論-定義:-C:一致性(所有節(jié)點(diǎn)數(shù)據(jù)實(shí)時同步)。-A:可用性(任何請求都能得到響應(yīng))。-P:分區(qū)容錯性(網(wǎng)絡(luò)分區(qū)下仍能運(yùn)行)。-選擇:-分布式事務(wù)(如2PC)選C,消息隊(duì)列(如Kafka)選A。-Cassandra選P(最終一致性),MongoDB選C(強(qiáng)一致性)。五、算法與設(shè)計1.回文串判斷pythondefisPalindrome(s:str)->bool:s=''.join(c.lower()forcinsifc.isalnum())returns==s[::-1]解析:-去除非字母數(shù)字字符并轉(zhuǎn)為小寫,然后比較正反是否相等。2.二叉樹遍歷(迭代)pythondefpreorderTraversal(root):ifnotroot:return[]stack,res=[root],[]whilestack:node=stack.pop()res.append(node.val)ifnode.right:stack.append(node.right)ifnode.left:stack.append(node.left)returnresdefinorderTraversal(root):stack,res,node=[],[],rootwhilestackornode:whilenode:stack.append(node);node=node.leftnode=stack.pop();res.append(node.val);node=node.rightreturnresdefpostorderTraversal(root):stack,res=[(root,False)],[]whilestack:node,visited=stack.pop()ifnode:ifvisited:res.append(node.val)else:stack.append((node,True))stack.append((node.right,False))stack.append((node.left,False))returnres3.LRU緩存(雙向鏈表+哈希表)pythonclassNode:def__init__(self,key,value):self.key=keyself.value=valueself.prev=Noneself.next=NoneclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.head,self.tail=Node(0,0),Node(0,0)self.head.next=self.tailself.tail.prev=self.headdefget(self,key:int)->int:ifkeyinself.cache:node=self.cache[key]sel
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工地施工材料運(yùn)輸安全管理方案
- 企業(yè)內(nèi)部培訓(xùn)與變革管理
- 感統(tǒng)訓(xùn)練師綜合能力測評方案試題及答案
- 人力資源培訓(xùn)服務(wù)手冊(標(biāo)準(zhǔn)版)
- 企業(yè)內(nèi)部培訓(xùn)與績效管理手冊
- 園林綠化工程的園路、廣場施工方案
- 模板工程施工方案
- 中國醫(yī)師協(xié)會心血管疾病介入診療培訓(xùn)第月習(xí)題及答案
- 江西工業(yè)工程職業(yè)技術(shù)學(xué)院《室內(nèi)軟裝設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 常州工業(yè)職業(yè)技術(shù)學(xué)院《傳感器與自動檢測技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東省濟(jì)南市2025-2026年高三上第一次模擬考試生物+答案
- 寒假蓄力一模沖刺+課件-2025-2026學(xué)年高三上學(xué)期寒假規(guī)劃班會課
- 2026年廣州中考政治真題變式訓(xùn)練試卷(附答案可下載)
- 2026國家國防科技工業(yè)局所屬事業(yè)單位第一批招聘62人備考題庫及參考答案詳解1套
- 2025-2026學(xué)年天津市河?xùn)|區(qū)八年級(上)期末英語試卷
- 2025年初中初一語文基礎(chǔ)練習(xí)
- 2026年中央網(wǎng)信辦直屬事業(yè)單位-國家計算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心校園招聘備考題庫參考答案詳解
- 老友記電影第十季中英文對照劇本翻譯臺詞
- 2025年黑龍江省大慶市檢察官逐級遴選筆試題目及答案
- 國保秘密力量工作課件
- 影視分鏡師合同范本
評論
0/150
提交評論