版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
2026年互聯(lián)網(wǎng)公司計算機技術面試技巧與答案一、編程實現(xiàn)題(共5題,每題10分,總分50分)1.(10分)編寫一個函數(shù),實現(xiàn)字符串的逆序輸出,不使用內(nèi)置的逆序函數(shù)。示例輸入:`"hello"`示例輸出:`"olleh"`答案:pythondefreverse_string(s):returns[::-1]或者使用循環(huán)實現(xiàn)defreverse_string_loop(s):result=""forcharins:result=char+resultreturnresult測試print(reverse_string("hello"))#輸出:ollehprint(reverse_string_loop("hello"))#輸出:olleh解析:-使用切片`s[::-1]`是最簡潔的實現(xiàn)方式,時間復雜度為O(n),空間復雜度為O(n)。-使用循環(huán)逐個字符拼接,同樣時間復雜度為O(n),但空間復雜度可能略高。2.(10分)給定一個數(shù)組,找出其中不重復的元素,并返回它們的數(shù)量。示例輸入:`[1,2,2,3,4,4,5]`示例輸出:`3`(不重復的元素有1,3,5)答案:pythondefcount_unique_elements(arr):returnlen(set(arr))測試print(count_unique_elements([1,2,2,3,4,4,5]))#輸出:3解析:-利用集合去重,時間復雜度為O(n),空間復雜度為O(n)。-也可以使用字典統(tǒng)計頻率,但集合更簡潔。3.(10分)實現(xiàn)一個簡單的LRU(最近最少使用)緩存,支持get和put操作。示例輸入:pythonlru=LRUCache(2)lru.put(1,1)lru.put(2,2)lru.get(1)#返回1lru.put(3,3)#去除鍵2lru.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操作時若超出容量則刪除最舊的鍵。4.(10分)編寫一個函數(shù),判斷一個二叉樹是否是平衡二叉樹(左右子樹高度差不超過1)。示例輸入:3/\920/\157示例輸出:`True`答案:pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefis_balanced(root:TreeNode)->bool:defheight(node):ifnotnode:return0left_height=height(node.left)right_height=height(node.right)ifabs(left_height-right_height)>1orleft_height==-1orright_height==-1:return-1returnmax(left_height,right_height)+1returnheight(root)!=-1測試root=TreeNode(3)root.left=TreeNode(9)root.right=TreeNode(20)root.right.left=TreeNode(15)root.right.right=TreeNode(7)print(is_balanced(root))#輸出:True解析:-遞歸計算左右子樹高度,若高度差超過1或子樹不平衡(返回-1),則整棵樹不平衡。5.(10分)實現(xiàn)一個簡單的Trie(前綴樹),支持插入和查詢操作。示例輸入:pythontrie=Trie()trie.insert("apple")trie.insert("app")print(trie.search("apple"))#返回Trueprint(trie.search("app"))#返回Trueprint(trie.startsWith("app"))#返回Truetrie.insert("ap")print(trie.search("ap"))#返回False答案:pythonclassTrieNode:def__init__(self):self.children={}self.is_end=FalseclassTrie:def__init__(self):self.root=TrieNode()definsert(self,word:str)->None:node=self.rootforcharinword:ifcharnotinnode.children:node.children[char]=TrieNode()node=node.children[char]node.is_end=Truedefsearch(self,word:str)->bool:node=self._find(word)returnnodeisnotNoneandnode.is_enddefstartsWith(self,prefix:str)->bool:returnself._find(prefix)isnotNonedef_find(self,word:str):node=self.rootforcharinword:ifcharnotinnode.children:returnNonenode=node.children[char]returnnode測試trie=Trie()trie.insert("apple")trie.insert("app")print(trie.search("apple"))#輸出:Trueprint(trie.search("app"))#輸出:Trueprint(trie.startsWith("app"))#輸出:Truetrie.insert("ap")print(trie.search("ap"))#輸出:False解析:-Trie通過字典存儲子節(jié)點,is_end標記單詞結束。-插入和查詢時間復雜度為O(m),m為單詞長度。二、系統(tǒng)設計題(共2題,每題25分,總分50分)1.(25分)設計一個短鏈接系統(tǒng),要求:-輸入長鏈接,返回短鏈接(如`/abc123`)。-支持通過短鏈接查詢原始長鏈接。-高并發(fā)場景下性能良好,支持每日百萬級請求。要求:-說明核心組件設計(數(shù)據(jù)庫、緩存、分布式等)。-簡述URL編碼方案和沖突處理。答案:核心組件設計:1.URL編碼方案:-使用62進制(a-z,A-Z,0-9)將長鏈接映射為固定長度的短碼(如6位)。-例如:`/example`→`/abc123`。-編碼公式:`hash(長鏈接)%62`,映射到62字符集。2.數(shù)據(jù)庫設計:-使用Redis存儲短碼-長鏈接映射,支持快速get/set操作。-若短鏈接數(shù)量過大,可分片存儲(如按短碼首字母分片)。3.高并發(fā)優(yōu)化:-使用分布式緩存(RedisCluster)避免單點瓶頸。-短鏈接訪問時先查緩存,未命中再查數(shù)據(jù)庫。4.沖突處理:-若短碼重復,通過自增或隨機重試生成新碼。-例如:若`abc123`已存在,生成`abc124`或`def456`。簡述:-短鏈接生成通過hash算法+62進制映射,沖突概率極低。-緩存+數(shù)據(jù)庫組合保證高并發(fā)下的響應速度。2.(25分)設計一個實時消息推送系統(tǒng)(如微信、抖音通知),要求:-支持單用戶和多用戶消息推送。-保證消息不丟失,可重試。-支持離線消息存儲和延遲推送。要求:-說明消息隊列選型(如Kafka/RabbitMQ)。-描述離線消息的存儲和重試機制。答案:核心組件設計:1.消息隊列選型:-使用Kafka(高吞吐、持久化)。-消息分為:實時消息(優(yōu)先級高)、離線消息(延遲推送)。2.消息流程:-用戶設備接入WebSocket長連接,實時消息直接推送到客戶端。-離線消息存入Redis+定時任務,超時后重新入隊。3.離線消息機制:-用戶離線時,消息存入Redis(key=用戶ID,value=消息隊列ID)。-定時任務掃描Redis,超時消息重新入Kafka。-重試次數(shù)限制(如3次),避免無限循環(huán)。簡述:-Kafka保證消息不丟失,通過ACK機制。-Redis+定時任務實現(xiàn)離線消息重試,結合消息隊列實現(xiàn)削峰填谷。三、數(shù)據(jù)庫與分布式題(共3題,每題15分,總分45分)1.(15分)SQL題:給定表`orders`(`id,user_id,amount,order_time`)和`users`(`id,name`),查詢每個用戶的總消費金額,并按消費金額降序排列。示例輸出:|name|total_amount||-|--||Alice|150||Bob|200|答案:sqlSELECT,SUM(o.amount)AStotal_amountFROMordersoJOINusersuONo.user_id=u.idGROUPBYORDERBYtotal_amountDESC;解析:-JOIN連接訂單和用戶表,SUM聚合消費金額。-降序排列滿足需求。2.(15分)分布式題:假設一個分布式數(shù)據(jù)庫集群(如MySQLCluster),如何保證數(shù)據(jù)一致性?答案:1.主從復制:-寫請求先到Master節(jié)點,同步到Slaves。-讀請求可分配到Master或任意Slave。2.事務隔離級別:-使用強一致性協(xié)議(如2PC)確??绻?jié)點事務。3.分布式鎖:-使用Redis或ZooKeeper實現(xiàn)分布式鎖,避免并發(fā)沖突。解析:-復制+隔離級別是分布式一致性的核心。3.(15分)分布式題:如何設計一個分布式緩存(如RedisCluster),解決緩存雪崩問題?答案:1.緩存預熱:-起服時預加載熱點數(shù)據(jù)到緩存。2.分布式鎖:-緩存失效時,使用分布式鎖避免同時擊穿數(shù)據(jù)庫。3.限流降級:-若數(shù)據(jù)庫壓力過大,降級為靜態(tài)緩存或默認響應。解析:-緩存雪崩通過多策略緩解,避免單點失效。四、網(wǎng)絡與操作系統(tǒng)題(共3題,每題15分,總分45分)1.(15分)網(wǎng)絡題:解釋TCP三次握手過程及其作用。答案:1.過程:-客戶端SYN→服務器SYN+ACK→客戶端ACK。2.作用:-確認雙方收發(fā)能力正常。-防止已失效的連接請求干擾。解析:-握手保證可靠連接建立。2.(15分)操作系統(tǒng)題:解釋Linux中的`fork()`和`exec()`系統(tǒng)調(diào)用區(qū)別。答案:-`fork()`:創(chuàng)建子進程,共享父進程資源(內(nèi)存)。-`exec()`:替換子進程代碼,子進程ID不變。cpid=fork(
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化學氧化工安全檢查能力考核試卷含答案
- 醋酸乙烯和乙烯共聚物裝置操作工常識水平考核試卷含答案
- 氣動元件制造工崗前實踐理論考核試卷含答案
- 硬質(zhì)合金混合料鑒定下料工發(fā)展趨勢測試考核試卷含答案
- 梁式窯石灰煅燒工持續(xù)改進水平考核試卷含答案
- 親屬結婚的請假條
- 2025年網(wǎng)安系統(tǒng)合作協(xié)議書
- 2025年轉子式海流計項目發(fā)展計劃
- 2025年碳二餾份加氫催化劑項目合作計劃書
- 2025年箱、包及類似容器項目合作計劃書
- 電力通信培訓課件
- 鋼結構防護棚工程施工方案
- 中建三局2024年項目經(jīng)理思維導圖
- 中國藥物性肝損傷診治指南(2024年版)解讀
- 基層黨建知識測試題及答案
- DG-TJ08-2021-2025 干混砌筑砂漿抗壓強度現(xiàn)場檢測技術標準
- 鼻竇炎的護理講課課件
- 腸系膜脂膜炎CT診斷
- 體外膜肺氧合技術ECMO培訓課件
- 老年醫(yī)院重點專科建設方案
- 銀行解封協(xié)議書模板
評論
0/150
提交評論