我一個二本大學是如何拿到百度、網易大廠offer的!
本文首發在我的微信公眾號“程序員柯南”,底部附有二維碼。原文閱讀
01終於步入大學
我既沒有跨過山和大海,也沒有穿過人山人海,我就是我,一個2020屆普通本科大學生。身為讀者的你,關註了我,自然是想獲取知識與經驗,我所能分享的,也只有我的一些知識與經歷。
2016年,我大一剛入學,邊學著入門級的C語言,邊對未來迷茫著。面試學生會,失敗。面試新媒體部,失敗。本以為連連失敗的我已經輸在了大學的起跑線上,意外讓我面試了一個IT編程工作室,成功。我感謝工作室裏帶我入門的學長們,讓我知道了C語言以後可以幹什麽,Java可以幹什麽,促使我邁入Java世界的大門。寒假兩月,自學完Java基礎語法。
02孤獨的旅行者
2017年,放棄了喜愛的籃球,放棄了遊戲,從jsp、servlet、html開始學習,搭建了一個自習室查詢網頁,並出售給了一個校公眾號團隊。
我在大一下學期報了校軟件設計大賽,並設計開發了一個微教務系統,原理是模擬登陸校教務系統,爬取成績課表等信息,然後進行網頁展示。獲得了推薦獎,也就是沒進前十名。校軟件大賽舉辦的作用是選拔團隊去參加山東省大學生軟件設計大賽,雖然是推薦獎,但只要完成了作品,還是可以報銷三百報名費的。就這樣,我撥通了我媽的手機號,給我媽要了三百塊錢。
在官網報名時才發現一個問題,每個團隊最低三個人。
可我的團隊,只有我一個人。
是的,校賽現場答辯時,也只有我。
我最終還是參加了這個比賽,我慶幸我有兩個月的寒假可以去準備。在這兩個月裏,我抱著一本Android入門到精通的書籍,開始一章一章的做Demo。最後,我做了一個校園App,主要包括論壇發帖、點贊、評論功能,以及查成績、查課表、看校園新聞等功能。
我獲得了齊魯軟件大賽作品完成獎,不是一、二、三等獎。所以,我的第一次軟件大賽結果,失敗。
2017年下半年,也就是大二上學期。我把我的這款校園App發給了校猿碼工作室,成為工作室的一員。期間工作室計劃了兩個超級大項目,可惜最終都不了了之。
國慶假期期間,特別想換掉我那臺1500塊買的筆記本電腦,於是我去了濟南方特兼職,每天早7晚10的的日子,賺了一千多塊錢,加上花唄分期,買了我現在的這款電腦華碩K55VD,原款配置略低,我又加了內存條、固態硬盤。一共兩千多吧。為啥這麽便宜,因為是櫃臺展示機,其實和新電腦沒啥區別。
在年底,我利用我學會的安卓開發技能開發了一款Vip視頻破解App:聚視助手。這款軟件至今還在維護,它是一款收費軟件,軟件可以免費觀看愛奇藝、優酷、騰訊、樂視、PPTV、芒果的VIP視頻。原理很簡單,調用網上已有的破解接口,並嵌入騰訊X5瀏覽器內核。關於收費模塊,貌似我那時候支付寶還不支持個人開發者,於是想到了賣卡平臺。用戶去第三方買卡,到我的軟件輸入卡密即可使用。不過推廣不利,並沒有賺多少錢。
03在反思中進步
轉眼,2018到來。
我還是那個兩眼不聞窗外事、一心只想敲代碼的我。年後,接了個學校的項目,這時候正好我的技能棧已經擴充到Spring生態圈了,Spring Boot、Spring MVC用的賊溜。正好,基於Spring Boot仿實習僧做了個招聘系統,酬金稅後2000。
技能棧越來越多,我開始思考更深層次的意義。
我的基礎到低紮實不紮實,每次想到這,我好慌。
我的基礎仿佛沒有,我既沒有研究過jdk源碼,又沒有搞過算法競賽。我開始主動尋求Java中的基礎,去尋找我經常聽到卻不會的。我問我的學長們,聽學長們講述面經。這時候,一系列我不知曉的名詞湧來,讓我仿佛覺得自己是個搖搖欲墜的大廈。
多線程,什麽是多線程?什麽是線程安全?我一點不懂。JVM?這是啥,GC又是是什麽?BIO、NIO、AIO,抱歉,我不會。
我覺得我要開始改變了。內心仿佛總是有一股力量在揪著我,催著我,讓我去做,去行動。我覺得,我不能再看視頻學習了,慕課網已經不適合我了。我要去看書。
在我的印象中,我主動看的第一本書,是葛一鳴的《Java程序性能優化》。我非常感謝這本書,感動到想哭著給作者打賞。這本書完全打開了我對Java未知領域的大門,是它,讓我知道Java基礎中String的底層原理、List、Map的底層原理與優化,是它,讓我知道了設計模式這種東西,是它,讓我知道了GC、JVM,讓我知道了Java世界中最重要的多線程相關知識,讓我體驗了Java性能調優。這本書中的內容,基礎知識我看的懂,JVM、多線程等看不懂,但為我指引了方向。按著這個方向,我買了《深入理解Java虛擬機》《Java多線程編程核心技術》《Java並發編程的藝術》,我讀的如饑似渴,書上的示例我都照著敲一遍,可我擔心學得快忘得快,於是我開始記筆記,我把書上的內容都抄了下來,發布在了我的博客上。學完多線程相關的知識,我再回來過看葛一鳴的書,我懂了。
04再戰軟件大賽
2018暑假,非常熱鬧。
這次我的團隊很給力,指導老師也很給力。我們一起開會討論做比賽!沒錯,還是山東省大學生軟件設計大賽。這次,我想全力以赴。
我們用了一個多月去尋找我們究竟要做什麽?我的導師特別想做一個醫生機器人,還給我們看了相關的圖片。我們的課題是大數據分析與挖掘。起初,我們壓根沒有頭緒,走了非常非常多的彎路,怎麽說呢。我去學了Hadoop,學完後發現項目規模太小,用不上。然後去學了Elasticsearch。最初的作品是一個網頁對話窗口,集成思必馳語音合成接口,後端是Elasticsearch做的查詢接口。非常簡單(low)。
了解到其它隊伍大都是做了做數據爬取、分析,然後用ECharts做可視化展示,我的導師建議我做知識圖譜,並提供了示例。於是,我去百度調研,用了一周的時間學習了Neo4j,並結合Spring Boot做了個Demo。只有圖數據庫的支持是不夠的,還需要前端展示,於是學了d3.js。但我的前端技能並不是特別好,數據量太大,做出的知識圖譜節點都擠在了一起,作品效果非常不好看。
那段時期,我又陷入了迷茫。我究竟要做什麽?第一次參賽一敗塗地,這一次,我還要繼續失敗嗎?
導師告訴我,讓我多試幾個網站爬取數據源。無意中,我看到了jb39網站的自助診斷系統,瞬間驚呆了,這就是我要做的東西!
導師要做知識圖譜,可我要堅持做智能醫療診斷系統。在思考系統的算法邏輯時,我驚奇的發現,支撐診斷算法的正是知識圖譜。當我在辦公室裏的小黑板手寫算法思路,向隊友、導師展示的時候,我那時非常開心,因為我終於知道了我要做什麽。
大二下學期開學後,我被通知作品進了二等獎,一等獎決賽即將在山東大學舉辦,讓我務必準時參加決賽答辯。
答辯我準備的非常充分,而且,在決賽答辯之前,我就在另一個省級比賽中答辯過一次了,算是漲了一波經驗。
不負所望,我的作品獲得山東省大學生軟件大賽一等獎。
05開源作品爆發
在做"基於智能醫療診斷系統"參加省軟件大賽的同時,我深深感受到在爬取大量數據時的時間消耗是多麽巨大。最長的時候,我的電腦兩天沒關機,一直在後臺爬。最後,受不了的我,用Java寫了一個多線程爬蟲框架,並發布到了我的Github。
我以前都是一個人做項目,而且,越來越發現自己對頁面相關的設計開發效率低下。現在有了團隊,非常渴望前後端分離。當時,我一直在用模板引擎,基於服務拆分的思想,我做了一個類似Tomcat的靜態web服務器發布到了我的Github。
在學完《深入理解Java虛擬機》後,我覺得我不應該學完就完了,我要把學的知識做成一個作品出來。當時學完了java性能監控的工具後,覺得軟件形式的監控也比較麻煩,如果能有一個可視化的web版再結合ECharts圖表展示就太方便了。我用了幾天的時間做完了JavaMonitor項目的單機版,沒想到後來star越來越多,吸取了一些建議,做了支持分布式監控的javaMonitorPlus。
也是在暑假這段時期,我收到了來自一位阿裏技術專家的郵件。內容簡單概括就是想不想來阿裏。當時收到郵件的意義,對我來說非常巨大,他讓我第一次感受到BAT與自己的距離似乎不是那麽遙遠,我一個普通本科仿佛也可以實現去BAT工作的夢想。
06人生的轉折點
2018年12月,我迎來了我人生的第一個轉折點。
當時,我已經感受到了技術仿佛到了一個瓶頸,單機架構我做的很溜,但涉及企業的分布式架構,我還是不太了解。當時恰好得知省賽頒獎典禮有現場招聘會時,我便精心準備了一份簡歷,並彩印了5份,打算投遞。可到了現場,看到的都是小公司在招軟件銷售人員,我就瞬間奔潰了,我心底一直有一種驕傲,我可以去大公司的,我有這能力。最終,我一份簡歷沒投。
看著寫了好幾頁的簡歷,我是真的不想就這麽白白浪費。
想起來我大一曾註冊過的幾家招聘網站,我就把我的簡歷發在了上面。其實只有一家,實習僧。
我以為壓根沒有我的崗位,因為我太小了,我才大二。可我打開實習僧,卻發現竟然有2020屆的實習生招聘,我有點驚訝。不過,也僅此而已,我不認為我有能力能進新浪、百度、京東這些大公司。我記得我當時抱著不浪費我寫的這麽多頁的簡歷的心態,只投大公司,小公司不投。然後,洗洗睡了,壓根沒怎麽放心上。
不久的一天早上,我還在睡覺,接聽到了第一個電話,來自中國電信北研院,問我在京嗎?什麽時候有時間,約一下電話面試。然後,自己開心的不得了。又不久,京東打來了電話,讓我去北京參加現場面試。我推到了我的期末考試結束後。又不久,新浪也發了現場面試的郵件。
一天晚上,我收到了百度打來的面試邀請電話,當時我在商業街買吃的。聽到了開心的不得了,約定了一小時後電話面試。東西也不買了,直接回學校,看了一會書,復習復習,因為那時候我已經半個月沒碰過代碼了,《劍指Offer》才刷了幾章就停下來一直在復習期末考試。慶幸自己買了本《Java程序員面試筆試寶典》。百度一面,如約而至。我記得我當時說的最多的就兩句話:忘了,不了解。面完後,我覺得我掛了。但我的習慣還是讓我把面試官問到的所有基礎知識都看了一遍。就這樣,我第二天接到了網易一面的電話,回答的算是very good,就一個SQL左連接查詢我忘了,因為我忘了復習SQL了。
意外驚喜,接到了百度二面的面試邀約,我這次提前看了很多知識,復寫了Java虛擬機,多線程相關的知識,二面這塊的基礎知識娓娓道來,但誰知,面試官問我Redis底層原理,如何設置過期時間,我說不會,面試官便引導我說:“不會沒事,我提醒下你”,就這樣,我回答出了這塊的內容。又問我消息隊列,我又懵逼了,問我,如何設計秒殺系統,我說可以用隊列,隊列滿了就直接false。面試官又問,分布式系統呢?那當然用MQ中間件。說實話,面試後,我對百度拜服。不久,網易二面來了,回答也算是very good!
網易三面來的非常快,我覺得網易面試很舒服。不久,網易HR加了我微信,人生第一個offer正式到手!
百度三面遲遲不來,我以為我掛了,心想好吧,去網易也不錯!杭州,舒服。可我覺得還有希望,便給百度打了電話,百度說,等段時間。不久,百度三面到來,三面主要是聊項目,聊的還不錯,畢竟自己做的東西被人欣賞自己也很開心。沒多久,百度HR直接給我打電話,說offer已發,讓我當天就要確認。
晚上,問了很多老師學長,包括我的家人,都希望我去百度,最後,我去了杭州網易,因為,那裏有阿裏。
(未完待續,後面的內容依舊會在公眾號第一時間發布)
文中的所有項目均在我的Github和Gitee倉庫中
Github:https://github.com/yueshutong
Gitee:https://gitee.com/zyzpp/projects
個人博客:http://www.yueshutong.cn
你點的每個贊,我都認真當成了喜歡
我一個二本大學是如何拿到百度、網易大廠offer的!