版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2026年阿里巴面試題及答案詳解一、編程題(共3題,每題20分)1.數(shù)組中的重復(fù)數(shù)字(20分)題目:給定一個(gè)包含n個(gè)整數(shù)的數(shù)組,其中只有兩個(gè)數(shù)字重復(fù),其余數(shù)字均不重復(fù)。請(qǐng)找出這兩個(gè)重復(fù)的數(shù)字。要求時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(1)。示例:輸入:[3,4,2,3,6,1]輸出:[3,4]答案:pythondeffind_duplicates(nums):duplicates=[]fornuminnums:index=abs(num)-1ifnums[index]<0:duplicates.append(abs(num))else:nums[index]=-nums[index]returnduplicates示例print(find_duplicates([3,4,2,3,6,1]))#輸出:[3,4]解析:通過(guò)遍歷數(shù)組,將每個(gè)數(shù)字的絕對(duì)值對(duì)應(yīng)的索引位置的值取反。如果遇到已經(jīng)取反的值,說(shuō)明該數(shù)字重復(fù)。該方法利用了數(shù)組的空間,實(shí)現(xiàn)O(n)時(shí)間復(fù)雜度和O(1)空間復(fù)雜度。2.前序遍歷和中序遍歷重建二叉樹(shù)(20分)題目:給定前序遍歷和中序遍歷的結(jié)果,重建二叉樹(shù)。假設(shè)二叉樹(shù)中沒(méi)有重復(fù)的數(shù)字。示例:前序遍歷:[3,9,20,15,7]中序遍歷:[9,3,15,20,7]答案:pythondefbuild_tree(preorder,inorder):ifnotpreorder:returnNoneroot=TreeNode(preorder[0])mid=inorder.index(preorder[0])root.left=build_tree(preorder[1:mid+1],inorder[:mid])root.right=build_tree(preorder[mid+1:],inorder[mid+1:])returnroot示例preorder=[3,9,20,15,7]inorder=[9,3,15,20,7]root=build_tree(preorder,inorder)解析:前序遍歷的第一個(gè)數(shù)字是根節(jié)點(diǎn),中序遍歷中根節(jié)點(diǎn)的位置將數(shù)組分成左右子樹(shù)。遞歸構(gòu)建左右子樹(shù)即可。3.最長(zhǎng)有效括號(hào)(20分)題目:給定一個(gè)字符串,包含'('和')',找出最長(zhǎng)的有效括號(hào)子串的長(zhǎng)度。示例:輸入:"(()"輸出:2答案:pythondeflongest_valid_parentheses(s):stack=[-1]max_len=0fori,charinenumerate(s):ifchar=='(':stack.append(i)else:stack.pop()ifnotstack:stack.append(i)else:max_len=max(max_len,i-stack[-1])returnmax_len示例print(longest_valid_parentheses("(()"))#輸出:2解析:使用棧記錄括號(hào)的索引,遇到'('入棧,')'時(shí)出棧。如果棧為空,則將當(dāng)前索引壓入棧;否則,計(jì)算最長(zhǎng)有效括號(hào)長(zhǎng)度。二、算法題(共4題,每題25分)1.字符串的排列(25分)題目:給定兩個(gè)字符串s1和s2,判斷s2是否是s1的排列。忽略大小寫(xiě)和空格。示例:s1="Listen"s2="Silent"輸出:True答案:pythondefis_permutation(s1,s2):s1=s1.replace("","").lower()s2=s2.replace("","").lower()iflen(s1)!=len(s2):returnFalsecount={}forcharins1:count[char]=count.get(char,0)+1forcharins2:ifcharnotincount:returnFalsecount[char]-=1ifcount[char]<0:returnFalsereturnTrue示例print(is_permutation("Listen","Silent"))#輸出:True解析:通過(guò)統(tǒng)計(jì)字符頻率判斷是否為排列。忽略大小寫(xiě)和空格,統(tǒng)計(jì)后比較頻率是否一致。2.盛水最多的容器(25分)題目:給定一個(gè)整數(shù)數(shù)組height,其中height[i]表示第i個(gè)位置的高度。返回兩個(gè)垂直線所能接最多的水。示例:height=[1,8,6,2,5,4,8,3,7]輸出:49答案:pythondefmax_area(height):left,right=0,len(height)-1max_area=0whileleft<right:current_area=(right-left)min(height[left],height[right])max_area=max(max_area,current_area)ifheight[left]<height[right]:left+=1else:right-=1returnmax_area示例print(max_area([1,8,6,2,5,4,8,3,7]))#輸出:49解析:雙指針?lè)ǎ看我苿?dòng)較矮的一側(cè),計(jì)算當(dāng)前面積并更新最大面積。3.合并區(qū)間(25分)題目:給定一個(gè)區(qū)間列表,合并所有重疊的區(qū)間。示例:intervals=[[1,3],[2,6],[8,10],[15,18]]輸出:[[1,6],[8,10],[15,18]]答案:pythondefmerge_intervals(intervals):ifnotintervals:return[]intervals.sort(key=lambdax:x[0])merged=[intervals[0]]forcurrentinintervals[1:]:last=merged[-1]ifcurrent[0]<=last[1]:merged[-1][1]=max(last[1],current[1])else:merged.append(current)returnmerged示例print(merge_intervals([[1,3],[2,6],[8,10],[15,18]]))#輸出:[[1,6],[8,10],[15,18]]解析:先排序,然后遍歷合并重疊的區(qū)間。如果當(dāng)前區(qū)間的開(kāi)始小于等于上一個(gè)區(qū)間的結(jié)束,則合并;否則,添加新區(qū)間。4.爬樓梯(25分)題目:假設(shè)你正在爬樓梯,每次可以爬1或2步,給定n階樓梯,有多少種不同的爬法?示例:n=3輸出:3答案:pythondefclimb_stairs(n):ifn==1:return1dp=[0](n+1)dp[1],dp[2]=1,2foriinrange(3,n+1):dp[i]=dp[i-1]+dp[i-2]returndp[n]示例print(climb_stairs(3))#輸出:3解析:動(dòng)態(tài)規(guī)劃,dp[i]=dp[i-1]+dp[i-2],表示爬到第i階的方法數(shù)。三、系統(tǒng)設(shè)計(jì)題(共2題,每題30分)1.設(shè)計(jì)一個(gè)短URL服務(wù)(30分)題目:設(shè)計(jì)一個(gè)短URL服務(wù),要求:-輸入長(zhǎng)URL,返回短URL。-支持批量生成短URL。-支持將短URL解析回長(zhǎng)URL。要求:-短URL長(zhǎng)度盡可能短。-高并發(fā)場(chǎng)景下性能良好。答案:方案:1.編碼方式:使用62進(jìn)制(a-z,A-Z,0-9)對(duì)ID進(jìn)行編碼,如100->"3vA"。2.存儲(chǔ):使用Redis或MySQL存儲(chǔ)短URL與長(zhǎng)URL的映射。3.ID生成:使用自增ID或Snowflake算法生成唯一ID。4.批量生成:使用隊(duì)列異步處理。5.解析:對(duì)短URL進(jìn)行解碼,查詢映射表返回長(zhǎng)URL。偽代碼:pythondefencode_id(id):chars="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"base=len(chars)encoded=""whileid:encoded=chars[id%base]+encodedid//=basereturnencodedor"0"defdecode_id(encoded):chars="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"base=len(chars)decoded=0forcharinencoded:decoded=decodedbase+chars.index(char)returndecoded解析:-編碼解碼保證短URL唯一且長(zhǎng)度短。-Redis支持高并發(fā)緩存映射關(guān)系。-Snowflake算法可保證ID唯一性和順序性。2.設(shè)計(jì)一個(gè)高并發(fā)短鏈接系統(tǒng)(30分)題目:設(shè)計(jì)一個(gè)支持高并發(fā)的短鏈接系統(tǒng),要求:-短鏈接生成快速且唯一。-支持分布式部署。-支持自定義短鏈接前綴。答案:方案:1.架構(gòu):-API網(wǎng)關(guān):負(fù)責(zé)請(qǐng)求路由和負(fù)載均衡。-短鏈接服務(wù):生成短鏈接并存儲(chǔ)映射。-緩存層:Redis緩存熱點(diǎn)短鏈接。-數(shù)據(jù)庫(kù):MySQL存儲(chǔ)所有映射關(guān)系。2.ID生成:使用分布式ID生成器(如TwitterSnowflake)。3.自定義前綴:用戶可指定前綴,通過(guò)哈希分配固定前綴段。4.分布式部署:使用Consul或Eureka進(jìn)行服務(wù)發(fā)現(xiàn)。偽代碼:pythondefgenerate_short_link(long_url,prefix=""):id=snowflake_generator.get_next_id()short_link=f"https://{prefix}{encode_id(id)}"redis.set(short_link,long_url)mysql.insert(short_link,long_url)returnshort_link解析:-Snowflake算法保證ID唯一性和分布式兼容性。-Redis緩存熱點(diǎn)鏈接,降低數(shù)據(jù)庫(kù)壓力。-自定義前綴滿足特殊場(chǎng)景需求。答案解析編程題:1.數(shù)組中的重復(fù)數(shù)字:-利用數(shù)組空間存儲(chǔ)取反狀態(tài),避免額外空間。-時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(1)。2.重建二叉樹(shù):-前序遍歷確定根節(jié)點(diǎn),中序遍歷分割左右子樹(shù)。遞歸構(gòu)建。3.最長(zhǎng)有效括號(hào):-棧記錄未匹配的'('索引,計(jì)算最大長(zhǎng)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年銷(xiāo)售管理崗位面試題目及答案全解
- 健身器材制作工安全教育強(qiáng)化考核試卷含答案
- 2026年醫(yī)療行業(yè)面試寶典醫(yī)院科室主管面試題及答案
- 隧道工操作水平能力考核試卷含答案
- 鞋類(lèi)設(shè)計(jì)師誠(chéng)信評(píng)優(yōu)考核試卷含答案
- 木制玩具制作工誠(chéng)信道德能力考核試卷含答案
- 2026年游戲策劃師游戲世界觀設(shè)計(jì)面試題及答案
- 2026年隧道工程部考試題庫(kù)及答案解析
- 家具制作工崗前生產(chǎn)安全技能考核試卷含答案
- 2026年醫(yī)療行業(yè)面試技巧與問(wèn)題解析
- 2025年-《中華民族共同體概論》課后習(xí)題答案-新版
- 混合型高脂血癥基層診療中國(guó)專(zhuān)家共識(shí)(2024年)解讀課件
- 數(shù)據(jù)庫(kù)應(yīng)用技術(shù)-第三次形考作業(yè)(第10章~第11章)-國(guó)開(kāi)-參考資料
- 市政道路設(shè)計(jì)技術(shù)標(biāo)投標(biāo)方案(技術(shù)方案)
- 發(fā)熱中醫(yī)護(hù)理查房
- 物業(yè)公司業(yè)主投訴處理和回訪制度(3篇)
- 團(tuán)員證明模板(周五)
- 住宅小區(qū)綠化保潔及垃圾收集方案
- DL∕T 5097-2014 火力發(fā)電廠貯灰場(chǎng)巖土工程勘測(cè)技術(shù)規(guī)程
- 兼職醫(yī)生勞務(wù)協(xié)議
- 達(dá)托霉素完整版本
評(píng)論
0/150
提交評(píng)論