筆試卷全解析:從基礎(chǔ)考點(diǎn)到備考策略)
2014年騰訊研發(fā)筆試卷在很多老開(kāi)發(fā)眼里就是一面照妖鏡。那年頭的筆試不像現(xiàn)在這樣海量刷題、系統(tǒng)設(shè)計(jì)滿天飛它考察的東西非常“原始”C語(yǔ)言、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、網(wǎng)絡(luò)基礎(chǔ)外加幾道讓人拍桌子的智力題。我到現(xiàn)在還留著當(dāng)時(shí)考完的筆記回頭翻看發(fā)現(xiàn)這份試卷的價(jià)值其實(shí)遠(yuǎn)不止“找份工作”那么簡(jiǎn)單——它像一次對(duì)計(jì)算機(jī)基礎(chǔ)功底的全面體檢哪些地方是半吊子哪些地方是真吃透了一張卷子就能試出來(lái)。這篇文章我想從命題思路開(kāi)始把2014年騰訊研發(fā)筆試卷的考察要點(diǎn)、典型題型、解題邏輯以及我當(dāng)時(shí)踩過(guò)的坑完整拆一遍。無(wú)論你是準(zhǔn)備面試的應(yīng)屆生還是想借一份老卷子檢驗(yàn)自己基礎(chǔ)的職場(chǎng)人都能從中找到能直接用的復(fù)習(xí)路徑和實(shí)操方法。1. 2014年騰訊研發(fā)筆試卷的考察版圖與命題邏輯1.1 整張卷子的模塊分布和題目類型2014年騰訊校招研發(fā)崗筆試卷整體結(jié)構(gòu)通常分為客觀題和主觀題兩大塊??陀^題以單選題為主也有少量多選題覆蓋的面非常寬包括C/C語(yǔ)法細(xì)節(jié)、數(shù)據(jù)結(jié)構(gòu)與算法復(fù)雜度、操作系統(tǒng)原理、計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)、數(shù)據(jù)庫(kù)基礎(chǔ)偶爾還會(huì)摻幾道Linux命令和概率統(tǒng)計(jì)。主觀題一般有兩到三道常見(jiàn)組合是手寫代碼題加算法設(shè)計(jì)題有時(shí)還配一道SQL題或系統(tǒng)設(shè)計(jì)小題。從考察比重來(lái)看C/C和數(shù)據(jù)結(jié)構(gòu)是絕對(duì)的核心兩項(xiàng)加起來(lái)差不多能占60%以上。操作系統(tǒng)和網(wǎng)絡(luò)各占10%到15%剩下的就是智力題、概率題和邏輯題。這種比例不是隨手定的它反映的是騰訊那個(gè)年代對(duì)研發(fā)崗位的真實(shí)期待你進(jìn)來(lái)之后要能看懂現(xiàn)有代碼要能寫底層模塊要能在線上問(wèn)題出現(xiàn)時(shí)快速定位到底是內(nèi)存問(wèn)題、線程問(wèn)題還是網(wǎng)絡(luò)問(wèn)題。所以基礎(chǔ)不牢的人試卷上非常容易暴露。1.2 為什么這個(gè)年代會(huì)這樣出題現(xiàn)在回頭看2014年的考題風(fēng)格會(huì)發(fā)現(xiàn)它和當(dāng)時(shí)的技術(shù)土壤有很強(qiáng)的關(guān)系。那時(shí)候騰訊的很多核心服務(wù)還是C寫的客戶端、后臺(tái)服務(wù)、游戲引擎C幾乎是無(wú)處不在。這意味著面試官需要招進(jìn)來(lái)的人立刻能上手維護(hù)現(xiàn)有代碼所以筆試?yán)锎罅靠疾熘羔?、?nèi)存、虛函數(shù)、STL這些C底層概念邏輯上非常順。另一個(gè)背景是移動(dòng)互聯(lián)網(wǎng)剛進(jìn)入爆發(fā)期團(tuán)隊(duì)規(guī)模擴(kuò)張很快面試官手里簡(jiǎn)歷堆積如山。筆試作為第一道篩選關(guān)卡必須做到“區(qū)分度大、作弊成本高、機(jī)器判斷快”。因此選擇題占了很大比例主觀題也以寫代碼為主目的就是快速判斷一個(gè)人基本功是否扎實(shí)有沒(méi)有真實(shí)編碼經(jīng)驗(yàn)。理解了這個(gè)背景你就明白為什么這份試卷如此“硬核”——它不是考你懂多少新框架而是考你底子是否夠厚。2. 重點(diǎn)題型拆解數(shù)據(jù)結(jié)構(gòu)與算法題2.1 鏈表、棧與隊(duì)列類題目的經(jīng)典套路2014年這份試卷里鏈表的出鏡率非常高。我記得有類經(jīng)典題目比如判斷鏈表是否有環(huán)、找到環(huán)的入口節(jié)點(diǎn)、反轉(zhuǎn)鏈表、合并兩個(gè)有序鏈表。這些題目放在今天依然是面試高頻題區(qū)別在于當(dāng)年沒(méi)有 LeetCode 這種刷題平臺(tái)大家都是靠《算法導(dǎo)論》和《數(shù)據(jù)結(jié)構(gòu)》教材硬啃拿到題目先在紙上畫圖再一步步推導(dǎo)。以判斷鏈表是否有環(huán)這道題為例常規(guī)解法是快慢指針。慢指針每次走一步快指針每次走兩步如果鏈表中存在環(huán)快指針最終一定會(huì)追上慢指針。很多人會(huì)背這個(gè)結(jié)論但筆試題目如果稍微變一下比如要求你證明為什么快指針每次走兩步一定能追上很多人就卡住了。這里的關(guān)鍵在于當(dāng)慢指針進(jìn)入環(huán)時(shí)快指針一定已經(jīng)在環(huán)內(nèi)二者之間的相對(duì)速度差是1步因此距離會(huì)不斷縮短最終必然相遇。如果快指針每次走三步或四步反而不一定能保證追上因?yàn)榭赡艹霈F(xiàn)循環(huán)跳過(guò)的情況。// 判斷鏈表是否有環(huán) bool hasCycle(ListNode *head) { ListNode *slow head; ListNode *fast head; while (fast ! NULL fast-next ! NULL) { slow slow-next; fast fast-next-next; if (slow fast) { return true; } } return false; }我當(dāng)時(shí)做題的心得是鏈表類題目必須做到“畫圖推演先于寫代碼”。因?yàn)殒湵聿僮髯钆聛G指針比如反轉(zhuǎn)鏈表時(shí)如果順序記錯(cuò)很容易出現(xiàn)斷鏈或死循環(huán)。我的習(xí)慣是先畫出每一步的指針變化標(biāo)清楚哪根指針指向哪個(gè)節(jié)點(diǎn)再落筆寫代碼這樣寫出來(lái)的代碼基本一遍過(guò)。這個(gè)習(xí)慣后來(lái)在工作中排查鏈表相關(guān)問(wèn)題也幫了大忙。2.2 排序與查找性價(jià)比最高的拿分區(qū)排序算法這塊2014年筆試卷幾乎必考。常見(jiàn)的出題方式有給一組數(shù)據(jù)問(wèn)用快速排序第一趟劃分后的序列是什么比較不同排序算法在最好、最壞、平均情況下的時(shí)間復(fù)雜度或者要求手寫堆排序。對(duì)備考的人來(lái)說(shuō)排序算法是性價(jià)比最高的拿分點(diǎn)因?yàn)橐?guī)律性強(qiáng)、套路固定只要背熟幾種核心排序的實(shí)現(xiàn)過(guò)程選擇題很快就能拿下??焖倥判虻谝惶藙澐诌@類題考察的是對(duì)partition過(guò)程的理解。比如給定數(shù)組 5, 3, 8, 6, 2, 7, 1, 4以第一個(gè)元素5為基準(zhǔn)一趟劃分后數(shù)組會(huì)變成什么樣基準(zhǔn)元素最終落在哪個(gè)位置。這個(gè)問(wèn)題需要你手動(dòng)模擬雙指針交換的過(guò)程從右往左找比基準(zhǔn)小的從左往右找比基準(zhǔn)大的兩者交換直到指針重合。手動(dòng)模擬一兩次不僅選擇題能答對(duì)手寫快排的代碼也會(huì)順手很多。還有一個(gè)容易被忽略的點(diǎn)是穩(wěn)定性。快速排序、堆排序、選擇排序都是不穩(wěn)定的插入排序、冒泡排序、歸并排序是穩(wěn)定的。2014年的卷子里這種題通常不會(huì)直接問(wèn)你“哪種排序穩(wěn)定”而是藏在具體場(chǎng)景里比如“按成績(jī)降序排列成績(jī)相同按學(xué)號(hào)升序問(wèn)應(yīng)該用什么排序”其實(shí)就是在考你對(duì)穩(wěn)定性的理解。我當(dāng)時(shí)就是因?yàn)闆](méi)注意到穩(wěn)定性這個(gè)細(xì)節(jié)白丟了一道不該丟的選擇題。2.3 動(dòng)態(tài)規(guī)劃與遞歸拉分題出沒(méi)之處主觀題里最拉分的往往是動(dòng)態(tài)規(guī)劃。騰訊2014年筆試卷出現(xiàn)過(guò)類似“編輯距離”“最長(zhǎng)公共子序列”這類經(jīng)典DP問(wèn)題也有更實(shí)際的場(chǎng)景題比如“給定一個(gè)整數(shù)數(shù)組找一個(gè)連續(xù)子數(shù)組使得其和最大”也就是最大子序和問(wèn)題。這類題目考察的不只是你是否知道DP模板還有你把實(shí)際問(wèn)題抽象成狀態(tài)轉(zhuǎn)移方程的能力。拿最大子序和來(lái)說(shuō)第一步是定義狀態(tài)dp[i]表示以第i個(gè)元素結(jié)尾的連續(xù)子數(shù)組的最大和。狀態(tài)轉(zhuǎn)移方程是dp[i] max(nums[i], dp[i-1] nums[i])意思是要么從當(dāng)前元素重新開(kāi)始要么把當(dāng)前元素接到前面的最優(yōu)子數(shù)組后面。理解了狀態(tài)定義代碼非常短def maxSubArray(nums): cur 0 max_sum nums[0] for num in nums: cur max(num, cur num) max_sum max(max_sum, cur) return max_sum這道題實(shí)際上有更簡(jiǎn)單的貪心思路但DP理解到位后可以舉一反三處理很多變體題目。我當(dāng)時(shí)復(fù)習(xí)DP時(shí)的經(jīng)驗(yàn)是不要急著刷大量題先過(guò)一遍常見(jiàn)DP模型包括背包、LIS、LCS、編輯距離、區(qū)間DP把每個(gè)模型的狀態(tài)定義和轉(zhuǎn)移方程手寫推導(dǎo)一遍再去做題。因?yàn)楣P試卷子時(shí)間有限考場(chǎng)上現(xiàn)推狀態(tài)方程容易慌提前把這些基礎(chǔ)模型吃透臨場(chǎng)會(huì)穩(wěn)很多。3. C/C與操作系統(tǒng)筆試?yán)锏摹盎A(chǔ)盤”3.1 數(shù)組與指針C語(yǔ)言陣營(yíng)的送命題2014年的筆試卷里C/C考點(diǎn)里最經(jīng)典的就是數(shù)組與指針的區(qū)別再配合sizeof運(yùn)算符出題。這類題看起來(lái)簡(jiǎn)單但失分率出奇地高因?yàn)槿菀谆煜龜?shù)組名、指針變量、指針數(shù)組和數(shù)組指針這幾個(gè)概念。舉個(gè)例子char str[] hellocharp hello問(wèn)sizeof(str)和sizeof(p)分別是多少。前者是在棧上分配的字符數(shù)組包含了結(jié)尾的\0所以sizeof結(jié)果是6后者是一個(gè)指針變量在32位系統(tǒng)上是4在64位系統(tǒng)上是8。這道題的坑在于很多人默認(rèn)“字符串就是char”忽略了數(shù)組和指針在類型系統(tǒng)里的本質(zhì)區(qū)別。這些題考察的是對(duì)語(yǔ)言底層的實(shí)際理解程度不是背答案就能搞定的。另一個(gè)高頻考點(diǎn)是指針運(yùn)算。比如int a[5] {1, 2, 3, 4, 5}; intptr (int)(a 1); 問(wèn)(ptr - 1)是多少。這里的核心是a是一個(gè)指向整個(gè)數(shù)組的指針類型是int()[5]加1后指向數(shù)組a末尾的下一個(gè)位置也就是跨過(guò)了5個(gè)int再減1回退一個(gè)int指向5。做這類題必須搞清楚指針的“步長(zhǎng)”也就是指針指向的類型有多大否則極易出錯(cuò)。3.2 內(nèi)存管理與進(jìn)程線程的必考細(xì)節(jié)操作系統(tǒng)這個(gè)模塊2014年騰訊筆試基本圍繞內(nèi)存管理、進(jìn)程與線程的區(qū)別、死鎖條件和調(diào)度算法來(lái)出題。內(nèi)存管理里常見(jiàn)的有虛擬內(nèi)存、分頁(yè)分段、頁(yè)面置換算法。有一道題我記得很清楚給定一段訪問(wèn)序列分別用FIFO和LRU算法計(jì)算缺頁(yè)次數(shù)。這種題就是送分題只要在草稿紙上畫好頁(yè)面框的狀態(tài)變化一步步推就能算對(duì)。不過(guò)要提防變體題。同樣是頁(yè)面置換如果把物理頁(yè)面框數(shù)提高缺頁(yè)次數(shù)反而增加的場(chǎng)景那就是Belady異常只有FIFO算法才會(huì)出現(xiàn)LRU不存在這個(gè)問(wèn)題。題目如果這樣出其實(shí)是在考察你對(duì)算法特性的深入理解不是單純的計(jì)算。進(jìn)程與線程的區(qū)別幾乎是必考出題方式往往是“以下關(guān)于進(jìn)程和線程的描述正確的是”??嫉降狞c(diǎn)通常是進(jìn)程是資源分配的基本單位線程是CPU調(diào)度的基本單位同一進(jìn)程的線程共享地址空間和資源但進(jìn)程之間互相隔離線程切換比進(jìn)程切換開(kāi)銷小。死鎖方面則經(jīng)常會(huì)考死鎖的四個(gè)必要條件或者用資源分配圖判斷是否有可能進(jìn)入死鎖。3.3 計(jì)算機(jī)網(wǎng)絡(luò)TCP/IP的核心考點(diǎn)網(wǎng)絡(luò)模塊的考察也相當(dāng)集中。TCP三次握手、四次揮手、TIME_WAIT狀態(tài)、TCP與UDP的區(qū)別幾乎每年都會(huì)換著花樣出現(xiàn)。2014年筆試卷里有一道印象很深的題為什么TCP斷開(kāi)連接需要四次揮手為什么TIME_WAIT狀態(tài)要等待2MSL這兩個(gè)問(wèn)題其實(shí)都指向同一個(gè)本質(zhì)——TCP必須確保所有報(bào)文都能被可靠送達(dá)。我來(lái)解釋一下四次揮手的原因。TCP是全雙工通道斷開(kāi)時(shí)兩個(gè)方向都要單獨(dú)關(guān)閉。主機(jī)關(guān)閉發(fā)送方向時(shí)只能說(shuō)明它不再發(fā)數(shù)據(jù)但接收方向還開(kāi)著對(duì)方仍然可能繼續(xù)發(fā)數(shù)據(jù)過(guò)來(lái)。所以每個(gè)方向都需要一次FIN和一次ACK加起來(lái)就是四次。TIME_WAIT等待2MSL的核心目的有兩個(gè)一是保證最后的ACK如果丟失對(duì)方重傳FIN時(shí)還能收到二是防止本連接已失效的報(bào)文出現(xiàn)在新連接中。理解了這兩個(gè)原因遇到選擇題變體也不怕。還有一個(gè)高頻考點(diǎn)是IP地址與子網(wǎng)掩碼計(jì)算。給定一個(gè)IP和一個(gè)子網(wǎng)掩碼要求計(jì)算網(wǎng)絡(luò)號(hào)、廣播地址或者判斷兩個(gè)IP是否在同一子網(wǎng)。這類題只要把二進(jìn)制換算做熟基本沒(méi)有難度。我的建議是考試時(shí)用最快的方式先把掩碼的非255部分換成二進(jìn)制然后對(duì)IP對(duì)應(yīng)位做與運(yùn)算。4. 智力題與邏輯題思路比答案重要4.1 典型邏輯題的命題原型騰訊的筆試一直喜歡放智力題2014年也不例外。這類題往往和算法沒(méi)直接關(guān)系但考察的是邏輯推理和建模能力。常見(jiàn)的有燒繩子計(jì)時(shí)、假幣找次品、倒水問(wèn)題、天平稱重以及一些概率題。我印象最深的是“1000瓶藥水中有1瓶有毒用多少只小白鼠能在24小時(shí)內(nèi)找出毒藥”這個(gè)問(wèn)題。這實(shí)際上是一個(gè)二進(jìn)制編碼問(wèn)題每只小白鼠的生死結(jié)果只有兩種狀態(tài)——活著或死亡對(duì)應(yīng)二進(jìn)制的0和1。n只小白鼠可以表示2的n次方種狀態(tài)999瓶毒藥需要至少10只小白鼠因?yàn)?的9次方是512不夠1000。解答的思路是把所有瓶子編號(hào)成二進(jìn)制再給每只小白鼠喂對(duì)應(yīng)二進(jìn)制位為1的瓶子的混合藥水最后根據(jù)死亡小鼠的組合來(lái)確定編號(hào)。這種題的考察點(diǎn)不在毒藥而在你有沒(méi)有能力把現(xiàn)實(shí)問(wèn)題抽象成信息編碼問(wèn)題。平時(shí)不接觸這類題的人考場(chǎng)上容易陷入“一只只試”的誤區(qū)而不是從信息量的角度考慮。4.2 解題策略如何在時(shí)間壓力下拆題智力題的答題策略和代碼題完全不同。代碼題有明確的演算路徑智力題的關(guān)鍵是快速識(shí)別它背后的數(shù)學(xué)模型。我的實(shí)戰(zhàn)經(jīng)驗(yàn)是三步走。第一步先判斷這是哪一類模型的問(wèn)題是編碼類、稱重類、還是概率類。第二步嘗試用最小規(guī)模的例子做模擬因?yàn)樾∫?guī)模情況比較容易找到規(guī)律比如n2、n3時(shí)結(jié)果是什么再推廣到n100。第三步在草稿紙上畫狀態(tài)圖或?qū)戇f推公式不要只用頭腦空想。這里必須強(qiáng)調(diào)一個(gè)考場(chǎng)上的應(yīng)變?cè)瓌t如果一道智力題卡了5分鐘還沒(méi)有清晰思路果斷先跳過(guò)做后面的題。因?yàn)橹橇︻}往往只有一道或者兩道分值占比并不高但會(huì)占用大量時(shí)間如果因?yàn)橐坏乐橇︻}導(dǎo)致算法題做不完就非常虧了。5. 筆試實(shí)戰(zhàn)復(fù)盤時(shí)間分配與踩坑清單5.1 120分鐘/180分鐘的答題時(shí)間策略2014年騰訊研發(fā)筆試通常給的時(shí)間是120分鐘到180分鐘??陀^題量大、知識(shí)點(diǎn)碎主觀題需要較長(zhǎng)時(shí)間推演和寫碼所以時(shí)間分配一定要提前規(guī)劃好。我當(dāng)時(shí)的策略是客觀題控制在60到70分鐘內(nèi)完成不能超過(guò)這個(gè)時(shí)間因?yàn)橹饔^題至少要留出60分鐘。具體到每一道選擇題一般要求1到2分鐘內(nèi)給出答案。如果一道題做了3分鐘還沒(méi)出來(lái)說(shuō)明這道題要么有陷阱某個(gè)知識(shí)點(diǎn)沒(méi)掌握要么是計(jì)算量特別大的題。我的做法是先在卷子上標(biāo)記一下跳過(guò)做后面的等把有把握的題全部做完再回頭處理這些標(biāo)記題。實(shí)際考下來(lái)回頭再看不一定能做對(duì)但不會(huì)因?yàn)樗揽囊坏李}導(dǎo)致后面大片題目空白。主觀題的時(shí)間分配也很有講究。第一道手寫代碼題通常是鏈表、二叉樹(shù)、或簡(jiǎn)單DP這類題在15到25分鐘內(nèi)完成比較合理。第二道算法設(shè)計(jì)題則建議留至少30分鐘因?yàn)樗枰x題、建模、推導(dǎo)復(fù)雜度、寫代碼、檢查邊界少一步都容易翻車。如果還有SQL題或系統(tǒng)設(shè)計(jì)題安排在最后10分鐘到15分鐘解決。5.2 我見(jiàn)到的常見(jiàn)失分點(diǎn)復(fù)盤2014年那次考試以及后來(lái)帶新人的經(jīng)驗(yàn)我總結(jié)出幾個(gè)高頻失分點(diǎn)給大家提個(gè)醒。第一個(gè)失分點(diǎn)是代碼題沒(méi)考慮邊界條件。比如反轉(zhuǎn)鏈表時(shí)很多人寫完了常規(guī)情況但入?yún)⑹强真湵砘蛑挥幸粋€(gè)節(jié)點(diǎn)時(shí)直接崩潰。建議寫完代碼后用至少三組輸入來(lái)測(cè)試空輸入、單元素輸入、正常規(guī)模輸入有條件還可以測(cè)一下超大輸入或溢出情況這些習(xí)慣能救回不少分。第二個(gè)失分點(diǎn)是“知道了大概思路就寫代碼”。很多人在紙上寫代碼時(shí)邏輯沒(méi)理順就開(kāi)始動(dòng)手寫一半發(fā)現(xiàn)狀態(tài)變量漏了或者循環(huán)條件反了只能涂涂改改卷面很難看。吃虧之后我養(yǎng)成了一個(gè)習(xí)慣動(dòng)筆前先用兩三行注釋把核心思路寫出來(lái)比如“用快慢指針快指針先走k步再同步前進(jìn)”然后再寫代碼。第三個(gè)失分點(diǎn)是不重視復(fù)雜度分析。筆試卷子上要求寫代碼的題目往往還會(huì)要求分析時(shí)間復(fù)雜度和空間復(fù)雜度這個(gè)分值不能白丟。不管題目有沒(méi)有明確要求都主動(dòng)寫上復(fù)雜度分析會(huì)顯得你考慮問(wèn)題更完整。當(dāng)然前提是在代碼注釋或結(jié)尾處補(bǔ)充說(shuō)明語(yǔ)言盡量簡(jiǎn)潔清晰。6. 從2014到現(xiàn)在的筆試演進(jìn)與備考建議6.1 大廠筆試風(fēng)格的變化現(xiàn)在的大廠筆試和2014年相比已經(jīng)發(fā)生了很多變化。騰訊現(xiàn)在的研發(fā)筆試更側(cè)重于算法題通常在線編程平臺(tái)進(jìn)行題型以LeetCode風(fēng)格的題目為主考察范圍從數(shù)組、鏈表、二叉樹(shù)擴(kuò)展到動(dòng)態(tài)規(guī)劃、貪心、DFS/BFS、并查集等。操作系統(tǒng)、網(wǎng)絡(luò)、C語(yǔ)法死記硬背的內(nèi)容在筆試?yán)锎蠓鶞p少轉(zhuǎn)而出現(xiàn)在面試環(huán)節(jié)的問(wèn)答里。但這并不意味著當(dāng)年的筆試卷沒(méi)有參考價(jià)值。相反2014年騰訊筆試卷恰好暴露了基本功的各種細(xì)節(jié)這些細(xì)節(jié)在今天依然有很強(qiáng)的現(xiàn)實(shí)意義。比如對(duì)指針的理解、對(duì)內(nèi)存布局的認(rèn)識(shí)、對(duì)TCP協(xié)議狀態(tài)的把握在排查線上問(wèn)題時(shí)依然用得上。筆試形式變了內(nèi)核并沒(méi)有變大廠依然在尋找基礎(chǔ)扎實(shí)、邏輯清晰、寫代碼嚴(yán)謹(jǐn)?shù)墓こ處煛?.2 給現(xiàn)役求職者的復(fù)習(xí)建議如果是準(zhǔn)備現(xiàn)在的校招或者社招我不建議直接否定老卷子。我的做法是“新舊結(jié)合”用2014年這份筆試卷來(lái)補(bǔ)基礎(chǔ)短板用LeetCode來(lái)提升代碼手感兩者并不矛盾。具體復(fù)習(xí)路徑上第一優(yōu)先級(jí)是算法題建議每天至少保持1到2道高質(zhì)量題目的訓(xùn)練量以中等難度為主輔以少量困難題。每道題都要做到能講清楚思路、能分析復(fù)雜度、能寫出無(wú)bug的代碼。第二優(yōu)先級(jí)是計(jì)算機(jī)基礎(chǔ)操作系統(tǒng)、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)這三門課過(guò)一遍核心知識(shí)點(diǎn)即可重點(diǎn)放在高頻考點(diǎn)上。第三優(yōu)先級(jí)是項(xiàng)目復(fù)盤準(zhǔn)備2到3個(gè)自己真正做過(guò)、能講清楚技術(shù)細(xì)節(jié)的項(xiàng)目因?yàn)楣P試通過(guò)后后面的面試幾乎每輪都會(huì)追問(wèn)項(xiàng)目。別忘了留出一周時(shí)間專門做模擬筆試。很多人平時(shí)刷題寫得挺好一到限定時(shí)間的在線筆試就容易慌因?yàn)椴涣?xí)慣看倒計(jì)時(shí)、對(duì)著純文本框?qū)懘a。提前用平臺(tái)模擬幾次能把這種陌生感降下來(lái)考場(chǎng)上發(fā)揮也會(huì)穩(wěn)定很多。我當(dāng)年就是因?yàn)闆](méi)提前模擬第一場(chǎng)筆試差點(diǎn)沒(méi)寫完后來(lái)學(xué)聰明了每次都會(huì)拿往年題做全真模擬。這套復(fù)習(xí)思路其實(shí)和2014年備考的核心邏輯一脈相承你要做的不是背題而是把每一個(gè)基礎(chǔ)知識(shí)點(diǎn)真正吃透。老卷子給我的最大啟發(fā)也在這里——那些看起來(lái)“偏基礎(chǔ)”的題目放到現(xiàn)在的技術(shù)環(huán)境里依然是評(píng)判一個(gè)工程師能不能走遠(yuǎn)的重要標(biāo)準(zhǔn)。