秋招大廠研發(fā)崗復(fù)習(xí)指南

今年春招補(bǔ)招與暑假實習(xí)即將開始捉捅,有簡書的粉絲私信問我校招的短期復(fù)習(xí)規(guī)劃撤防;還有些21屆的研究生想搞研發(fā),但實驗室做算法棒口,問我如何權(quán)衡寄月;又或者對秋招過程中出現(xiàn)的一些問題很迷茫辜膝,出現(xiàn)了瓶頸覺得自己無法突破...這些問題我在復(fù)習(xí)備戰(zhàn)的時候曾經(jīng)都遇到過,有一些自己的心得漾肮,在之前的文章中也有寫厂抖,只是大家可能沒有耐心仔細(xì)看。在這篇文章中最后做一次全面的匯總克懊,文中的部分內(nèi)容與之前的文章會略有重復(fù)忱辅,但也會有新的內(nèi)容需要大家好好理解消化...ψ(*`ー′)ψ

秋招分析與個人概況

首先闡述一下我的個人基本情況。本科湖北工業(yè)大學(xué)軟件工程谭溉,碩士哈爾濱工業(yè)大學(xué)計算機(jī)技術(shù)墙懂,在19年的暑假提前批中拿到了字節(jié)跳動(sp,深圳 + 今日頭條研發(fā)服務(wù)端部門)扮念、百度(北京 + Java 開發(fā)工程師)损搬、小米(北京 + Java 開發(fā)工程師)、華為(口頭15級柜与,深圳 + 通用軟件工程師)和猿輔導(dǎo)(北京 + 服務(wù)端研發(fā)工程師)的 offer巧勤。

今年,或者說最近幾年弄匕,計算機(jī)專業(yè)的校招形勢比較嚴(yán)峻颅悉。算法崗的泡沫越來越小,平均工資趨向與研發(fā)崗持平粘茄,導(dǎo)致今年算法轉(zhuǎn)研發(fā)的很多签舞,但某些大廠的算法還是一騎絕塵。前端和客戶端競爭稍小一點柒瓣,但由于今年經(jīng)濟(jì)形勢整體不太景氣儒搭,所以比之前幾年都更難找。

節(jié)選自《2019芙贫,中國互聯(lián)網(wǎng)讓人失望的一年》

我現(xiàn)在所在的實驗室是做 cv 的搂鲫,所以研一開始入門深度學(xué)習(xí)的基礎(chǔ)知識,包括看網(wǎng)課和學(xué)習(xí)配環(huán)境跑模型磺平。由于平時比較關(guān)注呕耆裕客網(wǎng)、脈脈這一類信息流中有關(guān)互聯(lián)網(wǎng)前沿的求職動向拣挪,所以對當(dāng)前的就業(yè)形勢有一個大致的預(yù)估擦酌。感覺大環(huán)境有些浮躁,搞算法菠劝,特別是機(jī)器學(xué)習(xí)赊舶、深度學(xué)習(xí),要么偏研究,發(fā)論文笼平,要么偏應(yīng)用园骆,算法落地。而且對我來說寓调,深度學(xué)習(xí)就像煉丹锌唾,各種 tricks 排列組合,然后 train 模型夺英,煉來煉去提升性能晌涕,然后發(fā)文章...可能本身科研能力也一般,所以并沒有很深的體會或者對科研抱有很高的熱情秋麸,只是覺得有時候算法落地還是挺難的渐排,很多論文的實驗復(fù)現(xiàn)后效果并不太理想。而且算法工程師首先得是一個工程師灸蟆,自認(rèn)為離一個真正的工程師還有一定的距離驯耻,于是選擇了研發(fā)這條路,繼續(xù)提高自己的 coding 能力和工程應(yīng)用能力炒考。

由于平時實驗室也沒有太多的活需要去完成可缚,導(dǎo)師也很好比較信任我,讓我可以按照自己既定的計劃去學(xué)習(xí)斋枢,一方面花早上的時間去看一些比較繁瑣費(fèi)腦的文獻(xiàn)帘靡,一方面花下午和晚上的時間復(fù)習(xí)秋招的基礎(chǔ)知識或者刷題、準(zhǔn)備面試項目瓤帚,也還算游刃有余描姚。

后端基礎(chǔ)知識

研發(fā)需要掌握的知識點很廣,作為一個應(yīng)屆生想要面面俱到不太現(xiàn)實戈次,但一定要能在面試官面前展現(xiàn)出扎實的基礎(chǔ)轩勘、對業(yè)務(wù)的理解能力和較強(qiáng)的 coding 實現(xiàn)能力,至于項目是不是高大上怯邪,他們并不會太在意绊寻。

Java 基礎(chǔ)主要包括但不限于以下內(nèi)容:

容器:

  1. ArrayList、Vector悬秉、TreeMap 的底層實現(xiàn)原理
  2. HashMap 的所有屬性和方法底層實現(xiàn)澄步、hash 的實現(xiàn)、怎樣擴(kuò)容和泌、與 HashTable 的區(qū)別
  3. ConcurrentHashMap 做了哪些改進(jìn)
  4. JDK 1.7 與 1.8 這些容器的底層有什么變化和區(qū)別村缸,有哪些改進(jìn)

并發(fā)編程:

  1. 線程的狀態(tài)和方法、線程池的參數(shù)和實現(xiàn)原理武氓、線程池的使用與注意事項
  2. synchronized 的實現(xiàn)原理
  3. Java 的鎖機(jī)制與鎖優(yōu)化
  4. volatile 的特點
  5. CAS 更新的原理與存在的不足梯皿,怎樣解決
  6. Java 內(nèi)存模型
  7. 常見的 J.U.C 工具類搪柑,原子類的底層原理
  8. ThreadLocal 原理與內(nèi)部數(shù)據(jù)結(jié)構(gòu)
  9. Lock、AQS索烹、Condition、與 synchronized 的對比

數(shù)據(jù)結(jié)構(gòu)與算法:

  1. B+ 樹的定義和應(yīng)用場景
  2. 紅黑樹的定義和特點
  3. 二叉樹的前中后序遍歷非遞歸算法
  4. 字典樹
  5. 并查集
  6. BFS + DFS
  7. 貪心算法
  8. KMP 算法

Java 虛擬機(jī):

  1. JVM 內(nèi)存結(jié)構(gòu)
  2. 垃圾回收算法與垃圾收集器
  3. 內(nèi)存分配策略
  4. 類加載機(jī)制的過程弱睦、雙親委派模型以及應(yīng)用

框架:

  1. Spring IOC 容器的初始化過程
  2. AOP 面向切面的原理
  3. Spring 中運(yùn)用了哪些設(shè)計模式
  4. SpringMVC 的工作原理
  5. MyBatis 中的 DAO 接口和 XML 中的 SQL是如何建立聯(lián)系的

MySQL:

  1. 事務(wù)的四大特性百姓、三種現(xiàn)象(臟讀、不可重復(fù)讀和幻讀)的定義以及隔離級別
  2. 版本鏈的概念以及 MVCC
  3. 數(shù)據(jù)庫引擎的格式以及內(nèi)部實現(xiàn)機(jī)制况木、不同引擎之間的對比
  4. 存儲引擎的頁結(jié)構(gòu)
  5. 數(shù)據(jù)庫索引
  6. 數(shù)據(jù)庫鎖機(jī)制
  7. 分庫分表方案

進(jìn)階知識完善(并不是必需垒拢,但面試知道這些會加分很多):

  1. 分布式相關(guān)概念:CAP、BASE 理論
  2. Zookeeper 的定義以及層次結(jié)構(gòu)火惊、集群和選舉過程求类、應(yīng)用場景
  3. Redis 的數(shù)據(jù)結(jié)構(gòu)、持久化機(jī)制屹耐、集群尸疆、選舉方式、應(yīng)用場景
  4. 如何保證 Redis 的高并發(fā)和高可用
  5. Redis 持久化的優(yōu)缺點
  6. 一致性 hash 算法
  7. 緩存穿透惶岭、雪崩和擊穿的定義和解決方案
  8. 如何保證緩存與數(shù)據(jù)庫的雙寫一致性
  9. 常見的消息隊列及作用
  10. 如何保證消息隊列的高可用
  11. 如何保證消息的冪等性和可靠性傳輸

上面的內(nèi)容大致上是按照我秋招過程中總結(jié)的思維導(dǎo)圖大綱羅列出來的寿弱,看上去雖然并不是很多,但在復(fù)習(xí)的時候按灶,會發(fā)現(xiàn)很多問題症革。當(dāng)你復(fù)習(xí) A 模塊的時候,你需要知道 B 模塊的內(nèi)容鸯旁,不同知識有區(qū)別也有相似的地方噪矛,很多知識都是串起來的,是一個體系铺罢。如果把以上內(nèi)容做到熟能生巧心中有數(shù)艇挨,面試這一環(huán)節(jié)中的所有跟基礎(chǔ)有關(guān)的問題基本上都能答出來。

適合此階段看的計算機(jī)書籍有(排名不分先后):《瘋狂 Java 講義》畏铆、《深入理解 Java 虛擬機(jī)》雷袋、《Java 編程思想》、《Java 并發(fā)編程的藝術(shù)》辞居、《Redis 的設(shè)計與實現(xiàn)》楷怒。每本書不必從頭讀到尾,當(dāng)成一個工具書或者寶典瓦灶,對一些存疑的地方可以有針對性地去查閱鸠删,當(dāng)然有些比較重點的知識(容器、并發(fā))還是按章節(jié)去讀贼陶,知識才能形成一個整體刃泡。

coding 能力

刷題這件事巧娱,需要好好重視。19年實習(xí) + 秋招我大大小小參加了十幾場筆試烘贴,一般都是2小時4-5道編程題禁添,平均半小時一道,時間還是比較緊的桨踪。而且在那種競爭壓力下老翘,難免思路上會出現(xiàn)一些障礙,因此需要平時刻苦的訓(xùn)練锻离。

很多人刷了一些題铺峭,發(fā)現(xiàn)不僅以前刷過的忘了,而且碰到新題也不會做汽纠,感覺怎么也突破不了卫键。這種情況我也遇到過,也讓我苦惱了一段時間虱朵。解決方法就是做過的題反復(fù)做莉炉。我從18年底開始刷劍指 offer 和 LeetCode,一直到19年暑假提前批卧秘,大概半年左右的時間呢袱,劍指67題 + LeetCode 接近400題 + 牛客網(wǎng)互聯(lián)網(wǎng)真題翅敌,基本都是三刷羞福,總題量有一兩千。其中 LeetCode 的題目是按照 GitHub 上的面試精選分類從頭刷到尾蚯涮,包括字符串治专、樹、圖遭顶、數(shù)學(xué)张峰、暴力、貪心和動規(guī)等方面的內(nèi)容棒旗。

第一遍基本上相當(dāng)于熟悉基本的輸入輸出和筆試的出題風(fēng)格喘批,雖然之前搞過藍(lán)橋杯和 ACM 的短期訓(xùn)練,但過了很長時間比較生疏铣揉,很多題對我而言相當(dāng)于是全新的饶深,第一次啃完這些題,時間最長逛拱,花的精力也最多敌厘。

第二遍是熟悉解題套路,比如迷宮就是 bfs/dfs朽合,top K 就是堆/排序俱两,K th 就是 partition/排序饱狂,分硬幣/找錢/最長公共子序列就是 dp 等等,畢竟是以面試為導(dǎo)向的題庫宪彩,不像 ACM 那樣技巧性很強(qiáng)休讳,很多題的公共思想都是相通的,因此基礎(chǔ)題要牢牢掌握尿孔,在真正筆試的時候很多題其實就是在這些基礎(chǔ)題上加一個背景衍腥,比如拼多多的“多多干了什么事”、騰訊的“小Q又干了什么事”纳猫,只要仔細(xì)讀題理解完背景本身,再去思考之前做過的套路中哪一個最合適就行竹捉。

第三遍是練思維能力芜辕、練手速。訓(xùn)練迅速寫好輸入輸出框架的能力块差,訓(xùn)練從題目背景中提取算法模型的能力侵续,訓(xùn)練從記憶中提取合適解題套路的能力,訓(xùn)練迅速找出邊界測試數(shù)據(jù)修復(fù)代碼中 bug 的能力憨闰。

做完這些状蜗,筆試和面試中的手撕代碼應(yīng)該沒有很大的問題。今年秋招中幾家大廠的面試手撕代碼鹉动,我都碰到了幾個與 LeetCode medium 題類似的題目轧坎,在短時間內(nèi)找出了最優(yōu)解,還算比較幸運(yùn)泽示「籽克服過程的枯燥并堅持,結(jié)果不會差械筛。

項目

我在簡歷中羅列的項目比較水捎泻,但也并不是像一些人 fork 完別人的 GitHub repository,跑通代碼埋哟,知道有哪些功能就萬事大吉笆豁。比如秒殺平臺,大多數(shù)人都會考慮如何解決超賣現(xiàn)象闯狱、Redis 實現(xiàn)緩存提升性能,但有沒有想過怎樣保證秒殺請求的可靠性砍鸠?怎樣保證消息的冪等性?如果在分布式環(huán)境下如何再優(yōu)化…這都是可以自己去思考的問題爷辱。

其實不管我們做的是什么項目朦肘,在面試官眼里都是很 low 的,那么在這個前提下双饥,如何讓對方看出你的與眾不同,這就是你需要思考的地方咏花。比如展現(xiàn)出你在項目中對業(yè)務(wù)邏輯的認(rèn)識、如何優(yōu)化使得并發(fā)量有一個提升昏翰、對項目中出現(xiàn)的 bug 是怎樣定位和解決的...這些東西作為一個沒有實習(xí)過的人來說想掌握好不太容易苍匆,我在面阿里菜鳥的時候棚菊,由于實習(xí)有掛面記錄,再加上項目的一些實戰(zhàn)經(jīng)驗不是很充足统求,所以吃了不少虧...

結(jié)語

今年的提前批比較幸運(yùn),準(zhǔn)備得比較早码邻,投簡歷也比較早折剃,及時上車像屋,可能晚一點就沒有hc了,找工作除了實力也需要運(yùn)氣己莺,更是一個持久戰(zhàn)因苹,一場戰(zhàn)斗,主要還是打法和迎難而上的勇氣篇恒。今年很多公司縮招,要是我一直猶豫不敢投簡歷胁艰,說不定就沒機(jī)會了款筑。至于打法,得益于自己平時一直都是按照經(jīng)過自己深思熟慮后的學(xué)習(xí)計劃一步步走腾么,從語法到基礎(chǔ)奈梳,再到進(jìn)階,通過一次次面試實戰(zhàn)積累經(jīng)驗解虱、總結(jié)技巧攘须,最終取得了久違的勝利。

越好的東西越值得等待殴泰,希望大家能堅持每天輸入于宙,堅持總結(jié)浮驳,堅持刷題,平常心發(fā)揮捞魁,積累經(jīng)驗至会,多拿 offer。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谱俭,一起剝皮案震驚了整個濱河市奉件,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌昆著,老刑警劉巖县貌,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異凑懂,居然都是意外死亡窃这,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門征候,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人祟敛,你說我怎么就攤上這事疤坝。” “怎么了馆铁?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵跑揉,是天一觀的道長。 經(jīng)常有香客問我埠巨,道長历谍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任辣垒,我火速辦了婚禮望侈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘勋桶。我一直安慰自己脱衙,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布例驹。 她就那樣靜靜地躺著捐韩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鹃锈。 梳的紋絲不亂的頭發(fā)上荤胁,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音屎债,去河邊找鬼仅政。 笑死垢油,一個胖子當(dāng)著我的面吹牛已旧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播运褪,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼秸讹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弧可?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤棕诵,失蹤者是張志新(化名)和其女友劉穎凿将,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牧抵,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡犀变,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蠢正。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片省店。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖有鹿,靈堂內(nèi)的尸體忽然破棺而出谎脯,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布稍味,位于F島的核電站模庐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏掂碱。R本人自食惡果不足惜慎冤,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望醉者。 院中可真熱鬧披诗,春花似錦、人聲如沸呈队。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽迈喉。三九已至,卻和暖如春孩革,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背膝蜈。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工饱搏, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人推沸。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像肺素,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子倍靡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353