背景
學(xué)習(xí)群里的清華學(xué)霸帽芽,去年這時候只有Java基礎(chǔ)删掀,后面幫他制定了學(xué)習(xí)路線開始學(xué)習(xí),并參加了春季實習(xí)导街,這次秋招收獲頗豐披泪,基本都是頂級大廠的A+/A++ offer。
個人情況
TOP 2 - 985 本碩搬瑰。本科電子系款票,碩士通信方向。實驗室里基本做的是通信的事情泽论。計算機基礎(chǔ)方面艾少,大一時學(xué)過一點 C++,更準(zhǔn)確地說是 C with classes翼悴,研究生階段學(xué)過一點機器學(xué)習(xí)缚够。
2021年的秋招中,拿到了騰訊 WXG,螞蟻金服谍椅,字節(jié)跳動误堡,美團,快手雏吭,shopee 新加坡開發(fā)崗的 offer锁施,并且基本都是SP/SSP。
崗位選擇
研一的時候就打算去互聯(lián)網(wǎng)公司做技術(shù)方面的工作思恐,并一直在開發(fā)/算法二者中糾結(jié)沾谜,畢竟當(dāng)時正是 AI 行業(yè)快速起飛的時候。在知乎上也看過許多相關(guān)的帖子胀莹,后來考慮到算法越來越卷了基跑,許多非科班的專業(yè)都可以轉(zhuǎn)到算法崗,競爭壓力大描焰。加上實驗室導(dǎo)師不放實習(xí)媳否,以及非科班很難出算法頂會文章,最后選擇了開發(fā)崗位荆秦。
事實上篱竭,在今年的秋招中,再一次印證了“選擇大于努力”這一句話步绸。我身邊選擇開發(fā)的同學(xué)掺逼,基本都有 BAT 等大廠的 offer。而算法崗位由于 hc 較少瓤介,競爭大吕喘,內(nèi)卷極其嚴(yán)重,和開發(fā)相比更難拿到大廠 offer刑桑。例如氯质,我一個室友面騰訊算法崗位面到三面,才被告知部門里沒有 hc 了祠斧。
并且闻察, AI 行業(yè)也逐年趨于冷靜,許多 AI 公司必須讓業(yè)務(wù)落地琢锋,實現(xiàn)公司盈利辕漂。其次,AI 崗位的薪資也沒前幾年瘋狂了吴超,許多大廠算法崗基本與開發(fā)崗?fù)搅伺ト取K匀绻麤]有充分競爭力的情況下,還是建議大家選擇相對容易的開發(fā)崗位烛芬,當(dāng)然大佬除外隧期。
另外飒责,在 C++/Java 二者的選擇中,我選擇了需求量更大的 Java仆潮。實際上宏蛉,在校招面試中,面試官并不會在意你的語言性置。只要選擇一種語言并且熟練掌握即可拾并。正式工作中需要什么語言,入職后再進行學(xué)習(xí)即可鹏浅。
學(xué)習(xí)路線
在確定下來走開發(fā)崗位后嗅义,我參考了許多過來人的學(xué)習(xí)經(jīng)驗,從 Java 基礎(chǔ)學(xué)起隐砸,接著是 Java 并發(fā)之碗,JVM,MySQL季希,Redis褪那, 最后是 Java 后端生態(tài)常用的框架,例如 Spring式塌,Zookeeper博敬,SpringBoot 等等。
另外峰尝,計算機網(wǎng)絡(luò)偏窝,操作系統(tǒng)和數(shù)據(jù)結(jié)構(gòu)與算法也是面試中必考的知識點,需要花功夫去學(xué)習(xí)武学。尤其是算法方面祭往,面試的時候都會有在線網(wǎng)頁編寫代碼題的考核,并且會占據(jù)面試半數(shù)以上的時間劳淆,需要著重準(zhǔn)備。
算法學(xué)習(xí)上默赂,簡單翻翻《算法(第四版)》后沛鸵,可以刷幾遍《劍指 offer》,這時基本可以應(yīng)付小廠的面試題了缆八。另外再建議刷完左程云的《程序員代碼面試指南:IT 名企算法與數(shù)據(jù)結(jié)構(gòu)題目最優(yōu)解(第二版)》曲掰,這時大廠的面試算法題基本毫無壓力了,筆試也基本能通過了奈辰。如果還有空余時間栏妖,可以看看 GitHub 上前人總結(jié)的 Leetcode 分類習(xí)題,我參考的是https://github.com/dingjikerbo/Leetcode-Java 奖恰。這個 repo 總結(jié)得特別全面吊趾,刷完后算法的考核就不再會是面試的難點了宛裕。
面試準(zhǔn)備
面試時,除了算法題的考核是硬功夫外论泛,80% 以上的知識點都是晨考的,也就是大家所說的”八股文“屁奏。面試前岩榆,可以去牛客網(wǎng)上看看相應(yīng)公司的面經(jīng)坟瓢,或者別人總結(jié)成冊的面經(jīng) pdf 版本勇边。我反復(fù)看了幾遍 https://github.com/jianghui-galaxy/Interview-Notebook 和峰哥給的 Java 面經(jīng)后,對常見“八股文”爛熟于心折联,基礎(chǔ)知識的問答基本就穩(wěn)了粒褒。
另外,簡歷上有項目的話崭庸,也會是一個加分項怀浆。面試官會對簡歷上所寫的項目進行詳細(xì)的詢問,所以簡歷上的每一句話都不要亂寫怕享,尤其是自己一知半解的東西就不要寫到簡歷上了执赡。
但要注意的是,要精煉地在簡歷上指出項目的主要亮點函筋,如果是實習(xí)期間做的項目的話還可以標(biāo)明項目收益(例如服務(wù)延時減小沙合,ROI 提升,并發(fā)量增大等等)等等跌帐。
如果沒有實習(xí)經(jīng)歷的話首懈,也可以參考網(wǎng)上的許多項目教程/視頻,自己也做一個谨敛,摸清楚項目里主要的難點后究履,寫在簡歷上。在這里感謝峰哥對我項目進行把關(guān)脸狸!
春招歷程
下面總結(jié)下我春招的歷程最仑。
字節(jié)跳動
一面
算法題:二叉樹深度(遞歸+非遞歸兩種方法)、買賣股票的最佳時機
項目提問
二面
算法題:環(huán)形鏈表炊甲、手寫快排
項目提問
TCP 三次握手泥彤、內(nèi)存分頁分段機制、數(shù)據(jù)庫索引卿啡、Java 內(nèi)存管理
三面
算法題:子集
設(shè)計題:短鏈接網(wǎng)址設(shè)計
螞蟻金服
由于螞蟻金服筆試 A 了1.9道(一共兩道)吟吝,所以一二面沒有做算法題。另外螞蟻是電話面試颈娜,在家里吃火鍋的時候突然一個電話打來剑逃,后來屁顛屁顛收拾了下就去面試了浙宜。
一面
項目提問
常見八股文
二面
實驗室工作、文章提問
沒有問一點 Java 相關(guān)的內(nèi)容炕贵,可能是一面答得比較好
三面(交叉面)
算法題:二叉樹的右視圖
阿里的交叉面應(yīng)該就是評級 A 必須要走的流程梆奈,面試官面得比較水。主要還是問了問實驗室做的事情称开。然后出了道算法題亩钟,讓我口述下思路。思路沒問題后,讓我面試完后寫一下然后發(fā)給他
騰訊
本來實習(xí)投的是 WXG,后來 WXG 打電話過來問我愿不愿意去廣州實習(xí)媳友,實在是太遠(yuǎn)了就拒絕了乱陡。后來簡歷就被 PCG 老了,面試官說主要做騰訊體育。感覺部門比較一般,一、二面通過后拒絕了后續(xù)的面試辱志,準(zhǔn)備秋招再戰(zhàn) WXG。騰訊的面試也很硬核狞膘,每次面試官都是直接打開 IDE 寫題揩懒,并且面試 90% 時間都是寫算法題…
一面
算法題: 字符串轉(zhuǎn)整數(shù)、旋轉(zhuǎn)矩陣挽封、翻轉(zhuǎn)二叉樹已球、手寫快排
二面
算法題:編輯距離、 最長不含重復(fù)字符的子字符串辅愿、rand5 實現(xiàn) rand7
三面打電話約時間的時候就直接拒了
美團
美團也是提前做過筆試智亮,所以面試時沒考算法題
一面
很深入的問了 Java 語言相關(guān)特性,包括反射實現(xiàn)原理点待,Java的 @ 注解等等
由于項目上提到了分布式鎖阔蛉,和面試官深入討論了下分布式鎖…值得提的一點是,我簡歷上寫的用分布式鎖來防止緩存擊穿癞埠,并且在面試前看到過許多相關(guān)的技術(shù)文章状原。但面試官說不能,我當(dāng)時很懵逼燕差,知道面試官說錯了遭笋,但沒有和面試官去爭論坝冕,而是說“我面試結(jié)束后再了解下吧”徒探,就逐漸淡出了這個話題,并轉(zhuǎn)移到新的討論點上喂窟。
二面
面試官又全程沒問 Java 相關(guān)的東西测暗,一直在問實驗室的工作央串。聊著聊著發(fā)現(xiàn)面試官也是通信出生,華為干了幾年后到了美團碗啄。接著我們聊到股票又聊了很久…
美團技術(shù)只有二面质和,而且 hr 面后意向書拖得特別久…我主動問了一面面試官后,當(dāng)天晚上 hr 就打電話和我溝通了稚字。
快手
一面
算法題:一道典型的 dfs饲宿,鏈表相交問題(見左程云那本書)
普通八股文
二面
算法題:合并K個升序鏈表、滑雪場(dfs)
三面
問實驗室的工作…
春招只面了上面幾家公司胆描,之后選擇了在字節(jié)跳動實習(xí)瘫想。
秋招歷程
字節(jié)跳動
轉(zhuǎn)正答辯
簡單匯報了一下實習(xí)做的工作,后來評級比較好昌讲,加面了一輪
轉(zhuǎn)正加面
設(shè)計題:具體場景有點麻煩国夜,主要的問題是根據(jù)已知的概率分布每次隨機選擇一個/多個數(shù)。解決思路是在區(qū)間 [0短绸,1) 上车吹,根據(jù)已知的概率分布確定每個點的位置,每次在 [0,1) 中隨機出一個數(shù)醋闭,看這個數(shù)在哪兩個點之間即可窄驹。
寫了一道簡單的 SQL 語句。
螞蟻金服
由于春招通過目尖,拿到了秋招終面直通車馒吴,只有一輪面試。主要介紹了之前在字節(jié)跳動的實習(xí)工作瑟曲。
騰訊 WXG
一共三輪面試饮戳,都非常硬核,每輪基本都兩小時洞拨。
部門一面
直接發(fā)了三道 Leetcode 鏈接扯罐。一道 easy,一道 medium烦衣,一道 hard歹河。
詳細(xì)地問了 TCP、分頁分段花吟、Linux秸歧、一致性哈希、cookie/session衅澈、MySQL键菱、Redis 等內(nèi)容,每個知識點問得特別深入今布,問到直到不會為止经备。拭抬。。感覺是秋招最難的一場面試侵蒙,面完后仍然心有余悸…面試結(jié)束后面試官直接通知我通過了一面造虎,進入面委會面試環(huán)節(jié),并提醒我做好算法題的準(zhǔn)備纷闺。
面委一面
第一題:有序數(shù)組用最快的方法找到重復(fù)數(shù)>1000的數(shù)字序列算凿,直接秒
第二題:字符串通配符匹配的填空題。開始有點蛋疼犁功,最后想了半天才才寫出來
第三題:逆序?qū)ε烀剑苯用?br>
第四題:翻轉(zhuǎn)鏈表,直接秒
第五題:一道偏物理的題目波桩。大概題意是一段路程分成平路和電梯兩段戒努,你可以跑 t 秒。問你在電梯上跑劃算還是平路上跑劃算
一來直接丟給我一份騰訊文檔的鏈接镐躲,說他一個小時后再連上來储玫。一共有5道題,最后都做出來了萤皂。
面試官過完試卷后沒啥問題撒穷,再問了問分頁分段、數(shù)據(jù)庫索引裆熙、Redis 的一些簡單問題端礼。
面委二面
也是直接打開 IDE 寫題
第一題:設(shè)計一個概率分布為 0.1,0.2入录,0.3蛤奥,0.4 的算法。類似于字節(jié)加面題僚稿,由于之前面試中碰到過凡桥,直接秒殺。然后面試官問改成每次可以有放回地選兩個數(shù)呢蚀同?在原代碼上稍加修改就行了缅刽。為了驗證代碼的正確性,我還打出了概率分布表蠢络,符合預(yù)期衰猛。
第二題:類似荷蘭國旗問題,直接秒
美團/快手
和實習(xí)面的內(nèi)容基本一致刹孔,不再詳述
Shopee 新加坡
一面
算法題:Implement a data structure to support two functions add()/search() efficiently
直接使用 Trie 樹啡省,search() 函數(shù)給了個 case 是有通配符‘*’的,所以 search 函數(shù)編寫的時候?qū)憘€ dfs 就 ok 了
設(shè)計題:設(shè)計一個圖書館借書系統(tǒng)。
主要問的是數(shù)據(jù)庫表和 Java 類的設(shè)計冕杠,首先想了下有什么需求,再根據(jù)需求設(shè)計表即可
設(shè)計題:登錄系統(tǒng)設(shè)計
主要說了 cookie/token 方式識別用戶酸茴,密碼 hash 并加鹽后存儲等等
二面
算法題:Given a string, find out the length of the longest substring which contains at most two distinct characters
滑動窗口 + HashMap 直接秒分预,然后面試官問不用 HashMap 怎么做?改寫原代碼 + debug 后通過
算法題:一個鏈表薪捍,先打印順序奇數(shù)位笼痹,再逆序打印偶數(shù)位
直接秒殺。先順序打印奇數(shù)位酪穿。用遞歸棧存儲每個偶數(shù)位凳干,遞歸回來后再打印該位置即可。
三面
簡單問了問技術(shù)后被济,面試官介紹了他們的部門救赐,主要是在聊天。
秋招總結(jié)
1.重視算法:可以看到只磷,大部分公司校招面試都強調(diào)算法題的考核经磅,并且考核的基本都是常見題型。所以在算法上钮追,需要下狠功夫進行準(zhǔn)備预厌。另外,還需要對邊界條件的處理予以重視元媚。我前后把《劍指offer》刷了三遍轧叽,左程云的那本書看了兩遍,Leetcode 上也做了 400+ 道題刊棕。
2.基礎(chǔ)知識:80% 的面試知識點都是常見“八股文”炭晒,面試前找一份相應(yīng)的總結(jié)資料,并理解通透即可甥角。
3.盡量找人內(nèi)推:有一些公司內(nèi)推可以免除筆試考核腰埂,直接進入面試環(huán)節(jié),并且可以直接內(nèi)推到你所感興趣的部門主管手上蜈膨。如果沒有認(rèn)識師兄師姐屿笼,可以在學(xué)校 bbs,盼涛。客網(wǎng)等平臺上進行內(nèi)推信息的查詢驴一。
4.春招很重要!春招很重要灶壶!春招很重要肝断!有一些公司(例如阿里巴巴)在你春招通過后,可以拿到秋招綠色直通車,秋招直接參加終面胸懈。并且担扑,春招面試難度往往低于秋招。另外趣钱,春招可以及時讓你查漏補缺涌献,為秋招做好準(zhǔn)備。所以不論導(dǎo)師放不放實習(xí)首有,都建議投遞下春招參加面試燕垃。
5.寫完算法題后,一定要自己寫幾個測試用例自測一下井联!如果有錯誤可以及時發(fā)現(xiàn)卜壕,沒錯誤的話也可以給面試官留下良好印象。
6.秋招一定要盡早投遞烙常,不要等到“完全準(zhǔn)備好”后再去投遞轴捎。一是因為某些崗位 hc 少,越早投遞越容易占坑蚕脏。二是面試永遠(yuǎn)不存在所謂“完全準(zhǔn)備好”的狀態(tài)轮蜕,要對自己有信心。
7.面試中一定要與面試官進行溝通蝗锥,不要一個人一直埋著頭寫代碼跃洛。如果你溝通能力不佳,也會被面試官拒掉终议。
如果大家對文章有疑問或需要交流的汇竭,可以私信或留言哈~