2019年互聯(lián)網(wǎng)秋招已經(jīng)接近尾聲,個(gè)人情況:中等985小碩一枚,經(jīng)過一段時(shí)間的準(zhǔn)備,勉強(qiáng)拿到了還算理想的offer。特此整理下過程中的一些感悟,不涉及面試題目,有一些資料和想法分享給大家。祝大家都有美好的前途。
先上資料吧,這是我各處搜集的 pdf 版的書籍等(過程曲折而艱辛,有些還是付費(fèi)的,個(gè)人習(xí)慣在 pdf 上做筆記什么的,比紙質(zhì)版方便),是秋招準(zhǔn)備過程中的主要資源,在這里分享給大家:
-> http://uee.me/a2NQV
準(zhǔn)備階段
工欲善其事必先利其器。
春招時(shí)候盡管實(shí)驗(yàn)室原則上不允許外出實(shí)習(xí),還是嘗試投了幾家大廠,BAT等??墒谴汗?jié)回來沒多久就開始春招的提前批面試了,都還沒怎么準(zhǔn)備,結(jié)果可想而知,掛得很慘。
痛定思痛,去操場跑了個(gè)痛快,然后躺著想該怎么辦。后面大致準(zhǔn)備了個(gè)計(jì)劃,包括復(fù)習(xí)各模塊的內(nèi)容、刷題兩個(gè)部分。
首先,復(fù)習(xí)基礎(chǔ)內(nèi)容,內(nèi)容涉及這幾個(gè)大的模塊:OS、網(wǎng)絡(luò)、數(shù)據(jù)結(jié)構(gòu)/算法、數(shù)據(jù)庫,這幾部分內(nèi)容是最為關(guān)鍵的,去牛客網(wǎng)上隨便看一篇面經(jīng),基本都是這幾塊內(nèi)容,先系統(tǒng)性地過各模塊的經(jīng)典書,像 OS 的 APUE、TLPI、LKD 等,網(wǎng)絡(luò)的 TCP/IP、UNP 等,數(shù)據(jù)結(jié)構(gòu)/算法的 Algorithms(普林斯頓那本紅色經(jīng)典)、Introduction to Algorithms,數(shù)據(jù)庫的話,只看 MySQL 相關(guān)的就差不多了,像 MySQL 技術(shù)內(nèi)幕-InnoDB 存儲(chǔ)引擎、數(shù)據(jù)庫索引設(shè)計(jì)與優(yōu)化等,這些書都是非常經(jīng)典的,就面試經(jīng)歷來看,無出其右,當(dāng)然不能全看——也看不完,挑重要章節(jié)看(后面說關(guān)于“重要章節(jié)”)。
其次,語言方面,由于我個(gè)人是認(rèn)同“語言不應(yīng)該成為科班程序員的障礙”的,所以我個(gè)人是 Java、C++ 為主(都不算特別深入,但都能聊那種,這恐怕就是我阿里掛掉的原因:不夠深入),也用一點(diǎn)python。如果你也熟悉一些前端的東西,那再好不過了。這方面,書就很多,推薦也老套,不說也罷,每種語言的經(jīng)典書,選 top2 個(gè)人覺得足矣,多了沒用。所有的書,能直接讀英文版最好,不能的話,也最好備有英文版,因?yàn)榕紶枙?huì)遇到翻譯問題,搞不懂,反而對(duì)比原版就豁然開朗(親身體會(huì))。
再就是刷題了,我英文一般,所以就選了 LintCode,很多題目都是從 LeetCode 上翻譯搬過來的,個(gè)人覺得足夠了,目前刷了 200 多道,中等難度為主,簡單題可以嘗試直接在頁面上寫(我是 IDE 重度用戶,不習(xí)慣手撕代碼,所以在??途W(wǎng)做筆試時(shí)候就不太習(xí)慣,如果不給跳轉(zhuǎn)本地 IDE 的話,基本寫不下去),偶爾來一道難一點(diǎn)的題目,體驗(yàn)一把絞盡腦汁的感覺。個(gè)人覺得,刷題,分類刷比較好,LintCode 上題目本來就有 tag,可以按照不同類型過濾,挺方便的。再就是堅(jiān)持,比如我是每天至少一道題,白天時(shí)間不允許,就晚上定時(shí)抽出一定時(shí)間,專門刷題,有同學(xué)一起更好。
按計(jì)劃行事
no pains, no gains
備好以上的資料之后,就開始了秋招準(zhǔn)備。有的人厲害,隨便刷刷題翻翻書就能拿到心儀的 offer,而自認(rèn)為比較笨拙,所以就盡可能多花些時(shí)間嘍。
看書方面,容易找不到重點(diǎn),這是我看了 OS 模塊之后的看法。于是改變策略:去牛客網(wǎng)翻面經(jīng),以 OS 模塊為例,看面經(jīng)只看和它相關(guān)的題目,記錄一下涉及的知識(shí)點(diǎn)(進(jìn)程/線程、epoll/poll/select、IPC 等),總結(jié)下來常見的問題也就這么多,然后逐個(gè)知識(shí)點(diǎn)去翻書翻博客,進(jìn)行系統(tǒng)地整理,同時(shí)作好筆記如涉及到的書目章節(jié)/比較好的博客鏈接,以及常見題目和常規(guī)回答。這里推薦用 markdown 寫筆記,然后生成博客或者頁面都行,很方便。感覺 OS 這一模塊看得差不多了,就再找些面經(jīng)里相關(guān)的問題,看能否比較順暢地給出思路和解答,遇到仍不清晰的問題,就再反復(fù)前面的過程,繼續(xù)翻書記錄。其他模塊內(nèi)容也類似,包括數(shù)據(jù)結(jié)構(gòu),更要好好理解,比如常見排序的時(shí)間/空間復(fù)雜度,要從算法的角度理解并牢記,手撕代碼也是必要的。
刷題方面,這個(gè)沒啥,前面說得差不多了。堅(jiān)持刷,效果還是非常明顯的,并且過程中自己就會(huì)總結(jié)一些適合個(gè)人的方式方法,正所謂實(shí)踐出真知嘛。
以上都是知易行難,這其實(shí)是大多數(shù)“計(jì)劃”難以被執(zhí)行的癥結(jié)。我的做法就比較極端:抽出很多實(shí)驗(yàn)室常規(guī)時(shí)間(本屬于看論文搞科研的時(shí)間),用來看書總結(jié)知識(shí)點(diǎn);晚上固定時(shí)間段看一個(gè)面經(jīng)題目并查看相關(guān)書籍博客、整理相關(guān)答案;然后刷至少一道題,規(guī)定時(shí)間做不出來就搜答案,把別人的思路理清楚,復(fù)現(xiàn)一遍,做好記錄。done.
當(dāng)然以上是個(gè)人做法,因人而異,找到適合自己的并堅(jiān)持執(zhí)行才是關(guān)鍵。
結(jié)語
不要焦慮,不要制造焦慮。
這是秋招期間,給自己的忠告。
祝大家都能拿到理想的 offer _