版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
2026年聯(lián)想工程師面試問題及答案一、編程基礎(3題,每題10分,共30分)1.題目:編寫一個函數(shù),實現(xiàn)字符串的翻轉,不使用內(nèi)置的翻轉函數(shù)。例如,輸入`"abcdef"`,輸出`"fedcba"`。答案:pythondefreverse_string(s:str)->str:returns[::-1]示例print(reverse_string("abcdef"))#輸出:fedcba解析:使用Python的切片操作`[::-1]`可以高效翻轉字符串,時間復雜度為O(n),空間復雜度為O(n)。2.題目:實現(xiàn)一個函數(shù),檢查一個整數(shù)是否為素數(shù)。如果是素數(shù),返回`True`,否則返回`False`。答案:pythondefis_prime(n:int)->bool:ifn<=1:returnFalseifn==2:returnTrueifn%2==0:returnFalseforiinrange(3,int(n0.5)+1,2):ifn%i==0:returnFalsereturnTrue示例print(is_prime(17))#輸出:Trueprint(is_prime(18))#輸出:False解析:素數(shù)定義為大于1且僅能被1和自身整除的數(shù)。檢查時,先排除小于等于1、偶數(shù)(除2外),然后只需檢查到`√n`即可,提高效率。3.題目:實現(xiàn)一個函數(shù),找出列表中重復的元素,并返回一個包含重復元素的列表。例如,輸入`[1,2,2,3,4,4,5]`,輸出`[2,4]`。答案:pythondeffind_duplicates(lst:list)->list:seen=set()duplicates=set()fornuminlst:ifnuminseen:duplicates.add(num)else:seen.add(num)returnlist(duplicates)示例print(find_duplicates([1,2,2,3,4,4,5]))#輸出:[2,4]解析:使用集合`seen`記錄已出現(xiàn)過的元素,遇到重復的元素則加入`duplicates`集合。最后返回`duplicates`列表,時間復雜度為O(n)。二、算法設計(3題,每題10分,共30分)1.題目:給定一個整數(shù)數(shù)組,返回數(shù)組中和為特定值的三元組數(shù)量。例如,輸入`[-1,0,1,2,-1,-4]`和目標值`0`,輸出`4`(即`(-1,-1,2),(-1,0,1),(0,1,-1),(0,2,-2)`)。答案:pythondefthree_sum(nums:list,target:int)->int:nums.sort()count=0n=len(nums)foriinrange(n-2):ifi>0andnums[i]==nums[i-1]:continueleft,right=i+1,n-1whileleft<right:total=nums[i]+nums[left]+nums[right]iftotal==target:count+=1left+=1right-=1whileleft<rightandnums[left]==nums[left-1]:left+=1whileleft<rightandnums[right]==nums[right+1]:right-=1eliftotal<target:left+=1else:right-=1returncount示例print(three_sum([-1,0,1,2,-1,-4],0))#輸出:4解析:排序后使用雙指針法,時間復雜度為O(n2)。避免重復解的方法是跳過相同的數(shù)字。2.題目:實現(xiàn)一個LRU(最近最少使用)緩存,支持`get`和`put`操作。緩存容量為`capacity`。例如,容量為2的緩存:`put(1,1)`→`put(2,2)`→`get(1)`→`put(3,3)`→`get(2)`→輸出`-1`(未命中)。答案:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.order=[]defget(self,key:int)->int:ifkeyinself.cache: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:oldest=self.order.pop(0)delself.cache[oldest]self.cache[key]=valueself.order.append(key)示例lru=LRUCache(2)lru.put(1,1)lru.put(2,2)print(lru.get(1))#輸出:1lru.put(3,3)print(lru.get(2))#輸出:-1解析:使用字典存儲緩存,列表維護訪問順序。`get`時將元素移到末尾,`put`時若超出容量則刪除最舊的元素。3.題目:給定一個二叉樹,找出最長的路徑,該路徑中的節(jié)點具有連續(xù)的值。例如,輸入`[5,4,5,1,1,5]`的二叉樹,最長連續(xù)路徑為`[5,4,5]`,長度為3。答案:pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdeflongest_consecutive(root:TreeNode)->int:ifnotroot:return0self.max_len=0defdfs(node:TreeNode,parent_val:int,current_len:int):ifnode:ifnode.val==parent_val+1:current_len+=1else:current_len=1self.max_len=max(self.max_len,current_len)dfs(node.left,node.val,current_len)dfs(node.right,node.val,current_len)dfs(root,root.val-1,0)returnself.max_len示例構建二叉樹[5,4,5,1,1,5]root=TreeNode(5)root.left=TreeNode(4)root.right=TreeNode(5)root.left.left=TreeNode(1)root.left.right=TreeNode(1)root.right.right=TreeNode(5)print(longest_consecutive(root))#輸出:3解析:深度優(yōu)先搜索(DFS)遍歷樹,記錄當前連續(xù)長度,并更新最大值。每次遇到不連續(xù)的值時重置長度。三、系統(tǒng)設計(1題,20分)1.題目:設計一個簡單的微博系統(tǒng),支持用戶發(fā)布微博、關注/取消關注、查看關注者的微博。要求說明核心模塊、數(shù)據(jù)結構、接口設計,并考慮高并發(fā)場景下的優(yōu)化。答案:核心模塊:1.用戶模塊:管理用戶信息(ID、昵稱、關注列表等)。2.微博模塊:管理微博發(fā)布、存儲、檢索。3.關系模塊:管理關注關系。4.緩存模塊:加速熱點數(shù)據(jù)訪問。5.消息隊列:異步處理高并發(fā)寫入。數(shù)據(jù)結構:-用戶:`{user_id:{name,followings,followers,tweets}}`-微博:`{tweet_id:{user_id,content,timestamp}}`-關注:`{user_id:{followings}}`接口設計:-`publish_tweet(user_id,content)`:發(fā)布微博。-`follow(user_id,target_id)`:關注用戶。-`unfollow(user_id,target_id)`:取消關注。-`get_tweets(user_id)`:獲取用戶微博(分頁)。高并發(fā)優(yōu)化:1.緩存:使用Redis緩存熱點用戶微博。2.異步寫入:通過Kafka/RabbitMQ處理發(fā)布消息,降低數(shù)據(jù)庫壓力。3.分片:按用戶ID分片微博數(shù)據(jù),提高讀寫性能。4.限流:對頻繁操作(如發(fā)布)進行限流。解析:微博系統(tǒng)需支持高并發(fā)讀寫,核心在于合理設計數(shù)據(jù)結構和異步處理。緩存和分片是關鍵優(yōu)化手段。四、數(shù)據(jù)庫(2題,每題10分,共20分)1.題目:解釋SQL中的`JOIN`類型,并說明在哪些場景下使用`LEFTJOIN`和`RIGHTJOIN`。答案:`JOIN`類型包括:-INNERJOIN:僅返回兩個表都匹配的行。-LEFTJOIN:返回左表所有行,右表匹配行;否則右表為`NULL`。-RIGHTJOIN:返回右表所有行,左表匹配行;否則左表為`NULL`。-FULLJOIN:返回兩個表的所有行,不匹配的為`NULL`。場景:-LEFTJOIN:查詢左表所有數(shù)據(jù),即使右表無匹配(如用戶信息+無訂單的用戶)。-RIGHTJOIN:反向場景(如查詢所有訂單,即使用戶不存在)。解析:`LEFTJOIN`和`RIGHTJOIN`主要區(qū)別在于保留哪張表的全部數(shù)據(jù)。選擇取決于業(yè)務需求。2.題目:設計一張用戶表(`users`),包含用戶ID(主鍵)、昵稱、注冊時間、性別、城市。寫出創(chuàng)建表的SQL語句,并說明索引優(yōu)化的原則。答案:sqlCREATETABLEusers(user_idINTPRIMARYKEYAUTO_INCREMENT,nicknameVARCHAR(50)NOTNULL,register_timeTIMESTAMPDEFAULTCURRENT_TIMESTAMP,genderENUM('male','female','other'),cityVARCHAR(100));CREATEINDEXidx_cityONusers(city);CREATEINDEXidx_genderONusers(gender);索引優(yōu)化原則:1.選擇性高:高基數(shù)的列(如`city`)。2.查詢頻繁:常用作過濾條件的列(如`gender`)。3.避免冗余:不要對非篩選列建索引。解析:索引能加速查詢,但需權衡性能和存儲成本。主鍵自動索引,常用篩選列單獨索引。五、操作系統(tǒng)(2題,每題10分,共20分)1.題目:解釋進程和線程的區(qū)別,并說明在哪些場景下使用多線程優(yōu)于多進程。答案:-進程:獨立內(nèi)存空間,資源分配單元。-線程:進程內(nèi)執(zhí)行單元,共享內(nèi)存空間,輕量級。多線程優(yōu)勢場景:1.I/O密集型:如網(wǎng)絡請求,線程阻塞不阻塞其他線程。2.共享數(shù)據(jù):線程間通信開銷小(如游戲內(nèi)存同步)。3.快速響應:如GUI界面保持流暢。解析:多線程適合共享數(shù)據(jù)和并發(fā)I/O,但需注意線程安全問題。多進程適合計算密集型任務。2.題目:簡述Linux中的`fork()`系統(tǒng)調(diào)用,并說明父子進程的執(zhí)行流程。答案:`fork()`創(chuàng)建子進程,父進程返回子進程ID,子進程返回0。-父進程:繼續(xù)執(zhí)行,可等待子進程(`wait()`)。-子進程:可修改共享數(shù)據(jù)(需加鎖)。流程:1.父進程調(diào)用`fork()`。2.系統(tǒng)復制父進程內(nèi)存(寫時復制)。3.子進程修改數(shù)據(jù)后寫入新內(nèi)存。4.父子獨立執(zhí)行。解析:`fork()`是Linux核心機制,但需注意資源復制和同步問題。六、網(wǎng)絡(2題,每題10分,共20分)1.題目:解釋TCP三次握手過程,并說明為何不能直接使用四次握手。答案:三次握手:1.`SYN`:客戶端→服務器,請求連接。2.`SYN-ACK`:服務器→客戶端,同意連接。3.`ACK`:客戶端→服務器,確認連接。為何不能四次:-三次能保證雙方收發(fā)能力。四次會引入冗余等待。-第三次`ACK`若丟失,重發(fā)機制需額外輪次。解析:三次握手是最低效率但可靠的方案,四次握手無實際收益。2.題題:說明HTTP和HTTPS的主要區(qū)別,以及HTTPS為何需要證書。答案:-HTTP:明文傳輸,易被竊聽。-HTTPS:加密傳輸(TLS/SSL),需證書驗證身份。證書作用:1.身份驗證:確認為合法服務器。2.加密密鑰分發(fā):通過非對稱加密交換對稱密鑰。解析:HTTPS通過證書解決信任和加密問題,但需證書機構(CA)背書。七、數(shù)據(jù)庫(2題,每題10分,共20分)1.題目:解釋SQL中的`GROUPBY`和`HAVING`的區(qū)別。答案:-`GROUPBY`:對數(shù)據(jù)進行分組,常用于聚合函數(shù)(`SUM()`、`C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)護人員銳器傷原因分析
- 《GB-Z 26580-2011柑橘生產(chǎn)技術規(guī)范》專題研究報告
- 《GB-T 19638.1-2014固定型閥控式鉛酸蓄電池 第1部分:技術條件》專題研究報告
- 《寵物鑒賞》課件-薩摩耶犬
- 2026年重慶科技職業(yè)學院單招職業(yè)適應性測試題庫及參考答案詳解1套
- 云權限管理運維協(xié)議
- 智能電表檢定員崗位考試試卷及答案
- 教師培訓計劃2026范文(3篇)
- 2025年軌道交通空氣過濾器項目建議書
- 兒童抽動癥飲食干預
- 移動傳輸管理辦法
- 2025年中醫(yī)經(jīng)典考試題目及答案
- 水電站大壩安全現(xiàn)場檢查技術規(guī)程 -DL-T 2204
- 國開學習網(wǎng)《園林樹木學》形考任務1234答案
- 膠質(zhì)瘤的圍手術期護理
- 數(shù)據(jù)庫應用技術-004-國開機考復習資料
- 手衛(wèi)生執(zhí)行率PDCA案例實施分析
- 病理學考試練習題庫及答案
- 2025年新高考1卷(新課標Ⅰ卷)語文試卷
- 2025-2030中國女鞋行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025至2030中國物理氣相沉積(PVD)設備行業(yè)行情監(jiān)測與發(fā)展動向追蹤報告
評論
0/150
提交評論