做者:薛勤,互聯網從業者,編程愛好者。本文首發自公衆號:代碼藝術(ID:onblog)未經許可,不可轉載html
我既沒有跨過山和大海,也沒有穿過人山人海,我就是我,一個普通本科大學生。身爲讀者的你,關注了我,天然是想獲取知識與經驗,我所能分享的,也只有個人一些知識與經歷。前端
那年,我大一剛入學,邊學着入門級的C語言,邊對將來迷茫着。面試學生會,失敗。面試新媒體部,失敗。本覺得連連失敗的我已經輸在了大學的起跑線上,意外讓我面試了一個IT編程工做室,成功。我感謝工做室裏帶我入門的學長們,讓我知道了C語言之後能夠幹什麼,Java能夠幹什麼,促使我邁入Java世界的大門。寒假兩月,自學完Java基礎語法。java
第二年,我放棄了喜好的籃球,放棄了遊戲,從 jsp、servlet、html 開始學習,搭建了一個自習室查詢網頁,並出售給了一個校公衆號團隊。程序員
我在大一下學期報了校軟件設計大賽,並設計開發了一個微教務系統,原理是模擬登錄校教務系統,爬取成績課表等信息,而後進行網頁展現。得到了推薦獎,也就是沒進前十名。校軟件大賽舉辦的做用是選拔團隊去參加山東省大學生軟件設計大賽,雖然是推薦獎,但只要完成了做品,仍是能夠報銷三百報名費的。就這樣,我撥通了我媽的手機號,給我媽要了三百塊錢。web
在官網報名時才發現一個問題,每一個團隊最低三我的。面試
可個人團隊,只有我一我的。算法
是的,校賽現場答辯時,也只有我。數據庫
我最終仍是參加了這個比賽,我慶幸我有兩個月的暑假能夠去準備。在這兩個月裏,我抱着一本 Android 入門到精通的書籍,開始一章一章的作Demo。最後,我作了一個校園App,主要包括論壇發帖、點贊、評論功能,以及查成績、查課表、看校園新聞等功能。編程
我得到了齊魯軟件大賽做品完成獎,不是1、2、三等獎。因此,個人第一次軟件大賽結果,失敗。後端
大二上學期,我把個人這款校園App發給了校猿碼工做室,成爲工做室的一員。期間工做室計劃了兩個超級大項目,惋惜最終都不了了之。
國慶假期期間,特別想換掉我那臺1500塊買的筆記本電腦,因而我去了遊樂場兼職,天天早7晚10的的日子,賺了一千多塊錢,加上花唄分期,買了我如今的這款電腦華碩K55VD,原款配置略低,我又加了內存條、固態硬盤。一共兩千多吧。爲啥這麼便宜,由於是櫃檯展現機,其實和新電腦沒啥區別。
在年末,我利用我學會的安卓開發技能開發了一款Vip視頻破解App。這款軟件已經再也不維護,它是一款收費軟件,軟件能夠免費觀看愛奇藝、優酷、騰訊、樂視、PPTV、芒果的VIP視頻。原理很簡單,調用網上已有的破解接口,並嵌入騰訊X5瀏覽器內核。關於收費模塊,貌似我那時候支付寶還不支持我的開發者,因而想到了賣卡平臺。用戶去第三方買卡,到個人軟件輸入卡密便可使用。不過推廣不利,並無賺多少錢。
轉眼,大三到來。
我仍是那個兩眼不聞窗外事、一心只想敲代碼的我。年後,接了個學校的項目,這時候正好個人技能棧已經擴充到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併發編程的藝術》,我讀的如飢似渴,書上的示例我都照着敲一遍,可我擔憂學得快忘得快,因而我開始記筆記,我把書上的內容都抄了下來,發佈在了個人博客上。學完多線程相關的知識,我再回來過看葛一鳴的書,我懂了。
大二暑假臨近,很是熱鬧。
此次個人團隊很給力,指導老師也很給力。咱們一塊兒開會討論作比賽!沒錯,仍是山東省大學生軟件設計大賽。此次,我想盡心盡力。
咱們用了一個多月去尋找咱們究竟要作什麼?個人導師特別想作一個醫生機器人,還給咱們看了相關的圖片。咱們的課題是大數據分析與挖掘。起初,咱們壓根沒有頭緒,走了很是很是多的彎路,怎麼說呢。我去學了Hadoop,學完後發現項目規模過小,用不上。而後去學了Elasticsearch。最初的做品是一個網頁對話窗口,集成思必馳語音合成接口,後端是Elasticsearch作的查詢接口。很是簡單(low)。
瞭解到其它隊伍大都是作了作數據爬取、分析,而後用ECharts作可視化展現,個人導師建議我作知識圖譜,並提供了示例。因而,我去百度調研,用了一週的時間學習了Neo4j,並結合Spring Boot作了個Demo。只有圖數據庫的支持是不夠的,還須要前端展現,因而學了d3.js。但個人前端技能並非特別好,數據量太大,作出的知識圖譜節點都擠在了一塊兒,做品效果很是很差看。
那段時期,我又陷入了迷茫。我究竟要作什麼?第一次參賽一敗塗地,這一次,我還要繼續失敗嗎?
導師告訴我,讓我多試幾個網站爬取數據源。無心中,我看到了某醫療網站的自助診斷系統,瞬間驚呆了,這就是我要作的東西!
導師要作知識圖譜,可我要堅持作醫療診斷系統。在思考系統的算法邏輯時,我驚奇的發現,支撐診斷算法的正是知識圖譜。當我在辦公室裏的小黑板手寫算法思路,向隊友、導師展現的時候,我那時很是開心,由於我終於知道了我要作什麼。
大三下學期開學後,我被通知做品進了二等獎,一等獎決賽即將在山東大學舉辦,讓我務必準時參加決賽答辯。
答辯我準備的很是充分,並且,在決賽答辯以前,我就在另外一個省級比賽中答辯過一次了,算是漲了一波經驗。
不負所望,個人做品得到山東省大學生軟件大賽一等獎。
在作"醫療診斷系統"參加省軟件大賽的同時,我深深感覺到在爬取大量數據時的時間消耗是多麼巨大。最長的時候,個人電腦兩天沒關機,一直在後臺爬。最後,受不了的我,用Java寫了一個多線程爬蟲框架,併發布到了個人Github。
我之前都是一我的作項目,並且,愈來愈發現本身對頁面相關的設計開發效率低下。如今有了團隊,很是渴望先後端分離。當時,我一直在用模板引擎,基於服務拆分的思想,我作了一個相似Tomcat的靜態web服務器發佈到了個人Github。
在學完《深刻理解Java虛擬機》後,我以爲我不該該學完就完了,我要把學的知識作成一個做品出來。當時學完了java性能監控的工具後,以爲軟件形式的監控也比較麻煩,若是能有一個可視化的web版再結合ECharts圖表展現就太方便了。我用了幾天的時間作完了JavaMonitor項目的單機版,沒想到後來star愈來愈多,吸收了一些建議,作了支持分佈式監控的javaMonitorPlus。
也是在暑假這段時期,我收到了來自一位阿里技術專家的郵件。內容簡單歸納就是想不想來阿里,能夠幫着內推。當時收到郵件的意義,對我來講很是巨大,他讓我第一次感覺到BAT與本身的距離彷佛不是那麼遙遠,我一個普通本科彷彿也能夠實現去BAT工做的夢想。
大三結尾,我迎來了我人生的第一個轉折點。
當時,我已經感覺到了技術彷彿到了一個瓶頸,單機架構我作的很溜,但涉及企業的分佈式架構,我仍是不太瞭解。當時剛好得知省賽頒獎典禮有現場招聘會時,我便精心準備了一份簡歷,並彩印了5份,打算投遞。可到了現場,看到的都是小公司在招軟件銷售人員,我就瞬間奔潰了,我心底一直有一種驕傲,我能夠去大公司的,我有這能力。最終,我一份簡歷沒投。
看着寫了好幾頁的簡歷,我是真的不想就這麼白白浪費。
想起來我大一曾註冊過的幾家招聘網站,我就把個人簡歷發在了上面。其中一家網站是實習僧。
我覺得壓根沒有個人崗位,由於我尚未到大四,我才大三。可我打開實習僧,卻發現居然有大三的實習生招聘,我有點驚訝。不過,也僅此而已,我不認爲我有能力能夠進新浪、百度、京東這些大公司。我記得我當時抱着不浪費我寫的這麼多頁的簡歷的心態,只投大公司,小公司不投。而後,洗洗睡了,壓根沒怎麼放心上。
不久的一天早上,我還在睡覺,接聽到了第一個電話,來自中國電信北研院,問我在京嗎?何時有時間,約一下電話面試。而後,本身開心的不得了。又不久,京東打來了電話,讓我去北京參加現場面試。我推到了個人期末考試結束後。又不久,新浪也發了現場面試的郵件。
一天晚上,我收到了百度打來的面試邀請電話,當時我在商業街買吃的。聽到了開心的不得了,約定了一小時後電話面試。東西也不買了,直接回學校,看了一會書,複習複習,由於那時候我已經半個月沒碰過代碼了,《劍指Offer》才刷了幾章就停下來一直在複習期末考試。慶幸本身買了本《Java程序員面試筆試寶典》。百度一面,如約而至。我記得我當時說的最多的就兩句話:忘了,不瞭解。面完後,我以爲我掛了。但個人習慣仍是讓我把面試官問到的全部基礎知識都看了一遍。就這樣,我次日接到了網易一面的電話,回答的算是very good,就一個SQL左鏈接查詢我忘了,由於我忘了複習SQL了。
意外驚喜,接到了百度二面的面試邀約,我此次提早看了不少知識,複寫了Java虛擬機,多線程相關的知識,二面這塊的基礎知識娓娓道來,但誰知,面試官問我Redis底層原理,如何設置過時時間,我說不會,面試官便引導我說:"不會沒事,我提醒下你"。就這樣,我斷斷續續回答出了這塊的內容。又問我消息隊列,我又懵逼了,問我,如何設計秒殺系統,我說能夠用隊列,隊列滿了就直接false。面試官又問,分佈式系統呢?那固然用MQ中間件。說實話,面試後,我對百度拜服。不久,網易二面來了,回答也算是very good!
網易三面來的很是快,我以爲網易面試很舒服。不久,網易HR經過個人聯繫方式告知了我結果,人生第一個offer正式到手!
百度三面遲遲不來,我覺得我掛了,心想好吧,去網易也不錯!杭州,舒服。可我以爲還有但願,便給百度打了電話,百度說,等段時間。不久,百度三面到來,三面主要是聊項目,聊的還不錯,畢竟本身作的東西被人欣賞本身也很開心。沒多久,百度HR直接給我打電話,說offer已發,讓我當天就要確認。
晚上,問了不少老師學長,包括個人家人,都但願我去百度,最後,我去了杭州、網易。由於,那裏有阿里。
準備阿里春招實習,我從過年後就開始了。
那個時候,我還在網易實習,白天工做,晚上覆習面試內容。
正如網絡上說的,面試內容基本涵蓋操做系統、計算機網絡、數據庫原理、數據結構與算法、編程語言以及框架源碼,針對每一個人的狀況,還會詢問項目經歷這塊。
我自認爲本身編程語言這塊已經沒有問題,因而投入全部的精力去刷《劍指offer》上面的題,不過仍是很是擔憂本身事後就忘,因而反覆看,反覆敲,慢慢地,總結出了一些數據結構經常使用的解法心得。好比鏈表題,一個指針解決不了的,每每兩個指針就能夠解決。
3月中旬,阿里春招開始,我信心滿滿的面過了阿里一面和二面。
在三面,我遭遇了滑鐵盧,而且面評很是很差,這直接致使我後續的幾回其它部門的面試一一失敗。
失敗了多少次呢?7個部門吧。
並且你每次失敗的緣由,後續的面試官均可以看獲得。面到最後,我已經失去了渾身力氣。
最煎熬莫過於面完終面後的等待,焦慮、忐忑,甚至好幾回,我徹夜未眠。
本覺得本身已經掉隊,本覺得這個夢我立刻就要清醒,但老天仍是垂憐有夢想的人,我春招仍是收穫了騰訊的實習offer。
騰訊暑期實習後,我立馬投入到秋招的備戰狀態,可這個時候,已經有不少朋友在提早批斬獲offer。
那時的我,比較心急,沒有準備就加入戰場,最終,所有折戟沉沙。也是在失敗事後,才意識到,自身的短處。
從那開始,我一方面系統複習面試內容,另外一方面開始準備一些有含金量的項目去作。
我擴充本身的複習範圍,包括計算機組成原理等內容,並使用思惟導圖軟件進行整理。
我對分佈式限流比較感興趣,因而模仿阿里的分佈式限流產品 Sentinel 的功能本身造了個輪子。
至於爲何選擇阿里的產品去模仿,也是由於本身始終有一種不服輸的精神,外界的否認我又何須在乎,只要我相信我,相信真正的牛人根本不須要平臺的陪襯!
很快,一個月的複習時間過去,期間也參加了十幾個公司的網上筆試,我終於有了新的面試機會,其中包括阿里巴巴。
不過此時的我,已經對之古井無波。
通過陸陸續續的遠程面試,我收穫了一個又一個公司的offer,包括 Special Offer、Super Special Offer。
到了秋招末尾,我覺得個人秋招已經結束,而且也已經決定和一家心儀的公司簽下三方協議。
就在這個時候,我接到了阿里巴巴的通知,告訴我已經經過了5輪面試,評級是SP...
看來,古井無波註定與我無緣,我仍是難免很是激動。
到此,我終於圓滿結束了個人大學生涯,實現了本身曾經暗暗許下的夢想!
最後,但願個人這篇文章能夠鼓勵到每個有夢想的人,出身不會決定你的出路,思路纔是。