首先,強(qiáng)烈建議采用“題海戰(zhàn)術(shù)”。我當(dāng)然不會(huì)告訴題主,今年面了數(shù)十家公司,90%的題目是原題(沒(méi)辦法,就那幾個(gè)知識(shí)點(diǎn),能有什么新題)
題庫(kù)在哪里呢?按照循序漸進(jìn)的原則,一一介紹:
1. cc150,全名cracking the coding interview - 150 Programming Questions and Solutions。經(jīng)典中的經(jīng)典,曾有人別的啥都不做,刷這本書(shū)三四遍,拿了Google的offer(注意是在美國(guó),在中國(guó)就算了……)這本書(shū)的優(yōu)勢(shì)在于分章節(jié),每章突出一塊知識(shí),題目精煉,答案好找;缺點(diǎn)呢,你寫(xiě)出的代碼,需要深度檢驗(yàn),而cc150是書(shū)不是online judge,這個(gè)還是做不到。
2. leetcode。程序員刷面試題的第一網(wǎng)站,題多且全,少部分題目收費(fèi)。刷的人很多,答案非常好找。online judge能深度檢驗(yàn)代碼的正確性,刷leetcode是最能鍛煉算法題能力的。假如說(shuō)時(shí)間有限只能刷一個(gè),那必須是leetcode,假如時(shí)間夠多……lintcode、meetqun等各大面試題OJ歡迎你,此外還有許多國(guó)內(nèi)外大學(xué)的OJ。
以上是兩大主力,但是光這兩個(gè),還不能到“題海”的水平,而且由于它們名氣太響,有些公司有時(shí)會(huì)避開(kāi)里面的題目……來(lái),我們繼續(xù)找題目。
3. 編程之美、劍指offer:就當(dāng)成兩本習(xí)題集好了,里面有些題目和1、2重復(fù),但是大部分題目還是很優(yōu)秀很巧妙的。重點(diǎn)是交叉對(duì)比,你就知道哪些是經(jīng)典題目了。
4. careercup、看準(zhǔn)網(wǎng)等:每家公司都有自己喜歡出的題目,這些網(wǎng)站方便你去找面經(jīng),緊跟公司出題潮流。
5. “結(jié)構(gòu)之法”博客:July大神的博客,內(nèi)容豐富,學(xué)習(xí)一年都可以。這里只講里面的算法題:“微軟面試100題”(實(shí)際上已經(jīng)快500題了)系列,堪稱(chēng)算法題的大寶庫(kù),包羅萬(wàn)象,而且很多題目很新,是面試官喜歡出的類(lèi)型……不過(guò)這個(gè)系列的排版略微混亂,很多題也沒(méi)有答案;“程序員編程藝術(shù)”系列,講的很細(xì)致,適合深入去學(xué)習(xí)一些算法;“教你如何迅速秒殺掉:99%的海量數(shù)據(jù)處理面試題”,很實(shí)用的海量數(shù)據(jù)處理面試文章。
6. 經(jīng)典庫(kù)函數(shù)。這塊單獨(dú)拉出來(lái),是因?yàn)榭嫉暮芏啵热鏰toi,strstr,memcpy等等……在“程序員編程藝術(shù)”中,雜七雜八有相關(guān)的論述,最好自己系統(tǒng)整理一下。
~~~~~~~~~~~
好,這些足夠我們的題海了。下面來(lái)講一下,哪些屬于題海中的重點(diǎn)。
1. 最高優(yōu)先級(jí):面經(jīng)。這個(gè)比什么都重要,為了節(jié)約招聘成本,同一家公司的題目,通常不會(huì)換的太勤快。
2. 次優(yōu)先級(jí):很經(jīng)典的題目。什么定義為經(jīng)典?前面我寫(xiě)了123456,假如某道題目能重復(fù)出現(xiàn)幾次,那絕對(duì)是不朽經(jīng)典(如atoi、LCS、LPS、單鏈表逆置……),經(jīng)典的題目畢竟出的最多,一定要非常熟練。
3. 再次:稍微短一點(diǎn)(50行之內(nèi)),稍微新一點(diǎn)的題目。面試官通常時(shí)間有限,沒(méi)時(shí)間讓你寫(xiě)個(gè)上百行,所以50行左右是最好的。
4. 最末:答案很長(zhǎng)的題目。這種題目一般不出,要是出出來(lái),一般就是壓軸大戲,為了最后檢測(cè)……通常長(zhǎng)題目容易亂,分模塊慢慢寫(xiě),不著急。
光在IDE上敲是不夠的,還要練習(xí)多在紙上寫(xiě)。
做多了,就會(huì)感覺(jué)這些題目都一樣……無(wú)非dp、二分、排序、遞歸……無(wú)非開(kāi)數(shù)組、調(diào)函數(shù)、用stl……然后題主就會(huì)悟出算法題只是公司招聘沒(méi)辦法的選擇,因?yàn)槊鎓resh grad也沒(méi)啥別的方法了,這個(gè)方法最簡(jiǎn)單粗暴高效。然而實(shí)際工作中,重要的還是項(xiàng)目能力。能悟出這個(gè)道理,題主就該修成正果了。