版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2026年軟件工程師專業(yè)面試題及答案一、編程實(shí)現(xiàn)題(共3題,每題15分,總計(jì)45分)題目1(15分):實(shí)現(xiàn)一個(gè)函數(shù)`mergeSortedArrays`,輸入兩個(gè)已排序的整數(shù)數(shù)組`arr1`和`arr2`,返回合并后的排序數(shù)組。要求時(shí)間復(fù)雜度為O(n),空間復(fù)雜度為O(1)。示例輸入:plaintextarr1=[1,3,5],arr2=[2,4,6]示例輸出:plaintext[1,2,3,4,5,6]答案與解析:pythondefmergeSortedArrays(arr1,arr2):merged=[]i,j=0,0whilei<len(arr1)andj<len(arr2):ifarr1[i]<arr2[j]:merged.append(arr1[i])i+=1else:merged.append(arr2[j])j+=1merged.extend(arr1[i:])merged.extend(arr2[j:])returnmerged示例測(cè)試arr1=[1,3,5]arr2=[2,4,6]print(mergeSortedArrays(arr1,arr2))#輸出:[1,2,3,4,5,6]解析:-使用雙指針?lè)?,分別遍歷兩個(gè)數(shù)組,按順序?qū)⑤^小值加入結(jié)果數(shù)組。-時(shí)間復(fù)雜度:O(n),因?yàn)槊總€(gè)元素被訪問(wèn)一次。-空間復(fù)雜度:O(1)(若不計(jì)算返回結(jié)果的空間)。實(shí)際實(shí)現(xiàn)中返回結(jié)果需額外空間,但可優(yōu)化為原地修改輸入數(shù)組(若允許)。題目2(15分):實(shí)現(xiàn)一個(gè)函數(shù)`topKFrequent`,輸入一個(gè)整數(shù)數(shù)組`nums`和整數(shù)`k`,返回出現(xiàn)頻率最高的`k`個(gè)元素。要求時(shí)間復(fù)雜度為O(n),空間復(fù)雜度為O(n)。示例輸入:plaintextnums=[1,1,1,2,2,3],k=2示例輸出:plaintext[1,2]答案與解析:pythonfromcollectionsimportCounterdeftopKFrequent(nums,k):count=Counter(nums)return[numfornum,freqincount.most_common(k)]示例測(cè)試nums=[1,1,1,2,2,3]k=2print(topKFrequent(nums,k))#輸出:[1,2]解析:-使用`Counter`統(tǒng)計(jì)頻率,然后按頻率降序排列并取前`k`個(gè)。-時(shí)間復(fù)雜度:O(n),因?yàn)榻y(tǒng)計(jì)和排序的時(shí)間復(fù)雜度均為O(n)。-空間復(fù)雜度:O(n),用于存儲(chǔ)頻率映射。題目3(15分):實(shí)現(xiàn)一個(gè)函數(shù)`reverseWords`,輸入一個(gè)字符串`s`,反轉(zhuǎn)字符串中的每個(gè)單詞,但保持單詞順序不變。單詞由空格分隔。示例輸入:plaintexts="theskyisblue"示例輸出:plaintext"blueisskythe"答案與解析:pythondefreverseWords(s):words=s.split()return''.join(word[::-1]forwordinwords)示例測(cè)試s="theskyisblue"print(reverseWords(s))#輸出:"blueisskythe"解析:-先按空格拆分字符串,再反轉(zhuǎn)每個(gè)單詞,最后重新拼接。-時(shí)間復(fù)雜度:O(n),因?yàn)槊總€(gè)字符被訪問(wèn)一次。-空間復(fù)雜度:O(n),用于存儲(chǔ)拆分后的單詞。二、算法與數(shù)據(jù)結(jié)構(gòu)題(共3題,每題15分,總計(jì)45分)題目1(15分):給定一個(gè)二叉樹(shù),判斷其是否為平衡二叉樹(shù)(即任意節(jié)點(diǎn)的左右子樹(shù)高度差不超過(guò)1)。示例輸入:plaintext樹(shù)結(jié)構(gòu):3/\920/\157示例輸出:plaintextTrue答案與解析:pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefisBalanced(root):defcheckHeight(node):ifnotnode:return0left_height=checkHeight(node.left)ifleft_height==-1:return-1right_height=checkHeight(node.right)ifright_height==-1orabs(left_height-right_height)>1:return-1returnmax(left_height,right_height)+1returncheckHeight(root)!=-1示例測(cè)試root=TreeNode(3)root.left=TreeNode(9)root.right=TreeNode(20)root.right.left=TreeNode(15)root.right.right=TreeNode(7)print(isBalanced(root))#輸出:True解析:-采用后序遍歷(左-右-根)計(jì)算子樹(shù)高度,若發(fā)現(xiàn)不平衡則提前返回。-時(shí)間復(fù)雜度:O(n),每個(gè)節(jié)點(diǎn)訪問(wèn)一次。-空間復(fù)雜度:O(h),遞歸棧的深度。題目2(15分):實(shí)現(xiàn)一個(gè)LRU(LeastRecentlyUsed)緩存,支持`get`和`put`操作。要求`get`操作時(shí)間復(fù)雜度為O(1),`put`操作時(shí)間復(fù)雜度為O(1)。示例輸入:plaintextLRUCache=LRUCache(2)LRUCache.put(1,1)LRUCache.put(2,2)LRUCache.get(1)//返回1LRUCache.put(3,3)//去除鍵2LRUCache.get(2)//返回-1(未找到)答案與解析:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache=OrderedDict()defget(self,key:int)->int:ifkeynotinself.cache:return-1self.cache.move_to_end(key)returnself.cache[key]defput(self,key:int,value:int)->None:ifkeyinself.cache:self.cache.move_to_end(key)self.cache[key]=valueiflen(self.cache)>self.capacity:self.cache.popitem(last=False)示例測(cè)試LRUCache=LRUCache(2)LRUCache.put(1,1)LRUCache.put(2,2)print(LRUCache.get(1))#返回1LRUCache.put(3,3)print(LRUCache.get(2))#返回-1解析:-使用`OrderedDict`維護(hù)訪問(wèn)順序,`get`時(shí)移動(dòng)元素,`put`時(shí)更新或刪除。-時(shí)間復(fù)雜度:O(1)。-空間復(fù)雜度:O(capacity)。題目3(15分):給定一個(gè)無(wú)重復(fù)字符的字符串`s`,返回其所有子集的列表。示例輸入:plaintexts="abc"示例輸出:plaintext["","a","b","ab","c","ac","bc","abc"]答案與解析:pythondefsubsets(s):result=[]subset=[]defbacktrack(start):result.append(''.join(subset))foriinrange(start,len(s)):subset.append(s[i])backtrack(i+1)subset.pop()backtrack(0)returnresult示例測(cè)試s="abc"print(subsets(s))#輸出:["","a","b","ab","c","ac","bc","abc"]解析:-采用回溯法,遍歷所有可能的組合。-時(shí)間復(fù)雜度:O(2^n),因?yàn)橛?^n個(gè)子集。-空間復(fù)雜度:O(n),遞歸棧的深度。三、系統(tǒng)設(shè)計(jì)題(共3題,每題15分,總計(jì)45分)題目1(15分):設(shè)計(jì)一個(gè)短鏈接(URLShortening)服務(wù),要求支持以下功能:1.輸入長(zhǎng)鏈接,返回短鏈接;2.訪問(wèn)短鏈接時(shí),解析并重定向到原長(zhǎng)鏈接;3.支持高并發(fā)訪問(wèn)。約束:-短鏈接長(zhǎng)度不超過(guò)6位;-支持分布式部署。答案與解析:-核心組件:1.短鏈接生成:使用哈希算法(如Base62)將長(zhǎng)鏈接映射為短碼。2.數(shù)據(jù)庫(kù):存儲(chǔ)長(zhǎng)鏈接與短碼的映射關(guān)系(如Redis)。3.路由:根據(jù)短碼查詢數(shù)據(jù)庫(kù),返回長(zhǎng)鏈接。-高并發(fā)處理:-使用緩存(Redis)減少數(shù)據(jù)庫(kù)訪問(wèn);-分布式部署時(shí),短碼生成算法需全局唯一(如UUID+哈希)。-示例偽代碼:pythondefgenerate_short_url(long_url):hash_code=hashlib.md5(long_url.encode()).hexdigest()short_code=hash_code[:6]#取前6位store_mapping(short_code,long_url)returnf"/{short_code}"defredirect(short_url):short_code=short_url.split('/')[-1]long_url=get_mapping(short_code)returnlong_urliflong_urlelse"404NotFound"題目2(15分):設(shè)計(jì)一個(gè)消息隊(duì)列服務(wù),要求支持以下功能:1.生產(chǎn)者(Producer)發(fā)送消息;2.消費(fèi)者(Consumer)接收消息;3.支持消息持久化(不丟失);4.支持至少一次傳遞(即消息可能重復(fù)傳遞)。約束:-支持高可用性;-消息最大大小不超過(guò)1MB。答案與解析:-核心組件:1.消息存儲(chǔ):使用數(shù)據(jù)庫(kù)(如Kafka)或持久化隊(duì)列;2.分區(qū)與復(fù)制:分區(qū)提高并行度,復(fù)制保證可用性;3.消費(fèi)者確認(rèn):消費(fèi)者確認(rèn)(ACK)機(jī)制防止消息丟失。-至少一次傳遞實(shí)現(xiàn):-消費(fèi)者處理完消息后發(fā)送ACK;-若未收到ACK,生產(chǎn)者重發(fā)消息。-高可用性:-使用集群部署;-生產(chǎn)者/消費(fèi)者故障轉(zhuǎn)移。題目3(15分):設(shè)計(jì)一個(gè)簡(jiǎn)單的秒殺系統(tǒng),要求支持以下功能:1.用戶點(diǎn)擊秒殺按鈕時(shí),驗(yàn)證庫(kù)存是否充足;2.若庫(kù)存充足,扣減庫(kù)存并返回秒殺成功;3.支持防超賣(即同一商品只能秒殺一次)。約束:-每秒支持10萬(wàn)次請(qǐng)求;-數(shù)據(jù)庫(kù)響應(yīng)時(shí)間不超過(guò)100ms。答案與解析:-核心組件:1.庫(kù)存預(yù)減:使用分布式鎖(如Redis)或數(shù)據(jù)庫(kù)事務(wù);2.請(qǐng)求限流:限流策略(如令牌桶)防止壓垮;3.冪等性:防止重復(fù)秒殺(如使用UUID+緩存)。-高并發(fā)處理:-使用內(nèi)存緩存(Redis)存儲(chǔ)秒殺狀態(tài);-數(shù)據(jù)庫(kù)優(yōu)化(如索引、分表)。-示例偽代碼:pythondefattempt_seckil
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 管道絕熱施工技術(shù)方案
- 工程管理崗位人員業(yè)務(wù)知識(shí)考試試卷及答案(2025年)
- 2025年診所年度工作總結(jié)
- 國(guó)家能源集團(tuán)采礦工程師面試題庫(kù)及答案
- 2025年工會(huì)個(gè)人工作計(jì)劃
- 2025年X人民醫(yī)院工作總結(jié)及2026年工作計(jì)劃
- 三級(jí)安全教育培訓(xùn)試卷及答案班組級(jí)(鋼筋工)
- 建設(shè)工程施工合同糾紛要素式起訴狀模板貼合真實(shí)維權(quán)案例
- 2026 年有子女離婚協(xié)議書(shū)權(quán)威版
- 房屋售后維修年終總結(jié)(3篇)
- 2025年江蘇省公務(wù)員面試模擬題及答案
- 2024-2025學(xué)年山東省濟(jì)南市槐蔭區(qū)七年級(jí)(上)期末地理試卷
- 2025中國(guó)家庭品牌消費(fèi)趨勢(shì)報(bào)告-OTC藥品篇-
- 機(jī)器人學(xué):機(jī)構(gòu)、運(yùn)動(dòng)學(xué)及動(dòng)力學(xué) 課件全套 第1-8章 緒論-機(jī)器人綜合設(shè)計(jì)
- JJG 694-2025原子吸收分光光度計(jì)檢定規(guī)程
- 廣東省2025屆湛江市高三下學(xué)期第一次模擬考試-政治試題(含答案)
- 2025年3月29日全國(guó)事業(yè)單位事業(yè)編聯(lián)考A類《職測(cè)》真題及答案
- 梯子使用安全操作規(guī)程
- 民航保健與衛(wèi)生
- 醫(yī)藥ka專員培訓(xùn)課件
- 【中考真題】2025年上海英語(yǔ)試卷(含聽(tīng)力mp3)
評(píng)論
0/150
提交評(píng)論