寫在最前

寫過很多篇面試總結,這篇文章應該是最後一篇總結,當然也是最完整,最詳細的一篇總結。算是人生中一段寶貴的經歷,不僅是我研究生生涯交出的一份答卷,也是未來職業生涯的開端。僅以此文,獻給自己,以及各位在求職路上的,或者是已經經歷過校招的朋友們。不忘初心,方得始終。

前言

在下本是跨專業渣考研的985渣碩一枚,經歷研究生兩年的學習積累,有幸於2015秋季招聘中拿到幾個公司的研發崗offer,包括百度,阿里,騰訊,今日頭條,網易,華為等。

(在秋招末期,有幸又拿到了滴滴和亞馬遜的offer,那時已經9月份了,所以之前的文章裏都沒有提到過)

一路走來也遇到很多困難,也踩了很多坑,同時我自己也探索了很多的學習方法,總結了很多心得體會,並且,我對校園招聘也做了一些研究和相應的準備。在今年的秋季招聘結束以後,我也決定把這些東西全部都寫成文字,做成專題,以便分享給更多未來將要參加校招的同學。

一.大學時期的迷茫與堅定

我的本科專業是電子信息工程,基本沒有接觸過計算機專業的課程,只學過c語言,然後在大三的時候接觸過java,Android,以及前端開發。這時候我只是一個剛剛入門的菜鳥,還不知道軟體開發的水有多深,抱著試一試的態度去應聘了很多公司。結果可想而知,連簡歷篩選都沒有通過。

當年我對遊戲開發很有興趣,特別是對網易遊戲情有獨鍾,但是當我看到網易遊戲研發工程師的招聘要求時,我只能望而卻步,因為它要求學歷至少是985的碩士。

也因為這個契機,我在大三的暑假開始準備考研,花了一個月的時間深思熟慮之後,選擇了華科作為我的目標院校。

於是,那年的下半年,我成為了「兩耳不聞窗外事,一心只讀聖賢書」的考研黨,回想起來那確實是玩命學習的半年時間,每天穩定泡在圖書館8個小時以上,有時候學到宿舍都能學到晚上12點,那時候感覺自己完全變了一個人似的,可能當一個人為了某個目標而努力時,真的會變得不一樣。最終我順利地考上了,令我意外的是,成績還挺不錯。

二.研究生時期的方向選擇

對於即將讀研的同學來說,一般有兩件事很重要,一件事是選擇導師,一件事是選擇方向。

我在剛讀研的時候最頭疼的也是這兩件事情。首先說明一下,我讀的是專碩,所以實驗室一般不搞科研,有部分導師會帶項目,由於我不打算在實驗室做項目(因為我更希望去大公司裏鍛煉幾年),所以我當時本著想要找實習的想法選擇了導師,事實證明我的選擇還是很正確的,我在研二有大段時間去參加實習,讓我在大廠裏有足夠的時間去鍛煉和學習。

而選擇方向這件事,我倒是折騰了好久。研一期間我做的最多的事情就是看書了,當時自己的方向還不明確,所以找了很多書來看。當別人都在專研數據挖掘和機器學習時,我還在各種方向之間搖擺不定。

我在讀研之前想做遊戲開發和Android開發,於是我在網上了解對應方向的資訊,發現遊戲研發的就業面比較窄。

最後,我綜合公司的崗位情況,個人興趣,以及我之前的學習經歷等因素選定了Android開發,於是我真正意義上的踏上了Android的學習之路

三.笨鳥先飛,勤能補拙

儘管我的入學成績是全學院的top3,但是,我發現,作為非科班出身的我,和很多科班同學相比,還是有一定差距的。

大部分同學本科都上過計算機專業的相關課程,比如計算機網路,操作系統,數據結構等等,而我以前連聽都沒聽過,除此之外,他們一般都會幾段比較完整的項目經驗。至少在很多知識的層面上已經領先我很多了。而我在當時,只學了數據結構,另外接觸過一些基礎,有一部分項目經驗,基本上就是入門水平。

於是我痛定思痛,決定好好彌補我的不足,平時一有空就去圖書館找些書來看,不論是操作系統,計算機網路,還是資料庫等本科課程,我都會找一些對應的書籍來看,當時不太清楚其實有些課程其實不需要特地去補,以至於我連計算機組成原理,編譯原理,軟體測試等方面的書都特地找來看,現在想想也是挺逗比的。

由於我們上的課比較水,所以上課時間反而變成了我自學基礎課程的大好時光了。所以我平時上課的時候都會帶兩三本書,一到兩周內看完一本,雖然可能吸收的不是特別好,但是對當時的我來說還是有很大幫助的。

就這樣,每天我都把自己的時間填滿,愣是在研一上學期看了好幾本書,當時書的版本現在有的記不清了,主要是計算機網路,操作系統,計算機組成原理,另外還有軟體工程,軟體測試,設計模式,等書籍。就這樣,我靠著這段時間的堅持把計算機基礎課程補上來了一些。

四.歷盡艱辛,終得實習

時間來到研一下半頁,這時候我剛剛結束了學校的項目實訓課程,在做這個項目期間,我發現自己暴露出了很多問題,技術實踐能力不足,android基礎不紮實。這件事情也給我自己敲響了警鐘,因為我計劃在春招期間找一份大廠的實習,但是目前看來我的水平還遠遠不夠。

壓力之下,只有努力一條出路。於是,從那時候起,我開始了「留守「實驗室的學習生活。為什麼要在實驗室學習,一是因為學習氣氛好,二是因為平時大家也可以互相交流問題。每天早上9點到實驗室打開電腦,晚上9點背電腦回寢室。大部分時間我會花在看書上

另外一部分時間我會用來看一些技術博客,我主要是根據面經上的知識點按圖索驥,找到對應講解該知識點的文章,那時候主要還是通過搜索引擎來找文章,當然有時候看到一些重點難點也會自己寫一些博客。不過這個時期並不是我大量寫博客的階段,主要還是看一些講解面試知識點的技術博客為主。

除此之外在面試前幾天我會花時間去看這家公司的面經,搞懂每一個面經上的知識點,並且記錄在我的筆記上,光是面經相關的筆記我就記了100多篇,這樣的學習習慣我一直堅持到了秋招,確保每個面試知識點都能被我記住,消化,直至完全理解。

慢慢的,筆記越來越多,我參加面試的公司也越來越多,於是我開始不斷完善自己的簡歷,總結自己的面試技巧,選擇合適的網申時機。從頭到尾我大概花了3個月的時間在找實習上,期間大大小小參加了20多次面試,我也從一開始面試一問三不知的菜鳥,逐漸變成了麪霸,到複習末期,我對Android常見面試知識點已經瞭然於胸,同時也越來越自信,不管面什麼大廠都不慌不忙。

這樣的日子持續了好幾個月,所謂世上無難事,只怕有心人。到最後,實驗室裏每個人都拿到了心儀的實習offer。

五.實習路上,我明白了很多

踏出學校大門,我的實習之路才剛剛開始。8個月左右的實習時間,說長也長,說短也短。但經歷過這段實習之後,我才明白了很多事情。

在A場實習的日子裡,我第一次瞭解大公司的開發流程,親自參與項目代碼的開發,我的導師會和我提需求,會指導我怎麼做得更好。在這裡的成長無疑是非常快速的,但我很快意識到我的問題所在,對很多技術原理,實現原理都不是特別熟悉,這段時間我意識到了自己的知識深度和廣度都可能都有待提高。

不過由於家裡的一些事情。我提前離職了,所以在A場呆的時間很短,以致於我沒來得及搞懂部門項目的技術架構就走了,這也讓我在離開以後感覺很遺憾,所以我下定決心在下個實習單位要好好做。

離開A場後我來到了B廠。部門給我提的需求不算太難,大部分都是一些簡單的工作,但是這次很快就意識到了問題所在,就是我不太熟悉部門的整體框架,所以在需要借鑒別人代碼時偶爾會看不懂。後來部門又給了新的重構需求,此時的我開始焦慮起來,是不是應該做出一些改變呢。

終於,我找到了新的目標利用一些時間去看其他同事負責的代碼,並且通過一些文檔和PPT去了解這些代碼的功能和意義。結合代碼和文檔,再加上和同時的交流,我對部門項目的架構逐漸熟悉起來,為了更好地理解每一塊代碼的作用,我還為一些模塊的代碼寫了注釋。

到後來,我工位上的書越來越多,我對部門的技術也越來越熟悉,有時候我還會去聽公司內各個團隊組織的技術分享,有空的時候看看網上的技術課程,真正地實現了自己在技術廣度上的拓展。

有時候我覺得,實習生活是會騙人的,你佩戴著和正式員工一樣的工牌,和他們做著類似的事情,會讓你覺得你的水平已經和他們差不多了,但事實上是,在轉正之前,你和他們還差得遠,所以不要停下自己前進的腳步,抓緊時間學習吧,把握好你在公司裏的機會,合理利用公司給你提供的資源。

六.積累與沉澱

研究生期間我有一件事情一直在堅持,那就是做筆記和寫博客。

做筆記,就是記錄學習中大大小小的事情,可能是面試問題,可能是一週的學習計劃,也可能知識一個知識點,總歸都是值得記錄的東西,對我來說,就是一種積累。而對於博客,我從一開始只用於記錄項目,到後來做轉載,再到後來寫原創,整理系列文章,則更像是一種沉澱。

但是在春招剛剛結束的這段時間,我發現一個問題,之前學過的東西忘記了很多,特別是那些理解的不夠深的知識點,總是特別容易忘記。另外我發現,雖然我在筆記中記錄了很多的知識點和麪試題,但是往往我只看過一次,不會再去看第二次。

這也意味著,雖然記錄的內容很多,但是真正消化吸收的內容很少,腦子裡充斥著總是那些零碎的知識點和麪試問題,對於完整的知識體系知之甚少。這些問題在春招期間也不斷地暴露出來,讓我思考了很久。

面對如此窘境,我想做出改變,趁著現在時間充裕,我想要為這些內容做一次減法,並且藉此機會,推翻自己原有的知識體系,重建新的知識框架。

我打算用幾點來形容這三個月的複習

  • 具體可靠的學習計劃
  • 寫博客整合知識點
  • 做項目鞏固實踐能力
  • 堅持刷題,注重方法

七.秋招之路,砥礪前行

不管前期做了多少準備,到秋招的時候也不能掉以輕心,從七月底第一次面試到9月基本佛系,中間經歷了大大小小的面試。

在完成知識體系重建以後,我把重點轉向了另外幾件事,一是完善和熟悉我的簡歷,以便在面試中能夠比較好地發揮,二是持續刷題,保持對演算法題和筆試真題的手感和熟練度,三則是看面經查缺補漏,我一直認為看面經是很重要的一項複習內容。

就這樣,我一邊繼續複習,以便開始了一場接一場的面試接力。

起初,我面了幾家小公司練手,接著阿里的提前批接踵而至,我戰戰兢兢地參加了阿里中間件部門的面試,面難難度還算適中,一共四輪面試,當時我的表現也還不錯,問題基本都答上來了。面完不到一週以後我就收到了通過的消息,當時還有點懵。沒想到第一個offer這麼快就來了。

這段時間內,螞蟻金服的兩個部門也給了我面試機會,我都參加了它們的面試,並且順利地拿到了其中一個部門的offer。由於我對螞蟻這邊的業務比較感興趣,最終選擇了螞蟻金服的offer。

阿里提前批的勝利確實是意外之喜,但也大大地鼓舞了我,於是我又參加了百度和騰訊的提前批面試,由於百度的提前批不走流程,一共有四個部門面試了我,每個部門都有2到3輪面試,總計約為12次面試,到後來我已經快暈了,看到百度的電話就害怕,由於面試次數太多,有時候發揮確實也不是很好,我也沒有特別在意,只當是在鍛煉自己了。

百度的面試難度每個部門不一樣,但是每次面試必寫演算法題,一寫演算法題,時間至少就是一個小時以上,每次面試完都有一種身體被掏空的感覺。

經歷了百度面試的摧殘以後,我手寫演算法的速度也變快了,很多坑也被我填上了。接下來面對騰訊的面試,我也是既激動又擔心,騰訊的面試難度比較大,對於操作系統和網路的知識喜歡深挖,問的東西也很有深度,面完前三面以後,第四面拖了3周才進行。當時三面面試官對我的評價比較好,也讓我信心爆棚了好久。

在等待騰訊終面的期間,我參加了今日頭條的面試,當時有幸拿到了一個白金碼,免去筆試,事實證明白金碼作用真的很大。頭條的面試難度和騰訊差不多,三輪面試,同樣需要寫各種演算法,由於是視頻面試,我可以清楚地看到,頭條的面試官真的非常高冷啊。面完頭條我的第一感覺就是應該掛了吧。沒想到最後還是給了offer。

結束這幾家大廠的面試之後,我覺得我的秋招已經接近尾聲了,不過由於之前投的比較多,所以我又面了幾家大公司,如網易,華為,快手等。到9月上旬的時候,我接連收到了bat和頭條,網易的意向書,阿里最早,騰訊最晚,每收到一封意向書我都很開心,沒想到最後我真的可以集齊bat等大廠的offer。

9月以後,除了偶爾和同學做幾場大廠的筆試,我基本就佛繫了。直到後來一些外企例如亞馬遜,大摩開始筆試面試,我才又重新回到了狀態。

截止目前,我基本上把該拒絕的offer都拒絕了,綜合各方面因素的考慮,最後應該會簽阿里,原因是部門是我自己喜歡的,同時給的評級也比較高。雖然騰訊也給了sp,但是最後還是忍痛割愛啦。至於百度和頭條,給的offer並不是很令人滿意,所以就沒有考慮了

至此,我的秋招之旅總算圓滿結束。

八.筆試經驗

提前批的筆試其實不是很多,我參加了網易,網易遊戲,拼多多等公司的筆試,應該都是低分飄過。

我的演算法基礎比較一般,讀研之前0基礎,所以這方面學的比較艱辛,分享一些我的筆試準備經驗。

1 .打好數據結構和演算法基礎

2 .先易後難,看一些基礎的演算法書籍

3 劍指offer刷起來,兩到三遍,做到胸有成竹

4 .刷個200題左右,記得二刷,做好總結。

5 做其他公司的歷年真題,熟悉題型,保持手感。

九.面試經驗

面試主要考的還是你的基礎知識,主要需要你對全局上有個很好的把握

我個人也總結了一些面試方面的經驗,主要是一些技巧。

1 做好自我介紹和項目總結,把握你發言的主動權

2 搞清楚簡歷上的技術點,兵來將擋水來土掩

3 注意分點答題,思路清晰,也更容易講清楚原理。

4 壓力面下保持冷靜,不要回懟面試官

5 HR面試注意常用技巧,可以提前準備。

十.學習資源分享

這幾年的Android開發是時間裡,接觸過很多的資料,網站和課程,也走過不少彎路,所以在這裡也總結一些比較好的資源推薦給大家

首先是平臺

  1. CSDN和博客園,主流的技術交流平臺,雖然廣告越打越多了,但是還是有很多不錯的博文的。
  2. segmentfault,有點像國內的Stack Overflow,適合交流代碼問題的地方。
  3. 掘金,一個很有極客範的技術社區,強推,有很多技術大牛分享優質文章。
  4. 開發者頭條,一個整合優質技術博客的社區,裡面基本上都是精選的高質量博文,適合技術學習提升。
  5. v2ex,一個極客社區,除了交流技術以外還會有很多和程序員生活相關的話題分享。
  6. 知乎.這個就不必多說了。
  7. 簡書

簡書上有些技術文章也很不錯,有空大家也可以去看看。

8.Github

有一些GitHub的項目還是非常不錯的,其中也有倉庫會分享技術文章。

還有我自己最近整理的一些資料。需要的同學可以找我領取

領取地址:Android架構進階學習資源資料免費獲取

人的一生需要不斷的修行,剛剛闖過了一關又馬上要迎接下一輪挑戰,你不能停下腳步,畢竟大家都在往前走。

希望還在求職路上的各位少俠好好加油,在未來也能夠順利地拿到自己想要的offer!

推薦閱讀:

相關文章