版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2026年互聯(lián)網(wǎng)巨頭公司技術(shù)專家面試秘籍:工程師考核問(wèn)題集一、編程基礎(chǔ)與數(shù)據(jù)結(jié)構(gòu)(共5題,每題8分,總分40分)1.題目:實(shí)現(xiàn)一個(gè)函數(shù),輸入一個(gè)非負(fù)整數(shù)`n`,返回`n`的漢明重量(即二進(jìn)制表示中`1`的個(gè)數(shù))。要求時(shí)間復(fù)雜度為O(1)。答案:cppinthammingWeight(uint32_tn){intcount=0;while(n){count+=n&1;n>>=1;}returncount;}解析:通過(guò)位運(yùn)算,每次判斷最低位是否為`1`,然后右移一位,直到`n`為`0`。時(shí)間復(fù)雜度為O(1),因?yàn)?2位整數(shù)最多循環(huán)32次。2.題目:給定一個(gè)字符串`s`,判斷它是否是回文串??梢院雎苑亲帜笖?shù)字字符,且不區(qū)分大小寫。答案:cppboolisPalindrome(strings){intleft=0,right=s.size()-1;while(left<right){while(left<right&&!isalnum(s[left]))left++;while(left<right&&!isalnum(s[right]))right--;if(tolower(s[left])!=tolower(s[right]))returnfalse;left++;right--;}returntrue;}解析:雙指針?lè)?,從兩端向中間遍歷,忽略非字母數(shù)字字符,并統(tǒng)一為小寫比較。時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(1)。3.題目:實(shí)現(xiàn)快速排序算法,要求不使用遞歸,手動(dòng)模擬遞歸棧。答案:cppvoidquickSort(vector<int>&nums){stack<int>stk;stk.push(0);stk.push(nums.size()-1);while(!stk.empty()){intright=stk.top();stk.pop();intleft=stk.top();stk.pop();intpivot=partition(nums,left,right);if(left<pivot-1){stk.push(left);stk.push(pivot-1);}if(pivot+1<right){stk.push(pivot+1);stk.push(right);}}}intpartition(vector<int>&nums,intleft,intright){intpivot=nums[right];inti=left-1;for(intj=left;j<right;j++){if(nums[j]<=pivot){i++;swap(nums[i],nums[j]);}}swap(nums[i+1],nums[right]);returni+1;}解析:手動(dòng)使用棧模擬遞歸,避免遞歸棧溢出。時(shí)間復(fù)雜度O(nlogn),最壞O(n^2)。4.題目:設(shè)計(jì)LRU(LeastRecentlyUsed)緩存,支持`get`和`put`操作。要求空間復(fù)雜度O(1)。答案:cppclassLRUCache{public:LRUCache(intcapacity):capacity(capacity){}intget(intkey){if(cache.find(key)==cache.end())return-1;autoit=cache[key];cache.erase(key);cache[key]=cache.end();returnit->second;}voidput(intkey,intvalue){if(cache.find(key)!=cache.end()){cache[key]->second=value;cache.erase(key);cache[key]=cache.end();}else{if(cache.size()==capacity){cache.erase(cache.begin());}cache[key]=cache.end();}}private:unordered_map<int,list<pair<int,int>>::iterator>cache;intcapacity;};解析:使用`unordered_map`記錄鍵到雙向鏈表的迭代器,雙向鏈表維護(hù)訪問(wèn)順序。`get`時(shí)移動(dòng)到鏈表末尾,`put`時(shí)先刪除舊鍵,再插入新鍵。時(shí)間復(fù)雜度O(1)。5.題目:給定一個(gè)二叉樹(shù),判斷它是否是平衡二叉樹(shù)(左右子樹(shù)高度差不超過(guò)1)。答案:cppboolisBalanced(TreeNoderoot){returncheckHeight(root)!=-1;}intcheckHeight(TreeNodenode){if(!node)return0;intleft=checkHeight(node->left);if(left==-1)return-1;intright=checkHeight(node->right);if(right==-1||abs(left-right)>1)return-1;returnmax(left,right)+1;}解析:后序遍歷計(jì)算子樹(shù)高度,若發(fā)現(xiàn)不平衡則提前返回`-1`。時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(h),h為樹(shù)高。二、算法與設(shè)計(jì)(共5題,每題10分,總分50分)1.題目:設(shè)計(jì)一個(gè)算法,找出無(wú)重復(fù)字符的最長(zhǎng)子串長(zhǎng)度。答案:cppintlengthOfLongestSubstring(strings){unordered_map<char,int>lastPos;intstart=0,maxLen=0;for(inti=0;i<s.size();i++){if(lastPos.find(s[i])!=lastPos.end()){start=max(start,lastPos[s[i]]+1);}lastPos[s[i]]=i;maxLen=max(maxLen,i-start+1);}returnmaxLen;}解析:滑動(dòng)窗口法,記錄字符上一次出現(xiàn)的位置,動(dòng)態(tài)調(diào)整窗口。時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(1)。2.題目:設(shè)計(jì)一個(gè)算法,將單詞列表按字典序排列。答案:cppvoidsortWords(vector<string>&words){sort(words.begin(),words.end(),[](conststring&a,conststring&b)->bool{returna<b;});}解析:直接使用`sort`函數(shù),自定義比較器按字典序排序。時(shí)間復(fù)雜度O(nlogn),空間復(fù)雜度O(logn)。3.題目:設(shè)計(jì)一個(gè)算法,找出數(shù)組中的第k個(gè)最大元素。答案:cppintfindKthLargest(vector<int>&nums,intk){nth_element(nums.begin(),nums.begin()+k-1,nums.end(),greater<int>());returnnums[k-1];}解析:使用`nth_element`選擇第k個(gè)最大元素,時(shí)間復(fù)雜度O(n)。若需完全排序,則`sort`(O(nlogn))。4.題目:設(shè)計(jì)一個(gè)算法,合并兩個(gè)有序鏈表,返回合并后的頭節(jié)點(diǎn)。答案:cppListNodemergeTwoLists(ListNodel1,ListNodel2){ListNodedummy;ListNodetail=&dummy;while(l1&&l2){if(l1->val<l2->val){tail->next=l1;l1=l1->next;}else{tail->next=l2;l2=l2->next;}tail=tail->next;}tail->next=l1?l1:l2;returndummy.next;}解析:迭代合并,使用虛擬頭節(jié)點(diǎn)簡(jiǎn)化邊界處理。時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(1)。5.題目:設(shè)計(jì)一個(gè)算法,實(shí)現(xiàn)LRU緩存的高效實(shí)現(xiàn)(使用雙向鏈表+哈希表)。答案:cppclassLRUCache{public:LRUCache(intcapacity):capacity(capacity){}intget(intkey){if(cache.find(key)==cache.end())return-1;autoit=cache[key];moveToHead(it);returnit->second;}voidput(intkey,intvalue){if(cache.find(key)!=cache.end()){autoit=cache[key];it->second=value;moveToHead(it);}else{if(cache.size()==capacity){cache.erase(tail->prev);removeNode(tail->prev);}addNode(makeNode(key,value));cache[key]=head->next;}}private:structNode{intkey,value;Nodeprev;Nodenext;Node(intk,intv):key(k),value(v){}};Nodehead=newNode(0,0);Nodetail=newNode(0,0);unordered_map<int,Node>cache;intcapacity;voidaddNode(Nodenode){node->prev=head;node->next=head->next;head->next->prev=node;head->next=node;}voidremoveNode(Nodenode){node->prev->next=node->next;node->next->prev=node->prev;}voidmoveToHead(Nodenode){removeNode(node);addNode(node);}NodemakeNode(intkey,intvalue){returnnewNode(key,value);}};解析:雙向鏈表維護(hù)訪問(wèn)順序,哈希表記錄鍵到節(jié)點(diǎn)的映射。`get`和`put`時(shí)調(diào)整鏈表,時(shí)間復(fù)雜度O(1)。三、系統(tǒng)設(shè)計(jì)(共3題,每題20分,總分60分)1.題目:設(shè)計(jì)一個(gè)微博系統(tǒng),要求支持:-用戶發(fā)布微博(限制長(zhǎng)度140字符)-獲取用戶關(guān)注者的最新10條微博-支持關(guān)注/取消關(guān)注答案:架構(gòu)設(shè)計(jì):1.數(shù)據(jù)存儲(chǔ):-微博:使用MySQL存儲(chǔ),字段包括`id`(主鍵)、`user_id`、`content`、`timestamp`。-用戶:MySQL存儲(chǔ),字段包括`id`、`username`、`followings`(JSON存儲(chǔ)關(guān)注列表)。2.緩存:-Redis緩存用戶關(guān)注列表,避免頻繁查詢MySQL。-用戶最新10條微博使用Redis/ZSet按時(shí)間排序存儲(chǔ)。3.接口設(shè)計(jì):-`postTweet(user_id,content)`:保存微博,更新用戶ZSet。-`getFeed(user_id)`:獲取關(guān)注者微博,合并ZSet取最新10條。-`follow(user_id,followee_id)`:更新關(guān)注列表,觸發(fā)緩存更新。解析:-微博使用關(guān)系型數(shù)據(jù)庫(kù)保證事務(wù)性,關(guān)注列表用Redis提高性能。-ZSet用于按時(shí)間排序,避免全表掃描。2.題目:設(shè)計(jì)一個(gè)短鏈接系統(tǒng),要求:-輸入長(zhǎng)鏈接,返回短鏈接-通過(guò)短鏈接訪問(wèn)時(shí),重定向到長(zhǎng)鏈接-支持自定義短鏈接前綴答案:架構(gòu)設(shè)計(jì):1.數(shù)據(jù)存儲(chǔ):-使用Redis存儲(chǔ)`long_url->short_url`映射,支持快速查找。-短鏈接使用自增ID或哈希生成,如`/a1b2c3`。2.生成短鏈接:-使用Base62編碼(a-z,A-Z,0-9)將ID壓縮。3.重定向:-接收短鏈接,解析ID,查詢Redis返回長(zhǎng)鏈接。解析:-Redis保證高并發(fā)讀寫,Base62減少鏈接長(zhǎng)度。3.題目:
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 銅仁2025年貴州銅仁市中醫(yī)醫(yī)院引進(jìn)衛(wèi)生專業(yè)技術(shù)人才筆試歷年參考題庫(kù)附帶答案詳解
- 邯鄲河北邯鄲館陶縣司法局招錄司法協(xié)理員8人筆試歷年參考題庫(kù)附帶答案詳解
- 萍鄉(xiāng)2025年江西萍鄉(xiāng)市人民醫(yī)院專業(yè)技術(shù)崗招聘16人筆試歷年參考題庫(kù)附帶答案詳解
- 滁州2025年安徽滁州天長(zhǎng)市司法局招聘司法協(xié)理員30人筆試歷年參考題庫(kù)附帶答案詳解
- ???025年海南??谑新糜魏臀幕瘡V電體育局招聘2人筆試歷年參考題庫(kù)附帶答案詳解
- 河南2025年河南大學(xué)招聘10人筆試歷年參考題庫(kù)附帶答案詳解
- 杭州浙江杭州市標(biāo)準(zhǔn)化研究院招聘編外聘用人員筆試歷年參考題庫(kù)附帶答案詳解
- 揚(yáng)州2025年江蘇揚(yáng)州市廣陵區(qū)衛(wèi)生健康系統(tǒng)事業(yè)單位招聘專業(yè)技術(shù)人員38人筆試歷年參考題庫(kù)附帶答案詳解
- 宿遷2025年江蘇宿遷泗陽(yáng)縣部分縣直機(jī)關(guān)事業(yè)單位轉(zhuǎn)任(選調(diào))46人筆試歷年參考題庫(kù)附帶答案詳解
- 天津2025年天津醫(yī)科大學(xué)朱憲彝紀(jì)念醫(yī)院人事代理制招聘筆試歷年參考題庫(kù)附帶答案詳解
- 小兒藥浴治療
- 保險(xiǎn)實(shí)務(wù)課程設(shè)計(jì)
- 物業(yè)管理公司管理目標(biāo)標(biāo)準(zhǔn)
- 2023年重慶巴南區(qū)重點(diǎn)中學(xué)指標(biāo)到校數(shù)學(xué)試卷真題(答案詳解)
- JBT 12530.3-2015 塑料焊縫無(wú)損檢測(cè)方法 第3部分:射線檢測(cè)
- 物業(yè)工程管理中的成本控制方法
- 2023年四川省綿陽(yáng)市中考數(shù)學(xué)試卷
- 小班數(shù)學(xué)《5以內(nèi)的點(diǎn)數(shù)》課件
- 人教版九年級(jí)英語(yǔ)上冊(cè)閱讀理解10篇(含答案)
- 醫(yī)療器械行業(yè)招商方案
- 不同治療對(duì)多發(fā)性骨髓瘤患者凝血功能及預(yù)后的影響演示稿件
評(píng)論
0/150
提交評(píng)論