2026年小米面試題預(yù)測及備考要點(diǎn)含答案_第1頁
2026年小米面試題預(yù)測及備考要點(diǎn)含答案_第2頁
2026年小米面試題預(yù)測及備考要點(diǎn)含答案_第3頁
2026年小米面試題預(yù)測及備考要點(diǎn)含答案_第4頁
2026年小米面試題預(yù)測及備考要點(diǎn)含答案_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

2026年小米面試題預(yù)測及備考要點(diǎn)含答案一、編程題(3題,每題20分,共60分)1.題目:請實(shí)現(xiàn)一個函數(shù),輸入一個字符串,返回該字符串中只出現(xiàn)一次的字符。如果有多個只出現(xiàn)一次的字符,返回它們按字典序排列的字符串。示例:輸入:`"abaccdeff"`輸出:`"bd"`答案與解析:pythondefunique_chars(s:str)->str:count={}forcharins:count[char]=count.get(char,0)+1return''.join(sorted([charforcharincountifcount[char]==1]))示例測試print(unique_chars("abaccdeff"))#輸出:"bd"解析:1.使用哈希表統(tǒng)計(jì)每個字符的出現(xiàn)次數(shù)。2.遍歷哈希表,篩選出只出現(xiàn)一次的字符,并按字典序排序。3.返回排序后的字符拼接字符串。2.題目:給定一個鏈表,刪除鏈表中的所有重復(fù)的元素,返回刪除重復(fù)元素后的鏈表。示例:輸入:`1->2->3->3->4->4->5`輸出:`1->2->5`答案與解析:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefdelete_duplicates(head:ListNode)->ListNode:dummy=ListNode(0,head)prev=dummywhilehead:ifhead.nextandhead.val==head.next.val:whilehead.nextandhead.val==head.next.val:head=head.nextprev.next=head.nextelse:prev=prev.nexthead=head.nextreturndummy.next示例測試構(gòu)建鏈表1->2->3->3->4->4->5head=ListNode(1,ListNode(2,ListNode(3,ListNode(3,ListNode(4,ListNode(4,ListNode(5)))))))result=delete_duplicates(head)輸出鏈表:1->2->5解析:1.使用虛擬頭節(jié)點(diǎn)`dummy`簡化邊界處理。2.遍歷鏈表,當(dāng)發(fā)現(xiàn)重復(fù)節(jié)點(diǎn)時(shí),跳過所有重復(fù)節(jié)點(diǎn)并斷開連接。3.若當(dāng)前節(jié)點(diǎn)不重復(fù),則移動`prev`指針。3.題目:實(shí)現(xiàn)一個無重復(fù)字符的最長子串函數(shù),輸入一個字符串,返回其長度。示例:輸入:`"abcabcbb"`輸出:`3`(最長無重復(fù)字符子串為"abc")答案與解析:pythondeflength_of_longest_substring(s:str)->int:char_set=set()left=0max_len=0forrightinrange(len(s)):whiles[right]inchar_set:char_set.remove(s[left])left+=1char_set.add(s[right])max_len=max(max_len,right-left+1)returnmax_len示例測試print(length_of_longest_substring("abcabcbb"))#輸出:3解析:1.使用滑動窗口技術(shù),`left`和`right`分別表示窗口的左右邊界。2.遍歷字符串,若當(dāng)前字符已存在于窗口中,則移動`left`并移除對應(yīng)字符。3.更新最大長度`max_len`。二、算法題(3題,每題20分,共60分)1.題目:給定一個整數(shù)數(shù)組,判斷是否存在三個元素a,b,c,使得a+b+c=0。請找出所有不重復(fù)的三元組。示例:輸入:`[-1,0,1,2,-1,-4]`輸出:`[[-1,-1,2],[-1,0,1]]`答案與解析:pythondefthree_sum(nums:list)->list: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==0: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<0:left+=1else:right-=1returnres示例測試print(three_sum([-1,0,1,2,-1,-4]))#輸出:[[-1,-1,2],[-1,0,1]]解析:1.先對數(shù)組排序,便于使用雙指針法。2.遍歷數(shù)組,對于每個`nums[i]`,使用雙指針`left`和`right`尋找`nums[left]+nums[right]=-nums[i]`。3.避免重復(fù)解,跳過重復(fù)的`nums[i]`、`nums[left]`和`nums[right]`。2.題目:給定一個正整數(shù)n,返回n的階乘trailingzero的個數(shù)。示例:輸入:`100`輸出:`24`(100!的末尾有24個0)答案與解析:pythondeftrailing_zeroes(n:int)->int:count=0whilen>=5:n//=5count+=nreturncount示例測試print(trailing_zeroes(100))#輸出:24解析:1.階乘末尾的0由因子5和2的個數(shù)決定,而2的個數(shù)遠(yuǎn)多于5的個數(shù)。2.統(tǒng)計(jì)n中包含的5的因子個數(shù),即`n//5+n//25+n//125+...`。3.題目:實(shí)現(xiàn)一個二叉樹的層序遍歷(BFS)。示例:輸入:3/\920/\157輸出:`[[3],[9,20],[15,7]]`答案與解析:pythonfromcollectionsimportdequefromtypingimportList,OptionalclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdeflevel_order(root:Optional[TreeNode])->List[List[int]]:ifnotroot:return[]res=[]queue=deque([root])whilequeue:level=[]for_inrange(len(queue)):node=queue.popleft()level.append(node.val)ifnode.left:queue.append(node.left)ifnode.right:queue.append(node.right)res.append(level)returnres示例測試構(gòu)建二叉樹root=TreeNode(3,TreeNode(9),TreeNode(20,TreeNode(15),TreeNode(7)))print(level_order(root))#輸出:[[3],[9,20],[15,7]]解析:1.使用隊(duì)列實(shí)現(xiàn)BFS,按層遍歷二叉樹。2.每次遍歷當(dāng)前層的所有節(jié)點(diǎn),并將其子節(jié)點(diǎn)加入隊(duì)列。3.將每層的結(jié)果添加到結(jié)果列表中。三、系統(tǒng)設(shè)計(jì)題(1題,40分)題目:設(shè)計(jì)一個簡單的短URL生成系統(tǒng)。要求:1.輸入一個長URL,輸出一個短URL。2.短URL應(yīng)具有唯一性,且長度盡可能短。3.支持反向解析,即輸入短URL能返回對應(yīng)的長URL。4.系統(tǒng)需支持高并發(fā)訪問。答案與解析:1.系統(tǒng)架構(gòu):-前端服務(wù):接收長URL,生成短URL并返回。-數(shù)據(jù)庫:存儲長URL與短URL的映射關(guān)系。-緩存:緩存熱點(diǎn)短URL,加速反向解析。2.短URL生成算法:使用Base62編碼(包含大小寫字母和數(shù)字),將長ID映射為短字符串。pythonimportstringimportrandomclassShortURL:base=string.ascii_letters+string.digits#A-Z,a-z,0-9base_len=len(base)def__init__(self):self.url_map={}self.id_map={}self.last_id=0def_encode(self,num:int)->str:res=[]whilenum:res.append(self.base[num%self.base_len])num//=self.base_lenreturn''.join(res[::-1])definsert(self,long_url:str)->str:self.last_id+=1short_code=self._encode(self.last_id)self.url_map[short_code]=long_urlself.id_map[long_url]=short_codereturnf"/{short_code}"defresolve(self,short_url:str)->str:short_code=short_url.split('/')[-1]returnself.url_map.get(short_code,"URLnotfound")示例測試shortener=ShortURL()long_url="/path?query=123"short_url=shortener.insert(long_url)print(short_url)#輸出類似:"/1aB"print(shortener.resolve(short_url))#輸出:"/path?query=123"3.高并發(fā)處理:-前端服務(wù):使用Nginx或Kubernetes集群負(fù)載均衡。-數(shù)據(jù)庫:使用Redis或Memcached緩存熱點(diǎn)數(shù)據(jù),減少數(shù)據(jù)庫壓力。-分布式鎖:保證短URL生成唯一性。4.其他考慮:-可擴(kuò)展性:支持分片存儲,避免單點(diǎn)故障。-安全性:防止短URL被惡意利用(如重定向攻擊)。四、行為面試題(3題,每題10分,共30分)1.題目:請分享一次你解決復(fù)雜技術(shù)問題的經(jīng)歷,你是如何分析和解決的?參考回答:在XX項(xiàng)目中,遇到一個高并發(fā)下的數(shù)據(jù)一致性問題。我首先通過日志分析定位到瓶頸,發(fā)現(xiàn)是數(shù)據(jù)庫鎖競爭導(dǎo)致。隨后,我提出使用Redis事務(wù)+Lua腳本優(yōu)化方案,最終將QPS提升50%。2.題目:小米強(qiáng)調(diào)“用戶第一”

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論