讀者上岸百度經驗分享(上)

JavaGuide發表於2020-12-01

讀者準備面試的時間是 3 個月左右。但是,不是僅僅用 3 個月就能上岸大廠,之前也有計算機基礎(網路、資料結構、作業系統、資料庫、計組、微機原理等)。

前段時間,賈哥在星球向我詢問 offer 選擇的問題,我才知道賈哥已經斬獲兩個還不錯的 offer。

賈哥和我一樣都是雙非本科,學歷上面我們和大部分一樣都沒有任何優勢。他的校招經歷挺波折的,非常有參考價值。

於是,我就找到賈哥讓他寫一篇文章分享一下自己秋招的一些準備面試的經歷以及經驗。

賈哥寫的太用心了,整篇文章大概有 1w+字。我將分為兩次來發。覺得內容不錯的話,大家記得點贊催更。

希望賈哥的分享對小夥伴們有幫助!

01

秋招這一路跌跌撞撞的走來,經歷了很多心酸,也成長了很多。

從信心滿滿的開始,到不斷地自我懷疑。從一個一無所知的菜雞,到現在還是一個菜鳥。

我或許沒有很多成功的逆襲經驗來分享給大家。但是!我從一個秋招的裸奔男孩到理想上岸,收穫的更多是失敗的經驗、成長的閱歷和人生的考驗吧!

我對計算機並沒有激情滿滿的熱愛,更多的是隨著投入的時間和學習而產生的興趣吧!

我是一個普通的不能在普通的大學生:雙非本科,沒有任何實習經歷、比賽經歷。

作為一個計算機學子,我大一大二幾乎不知道自己將來會選擇程式設計開發……

聽過很多秋招大佬的傳奇逆襲經歷,嚮往他們將熱愛都投身到刷力扣的成就感中,羨慕他們在秋招時斬獲大把 Offer。

社會遵循著 2-8 原則,我或許應該被歸到 8 這一類當中。我有時在不斷問自己,你真的適合開發這一行嗎?你會在這條路上走多遠呀?評估自己的實力與大佬們的差距,可能就是我學習的動力吧!

作為一個被秋招毒打的打工人,我想和大家分享我的經歷!

02

帶著高考的些許遺憾,我來到了我的母校,西安某不知名雙非一本,專業為數字媒體技術。

這個專業雖然歸類在計算機學院下,但是我們的課程方向是遊戲動畫,影視建模方向。

導致每次面試官問我專業,我都要解釋一遍,我是計算機專業的,計算機的公共基礎課(資料結構、計算機網路等)我們都會學。

我們的就業方向貌似更加偏向新媒體方向,雖然程式設計知識也會學,甚至還學了那本西瓜書的《機器學習》。

大學前兩年,自己就是一種渾渾噩噩的狀態。我沒有很明確的目標和方向,每天都是在宿舍-食堂-教室,上好該上的課。

曾經想拿個綜測的專業第一,但是好像光靠成績還是不夠的,後來標準降到了考試盡力考個高分就行。

對於學習資料結構、作業系統等等計算機專業課程,我有一個深深的感觸:考試分數高不代表你真的“學會了” 。

這些基礎課程,我基本都是上課認真聽聽,考前複習半個月,拿個不錯的分數過了,感覺任務就完成了。

現在熬夜補這些知識的時候,眼裡都是悔恨的淚水呀 ?。

大三,才意識到自己馬上要畢業了,考慮了一個月,放棄考研的打算。我想了很久很久,感覺還是做一個打工人吧!

C/C++中的指標讓我頭暈眼花,於是我選擇了 Java。

2019 年 10 月,開始了自己在大學裡,真正有目標,有動力的去學習!

在一個失眠焦慮的夜晚,我寫下這段話來激勵自己:

今年在綜測時,拿到了專業第一,可以申請保研(我校保研一般只能保本校)。也動搖過,秋招真的太難了,要不就放棄吧。但是想到自己大三時立下的雄心壯志,既然選擇了這條路,就一抹黑的走下去吧,秋招不上岸,春招還能搏一把;這條路實在走不通,那我就考研!

然後,我就開始在 B 站、慕課網、油管、MOOC 上找 Java 的視訊學習。

從 JavaSE、JavaWeb、框架的學習。2020 年 2 月份,似乎感覺,把這些內容都過了一遍。

期間一邊看網課、部落格文章、Guide 哥的專欄總結,一邊寫部落格加深理解。寒假租了房,每天按部就班的輸入,過年前幾天才回家。過年那天晚上,都是一邊看春晚,一邊在複習。

03

到 3 月份,認識的幾個同學開始投滴滴、百度的實習,我才開始寫簡歷,到牛客看面經,也準備投實習。但是,看到面經的各種提問,我感覺自己像沒學一樣,全都是知識盲區。

瞭解的東西不夠深入,到不了面試那種深層次提問,還有資料結構、網路、作業系統這些都沒怎麼複習。自己學過的這些課,腦海裡僅僅殘留著一點點印象。

更關鍵的是,我簡歷寫完了技能列表,專案實在沒得可寫。面對空白乏力的簡歷,我感覺自己還有好多好多知識要補,完全就是在精衛填海。

本來打算過完年早早去出租屋裡學習,年前就定了正月除六的車票打算趕過去。但是,突如其來的疫情,只能讓我待在家裡,打亂了我安排好的學習計劃。

每天,面對面經上滿滿的知識盲區,自己在家裡的效率又比較低,開學又遙遙無期,學習計劃一拖再拖。

同時,我的兩位夥伴在 5 月都去到了北京實習,我還在家裡天天感覺無所事事。

找實習已經是不可能了,只能直接秋招了。然而,專案經歷還是空白,做過的課設專案含金量低,單純的管理系統實在不想往簡歷上去寫。

對比朋友每天大廠的實習日常,再看看自己的狼狽不堪。每天,整個人都有著巨大的心裡壓力和焦慮。學校線上的網課都是在後臺靜音放著,天天跑到教育廳下詢問開學時間,“又是不開學的一天!哎,到底什麼以後才能去學校呀!”。

那段時間,真的過得非常壓抑,每天都是忐忑不安、內心焦躁。自己彷彿在一條漆黑的路上跌跌撞撞的走著,這條路沒有光亮,沒有盡頭。

後來,心態漸漸放平,全國都在眾志成城的抗擊疫情,大家都在努力著。換個角度想想,自己最大的財富,不就是擁有健康嗎?

為了趕上既定的任務安排,我只能每天早早起來學習,雖然中途可能被一些其他事情打斷,但是用時間來彌補效率,一直複習到深夜。有時莫名感覺,自己 20 多年來,第一次真正的這麼努力。

2020 年 6 月,我不顧我媽的勸阻,來到了西安,和好基友小賢租了間房。他也沒有找到實習,我們都是共赴秋招的裸奔男孩,兩個人開始做秋招的最後衝刺!

04

來到西安後,我便開始集中精力複習基礎知識:

  • 把多執行緒、集合類相關的知識重頭複習了一遍,專門針對這一塊的面試提問看了很多文章;
  • 在 B 站刷了兩遍宋紅康老師講的《JVM 從入門到精通》,真的良心推薦 ?,零零散散看了下《深入理解 Java 虛擬機器》這本聖經;
  • 複習了一遍計算機網路,主要是針對 TCP-IP 體系結構、HTTP 協議,看著面經來複習知識點
  • 資料庫只做了簡單複習,基本的 SQL 能寫出來,牛客做了些題

眼看秋招提前批已到來,而且沒有筆試,對我來說是個莫大的機會。但是,由於自己專案還沒整理,沒有可寫的內容到簡歷上。所以只能任之溜走了。

這是對 Guide 哥之前的一次提問,讓我很清楚自己接下來的兩個月該做什麼!

05

7 月份的時候,自己的專案經歷還是空白,導致簡歷一直沒法完善。

於是我開始著手開始準備專案。順帶著晚上刷題。

學校稍微有代表性的一點就是老師指導我們組做了個國家級的大創專案,但是我負責前端相關的內容。課設都是很基礎的類似新聞管理系統、學生管理系統,還有 Unity 做的兩個遊戲 Demo,實在沒法往簡歷上寫。自己學習的方向是後端,只能找有代表性的專案來做!

Github Star 了些 Java 相關的專案,但當我拉下程式碼匯入,發現自己搞不懂有些地方為什麼要這樣寫,專案的架構是怎麼設計的?關鍵的技術點在哪裡?可能出現什麼問題?如何去改善?

因為這些問題搞不懂,吃不透,雖然簡歷上寫的是你的專案,但面試官一問就被問住了,所以終究還是不屬於你。

由於自己底子薄,框架探究沒那麼深入,自己雖然學了 SSM、SpringBoot 這些框架,但是也只是能簡單上手使用下。當下也沒時間來深入探究底層原理學習,只能停留在簡單瞭解和使用上。開源專案我可能沒法吃透,我需要找個視訊教程跟著做,然後基於自己理解再做擴充。

我把 B 站所有有關 Java 的專案都找了一遍,搜尋不同的關鍵字足足過了三遍進行篩選統計。我發現專案大體可以分為兩大類:

  • 【原理性】:就是造輪子,對已有框架或者協議自己來做個實現;如 Guide 哥的 RPC 框架和 HTTP 的輕量級框架,其他的如實現 Tomcat 功能、效能基準測試框架、實現網路協議等
  • 【功能性】:專案實現具體的業務功能;如各種許可權管理系統、部落格系統、商城、管理系統等。形式有前後端分離的,有基於微信小程式的後臺的、還有客戶端的

篩選了大概一週,我找到了適合自己的專案。一個是基於自己之前練手的 Demo,跟著視訊學習自己做了擴充,一個是前後端分離的專案。

專案沒必要功能業務多麼複雜,涉及的技術棧有多廣,但是一定能夠自己吃透,原理性、結構性的層面自己搞懂,還有一定要有亮點!

因為面試官想聽的不是你做了什麼,而是怎麼去做的。就我而言,更多的是考察你發現問題、分析問題、解決問題的能力。即便專案本身簡單,但是一些特殊情況要考慮到,為什麼這麼設計?出現問題了怎麼改進?如何去完善?其他技術方式怎麼實現?

在百度三面主管面時,全程都在問專案,大概問了 50min 之久。雖然我覺得準備時自己考慮的很周到了,但是畢竟沒參加工作,很多問題根本不知道:

因為基於 WebSocket 協議做的聊天室,本身是應用層的協議,直接就用 TCP 來保證訊息可靠傳輸,如果訪問量大,為了高效可以改用 UDP。這個專案準備的重心沒有放在網路層面,而是考慮到多執行緒下併發聊天,會存線上程安全的問題,準備了很多多執行緒相關的針對專案的改善、應對策略,訊息儲存傳送。

但是面試官全程都在針對網路層面做擴充,我只能根據已有的知識和對自己專案的擴充瞭解做回答。面試結束,我感覺自己被按在地上摩擦,又限了入了深深的自我懷疑中~

06

到了 8 月份的時候,我才開始完善簡歷以及刷題。

我的簡歷大概前前後後改了十二版,最初是改簡歷的佈局,內容塊;後面就是字字斟酌,細微調整。

經常刪刪改改,一句話可能要思考好久;我把我掌握的知識點都很詳細的列出來,雖然技能列表看起來很基礎,但是我有自信對自己寫的內容負責

小夥伴們一定要重視簡歷!多花點精力在完善簡歷上!

我的刷題大概從 6 月就已經開始,斷斷續續在 LeetCode 上刷一些題。在 8 月的時候,我開始每天集中抽出很多時間來刷題。

沒錯,大佬們天天堅持刷個一年半載,我 7、8 月才開始每天集中刷題。

我大三就意識到了刷題得重要性,因為做題能力差,報了藍橋杯比賽沒去。

既然意識到重要性,為什麼不早點去每天堅持刷題呢?

我嘗試過,最終放棄了。這麼做可能更多是臨時抱佛腳的心態,對剛做完的題有個印象。

對我來說,複習路上最大的阻礙就是刷題了,因為自己的程式碼能力實在太差了。

三月份,我大概做了半個月題。《劍指 Offer》上的常規題,我基本上就是半天一道題,因為自己做這些題實在是想不來,想半個小時嘗試去解決,但大多時候都是“差一點”,或者思路正確但又不能用程式碼實現出來。然後看題解,看別人不同的解法,自己再獨立寫一遍。

因為時間緊任務重,半天能夠讓我複習好多知識點了,所以想等複習完提綱之後再來刷題。而且,關鍵是做的題目,當時感覺自己懂了、會了,但是過一段時間又忘了,只能隱約留下個解題思路,還是不能夠獨立 AC。

七月份,只能是逼著自己來。因為大廠太看重程式碼能力了,即便是我理論知識掌握的再好,筆試都過不了,根本沒得機會去面試。

然後,就開始分類刷題。參考 labuladong 哥的刷題套路,weiwei 哥的刷題分類,小齊姐的刷題經驗,劍指 OfferKrahets路飛哥的精彩題解,每天花 8 個小時左右刷題,複習資料結構。

一道單連結串列反轉的題,我整整想了一天半才搞懂。該題下的所有題解全部看了一遍,包括公眾號的一些文章。遞迴的解法,短短几句話,我始終無法理解。

小賢從 4 月份一直開始刷題,在這期間一直和小賢在一起復習。他是 C++方向,演算法和程式碼能力很強,刷題方面我都是請教他的。

單連結串列遞迴解法,他畫圖整整給我解釋了一個晚上,從斐波那契的遞迴,到連結串列的實現。第二天,我終於搞懂了,在力扣發布了自己寫的最認真的一次題解。單連結串列反轉,自己寫了不下 20 遍了吧;這次,可能真的是永遠記住了吧。

8 月份,小賢由於有事回家了。房間只剩我一個人,我和老闆續了房租,繼續備戰秋招。

期間,刷題有任何問題,我都會立即給小賢打電話過去交流。

【刷題的誤區】

開始,我覺得自己不是在刷題,而是不斷地重複寫,好像在“背程式碼”。因為有些題說思路,我能夠很清晰的表達出來,做的多了發現解題的套路還是比較固定的(雖然也沒做多少 ?),但是到實際的動手寫,又寫不出來了。

針對這個問題,我也很痛苦。一方面覺得“背程式碼”很可恥,自己真的就這麼差嗎,做個簡單題都寫不出來嗎?但是,我真的是沒辦法,只能用做的少,練得少來安慰自己。

就這樣,每天逼著自己,刷了大概 170 題左右,每天將基礎的八大排序寫一遍

其實,前期的刷題,自己沒見過沒思路很正常,參考別人的題解,把這種解法引用到類似的題目上。就像寫作文一樣,針對不同問題有不同的模板,根據具體問題調整邊界即可。我自己總結來說,就是兩大因素:

  1. 針對不同問題求解的程式碼模板,要恰當靈活的應用(如雙指標、滑窗、列表 DP 等)
  2. 程式碼熟練度。模板是基於程式碼的熟練度而存在的,就像寫排序演算法一樣能夠很快的寫出來

但是,這個量還有我的認知,對秋招來說是遠遠不夠的。這是一項長期的積累和訓練,誰也不可能偷懶,達到立竿見影的效果。因此,在後來的秋招筆試中,我重重的摔了跟頭 ?,這是可預見的。

聽學姐說她們去年是網際網路的寒冬,找工作難。今年,因為疫情的原因,彷彿一切都變得更難,競爭更加激烈。

八月,2020 年的秋招已正式開始,但是我還在刷題複習中,準備即將到來的“金九銀十”。這份簡歷,整整遲投出一個月……

微信搜“JavaGuide”回覆“計算機基礎”即可獲取圖解計算機基礎+個人原創的 Java 面試手冊。

相關文章