版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2026年程序設(shè)計面試題庫及答案一、編程實現(xiàn)題(每題15分,共3題)1.編寫一個函數(shù),實現(xiàn)快速排序算法(QuickSort)要求:-輸入一個整數(shù)數(shù)組,返回排序后的數(shù)組。-不能使用現(xiàn)成的排序庫函數(shù)(如Python的`sorted()`或Java的`Arrays.sort()`)。-請展示核心代碼和測試用例。答案:pythondefquick_sort(arr):iflen(arr)<=1:returnarrpivot=arr[len(arr)//2]left=[xforxinarrifx<pivot]middle=[xforxinarrifx==pivot]right=[xforxinarrifx>pivot]returnquick_sort(left)+middle+quick_sort(right)測試用例test_arr=[3,6,8,10,1,2,1]print(quick_sort(test_arr))#輸出:[1,1,2,3,6,8,10]解析:-快速排序采用分治法,核心思想是選擇一個基準值(pivot),將數(shù)組分為三部分:小于基準值的、等于基準值的、大于基準值的。-遞歸地對左右兩部分繼續(xù)排序,最終合并。-時間復(fù)雜度:平均O(nlogn),最壞O(n2)(當(dāng)基準值選擇不均勻時)。2.編寫一個函數(shù),實現(xiàn)二叉樹的深度優(yōu)先遍歷(DFS)要求:-輸入一個二叉樹的根節(jié)點,返回前序遍歷的結(jié)果列表。-不能使用現(xiàn)成的庫函數(shù)(如Python的`collections.deque`)。-請展示核心代碼和測試用例。答案:pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefpreorder_dfs(root):ifnotroot:return[]result=[]stack=[root]whilestack:node=stack.pop()result.append(node.val)ifnode.right:stack.append(node.right)ifnode.left:stack.append(node.left)returnresult測試用例root=TreeNode(1)root.left=TreeNode(2)root.right=TreeNode(3)root.left.left=TreeNode(4)root.left.right=TreeNode(5)print(preorder_dfs(root))#輸出:[1,2,4,5,3]解析:-前序遍歷的順序是:根節(jié)點->左子樹->右子樹。-使用棧實現(xiàn)DFS,先訪問右子節(jié)點是因為棧是后進先出(LIFO),需要先處理右子樹。-時間復(fù)雜度:O(n),每個節(jié)點訪問一次。3.編寫一個函數(shù),實現(xiàn)LRU(LeastRecentlyUsed)緩存機制要求:-使用Python實現(xiàn),不能使用現(xiàn)成的`collections.OrderedDict`。-支持兩個操作:`get(key)`和`put(key,value)`。-請展示核心代碼和測試用例。答案:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.order=[]defget(self,key:int)->int:ifkeynotinself.cache:return-1self.order.remove(key)self.order.append(key)returnself.cache[key]defput(self,key:int,value:int)->None:ifkeyinself.cache:self.order.remove(key)eliflen(self.cache)>=self.capacity:oldest_key=self.order.pop(0)delself.cache[oldest_key]self.cache[key]=valueself.order.append(key)測試用例cache=LRUCache(2)cache.put(1,1)cache.put(2,2)print(cache.get(1))#返回1cache.put(3,3)#去除鍵2print(cache.get(2))#返回-1cache.put(4,4)#去除鍵1print(cache.get(1))#返回-1print(cache.get(3))#返回3print(cache.get(4))#返回4解析:-LRU緩存通過記錄訪問順序,每次訪問或插入時移動節(jié)點到尾部,最久未訪問的節(jié)點在頭部。-使用列表`self.order`記錄順序,字典`self.cache`存儲鍵值對。-時間復(fù)雜度:`get`和`put`均為O(1)。二、算法設(shè)計題(每題20分,共2題)1.設(shè)計一個算法,判斷一個無向圖是否是二分圖(BipartiteGraph)要求:-輸入圖的鄰接表表示,返回布爾值及顏色分配(用0和1表示兩種顏色)。-不能使用現(xiàn)成的庫函數(shù)(如Python的`networkx`)。-請展示核心代碼和測試用例。答案:pythondefis_bipartite(graph):color={}fornodeingraph:ifnodenotincolor:stack=[node]color[node]=0whilestack:current=stack.pop()forneighboringraph[current]:ifneighbornotincolor:color[neighbor]=1-color[current]stack.append(neighbor)elifcolor[neighbor]==color[current]:returnFalsereturnTrue,color測試用例graph1={0:[1,3],1:[0,2],2:[1,3],3:[0,2]}print(is_bipartite(graph1))#輸出:(True,{0:0,1:1,2:1,3:0})graph2={0:[1,2],1:[0,3],2:[0],3:[1]}print(is_bipartite(graph2))#輸出:(False,{0:0,1:1,2:0,3:1})解析:-二分圖可以分成兩個集合,其中任何兩個相鄰節(jié)點顏色不同。-使用DFS遍歷圖,用`color`字典記錄顏色,初始節(jié)點設(shè)為0,相鄰節(jié)點設(shè)為1。-如果發(fā)現(xiàn)相鄰節(jié)點顏色相同,則不是二分圖。-時間復(fù)雜度:O(n+m),n為節(jié)點數(shù),m為邊數(shù)。2.設(shè)計一個算法,實現(xiàn)字符串的編輯距離(LevenshteinDistance)計算要求:-輸入兩個字符串`s1`和`s2`,返回最小編輯距離。-不能使用現(xiàn)成的庫函數(shù)(如Python的`difflib.SequenceMatcher`)。-請展示核心代碼和測試用例。答案:pythondeflevenshtein_distance(s1:str,s2:str)->int:m,n=len(s1),len(s2)dp=[[0](n+1)for_inrange(m+1)]foriinrange(m+1):dp[i][0]=iforjinrange(n+1):dp[0][j]=jforiinrange(1,m+1):forjinrange(1,n+1):ifs1[i-1]==s2[j-1]:dp[i][j]=dp[i-1][j-1]else:dp[i][j]=min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1returndp[m][n]測試用例print(levenshtein_distance("kitten","sitting"))#輸出:3print(levenshtein_distance("garden","garde"))#輸出:1解析:-編輯距離是指將一個字符串轉(zhuǎn)換為另一個字符串所需的最少單字符編輯(插入、刪除、替換)。-使用動態(tài)規(guī)劃,`dp[i][j]`表示`s1[:i]`到`s2[:j]`的編輯距離。-初始化邊界條件:空字符串到任何字符串的編輯距離等于字符串長度。-時間復(fù)雜度:O(mn),m和n分別為兩個字符串的長度。三、系統(tǒng)設(shè)計題(每題25分,共1題)1.設(shè)計一個簡單的短鏈接(TinyURL)生成系統(tǒng)要求:-輸入一個長URL,返回一個短URL。-支持反向解析,輸入短URL返回原始長URL。-請展示核心設(shè)計思路、數(shù)據(jù)結(jié)構(gòu)及偽代碼。答案:核心設(shè)計思路:1.使用隨機生成或哈希算法將長URL映射為短URL。2.使用數(shù)據(jù)庫或內(nèi)存存儲映射關(guān)系,確保唯一性和快速查詢。3.短URL使用62進制(a-z,A-Z,0-9)表示,長度固定(如6位)。數(shù)據(jù)結(jié)構(gòu):-字典`url_map`:`{長URL:短URL}`-字典`reverse_map`:`{短URL:長URL}`偽代碼:pythonimportbase64importhashlibclassTinyURL:def__init__(self):self.url_map={}self.reverse_map={}self.base_url="/"def_encode(self,num):chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"base=len(chars)encoded=""whilenum>0:encoded=chars[num%base]+encodednum//=basereturnencoded.zfill(6)#確保長度為6def_decode(self,short_url):hash_part=short_url[len(self.base_url):]returnint.from_bytes(base64.urlsafe_b64decode(hash_part),byteorder='big')definsert(self,long_url:str)->str:iflong_urlinself.url_map:returnself.url_map[long_url]hash_value=hashlib.sha256(long_url.encode()).hexdigest()num=int(hash_value,16)short_url=self.base_url+self._encode(num)self.url_map[long_url]=short_urlself.reverse_map[short_url]=long_urlreturnshort_urldefget(self,short_url:str)->str:returnself.reverse_map.get(short_url,"URLnotfound")測試用例tiny=
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大學(xué)(飛行技術(shù))飛行原理2026年綜合測試題及答案
- 2026年籃球教練(籃球教學(xué)技能)綜合測試題及答案
- 2026年綜合測試(急救知識技能)考題及答案
- 高職第三學(xué)年(機械制造與自動化)生產(chǎn)線調(diào)試2026年綜合測試題及答案
- 2026年水路運輸知識(水路運輸理論)考題及答案
- 深度解析(2026)《GBT 18213-2000低頻電纜和電線無鍍層和有鍍層銅導(dǎo)體電阻計算導(dǎo)則》
- 深度解析(2026)《GBT 18084-2000植物檢疫 地中海實蠅檢疫鑒定方法》
- 深度解析(2026)《GBT 17980.82-2004農(nóng)藥 田間藥效試驗準則(二) 第82部分殺菌劑防治茶餅病》
- 深度解析(2026)《GBT 17904.2-1999ISDN用戶-網(wǎng)絡(luò)接口數(shù)據(jù)鏈路層技術(shù)規(guī)范及一致性測試方法 第2部分數(shù)據(jù)鏈路層協(xié)議一致性測試方法》
- 深度解析(2026)《GBT 17495-2009港口門座起重機》(2026年)深度解析
- 途虎養(yǎng)車合同協(xié)議
- 延期退休協(xié)議書范本
- 建設(shè)銀行信用貸款合同(2025年版)
- 藥房年終總結(jié)及明年計劃
- DBJ51T 189-2022 四川省建設(shè)工程施工現(xiàn)場安全資料管理標準
- 2025年度光伏發(fā)電項目建筑工程承包居間協(xié)議書
- 第十單元 改革開放和社會主義現(xiàn)代化建設(shè)新時期-高中歷史單元說課稿
- 《工會基礎(chǔ)知識》考試題庫300題(含答案)
- 餐廳制度培訓(xùn)課件
- 手術(shù)間的規(guī)范化管理
- 《班級植物角我養(yǎng)護》(課件)-二年級上冊勞動浙教版
評論
0/150
提交評論