二本出身、逆襲網易、一路孤獨、一路狂歡!

石杉的架構筆記發表於2019-03-22

【本文是讀者“程式設計師柯南”投稿的面試經歷,在此感謝這位同學分享自己的面試經歷,給廣大同學作參考】

目錄:

1、終於步入大學

2、孤獨的旅行者

3、在反思中進步

4、再戰軟體大賽

5、開源作品爆發

6、人生的轉折點


01、終於步入大學

我既沒有跨過山和大海,也沒有穿過人山人海,我就是我,一個2020屆普通本科大學生。

身為讀者的你,關注了我,自然是想獲取知識與經驗,我所能分享的,也只有我的一些知識與經歷。

2016年,我大一剛入學,邊學著入門級的C語言,邊對未來迷茫著。面試學生會,失敗。面試新媒體部,失敗。

本以為連連失敗的我已經輸在了大學的起跑線上,意外讓我面試了一個IT程式設計工作室,成功。

我感謝工作室裡帶我入門的學長們,讓我知道了C語言可以幹什麼,Java可以幹什麼,促使我邁入Java世界的大門。寒假兩月,自學完Java基礎語法。


02、孤獨的旅行者

2017年,放棄了喜愛的籃球,放棄了遊戲,從jsp、servlet、html開始學習,搭建了一個自習室查詢網頁,並出售給了一個校公眾號團隊。

我在大一下學期報了校軟體設計大賽,並設計開發了一個微教務系統。

原理是模擬登陸校教務系統,爬取成績課表等資訊,然後進行網頁展示。獲得了推薦獎,也就是沒進前十名。

校軟體大賽舉辦的作用是選拔團隊去參加山東省大學生軟體設計大賽,雖然是推薦獎,但只要完成了作品,還是可以報銷三百報名費的。

就這樣,我撥通了我媽的手機號,給我媽要了三百塊錢。

在官網報名時才發現一個問題,每個團隊最低三個人。可我的團隊,只有我一個人。是的,校賽現場答辯時,也只有我。

我最終還是參加了這個比賽,我慶幸我有兩個月的寒假可以去準備。在這兩個月裡,我抱著一本Android入門到精通的書籍,開始一章一章的做Demo。

最後,我做了一個校園App,主要包括論壇發帖、點贊、評論功能,以及查成績、查課表、看校園新聞等功能。

我獲得了軟體大賽作品完成獎,不是一、二、三等獎。所以,我的第一次軟體大賽結果,失敗。

2017年下半年,也就是大二上學期。我把我的這款校園App發給了校猿碼工作室,成為工作室的一員。期間工作室計劃了兩個超級大專案,可惜最終都不了了之。


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已發,讓我當天就要確認。

晚上,問了很多老師學長,包括我的家人,都希望我去百度,不過最後,我還是選擇了杭州網易,因為,那裡有夢想的阿里。


END



相關文章