想要成為大牛應該做到以下幾點

Java小鋪發表於2018-08-19

1 前言

王鏡鑫是山東大學軟工專業大三學生,學校ING工作室後臺組組長,工作黨,參加了18年實習生春招,在三週的時間內"收割"了三家大廠的Offer:美團、百度和阿里巴巴, 最後選擇了心儀的阿里。

聯想到近期我接觸到的幾位優秀年輕人,我覺得他們都有一個共同的特質:確定目標,並且全力以赴地朝目標前行。說起來簡單,做起來真不容易。人和人之間的差距也許就是這麼形成的吧!

友情提示: 文章長達萬字,我打賭你看不完,但我決定還是全發出來,想關注學習歷程可以重點看前半部分, 想了解大廠面試的請看後半部分。但是最後的總結一定要看。

2 高中:劍走偏鋒

高中第一學期的大型考試,我的成績都在倒數10名左右,最好的結果只是一個好點的一本。 我有點兒不甘心,後來出現了一個機會,可以參加數學、物理和資訊學競賽(簡稱OI),獲得加分甚至保送。我動起了心思, 數學物理不用想了,很多人從小就開始學,競爭極為激烈。 我初中的時候接觸過一段時間的程式設計(hello world那種的),所以對計算機特別感興趣,就這樣,劍走偏鋒,瞄準了OI。

但是學習OI是需要大量時間和精力的,如果我繼續堅持,就意味著會減少文化課的學習時間,更糟糕的是,高考不考計算機,所以,如果學到最後卻沒有獎,一切努力將付諸東流。

但是如果我選擇放棄,沒準可以考一個好點的一本,甚至邊緣的211,但是如果我繼續堅持,最後要麼上一個普通一本,甚至二本,要麼去更好的985。擺在我面前兩條路,該怎麼取捨?

當你看到一開始滿滿一屋子的同好,一個一個離開這間教室,你心裡是很容易動搖的,但是我知道,如果我不這樣做,我極大概率會一直平庸下去,所以,為了未來,搏一把!

OI培訓是很痛苦的,沒有寒暑假,國慶節是最長的假期。平時就是日復一日的模擬賽,討論題目,有時候一個題目,幾天沒有思路,我記得最讓我難過的一次,剛剛月考結束,考了倒數第16,沒敢叫我爸來開家長會,競賽這邊,剛剛的模擬比賽一道題都沒有AC(通過所有測試點),被老師狠狠地批評了一頓,後來班主任給我爸打電話組織了三方會談,看著我爸恨鐵不成鋼的眼神,真想找個地方大哭一場。

好在最後終於堅持了下來,熬過了最痛苦的時期,最後終於拿到了省一等獎(可以拿到普通985的降一本線加分資格了)。最後查到自己高考分數剛剛過一本線15分的時候,我懸著的心終於放了下來,以往的努力總算是沒有白費。

3 大學的目標與迷茫

我本科專業是軟體工程,由於有OI的背景,有很多人問我,為什麼不去好好學學ACM? 拿到獎牌還可以保研。 這個問題我也問過我自己,其實原因很簡單,我不想繼續讀研,每個人都有自己的目標和追求,去工作,去大廠就是我的目標。

我認為儘早地確定一個目標非常重要,上了大學之後,很多人會開始迷茫,不知道接下來該幹什麼,畢了業該幹什麼,但是在我確定了目標之後,在其他人都還在觀望的時候,我已經開始向自己的目標進擊了。

但是進大廠是一個很虛幻的目標,到底該做什麼才能進大廠呢?我陷入了另一個迷茫,大一上學期我沒有加入任何的實驗室和組織,甚至學生會都沒有參加,並沒有人去告訴我應該學些什麼東西,怎麼樣才能“進大廠”。

“但是,總得學些東西,不能一直這樣浪費時間啊。”我告訴自己。

我們大一的時候有Java課,既然如此,那麼索性好好研究一下Java吧。於是除了平時上課,我把其餘的時間基本都花在了學習Java上,寒假的時候,在家裡基本是足不出戶,下載了馬士兵的Java基礎教程,一節一節的看,在此期間我入坑了後臺,說起來也搞笑,我當時聽說過JS,也聽說過JSP,而且聽說JS特別有用,所以準備學一下JS,但是我不知道這是兩個東西,所以去網上查了“JSP教程”然後學了起來。就這樣稀裡糊塗的入坑了。

4 超級瑪麗:追求完美

大一下學期有個Java課程設計,自由選定題目,用Java實現,其他同學都選擇了坦克大戰,音樂播放器之類的,而我想與眾不同一些,選擇了自己實現超級瑪麗。

雖然看了很多Java教程,也看過馬士兵的坦克大戰教程,但是真到自己寫的時候,就一點頭緒都沒有了。

而且素材成了第一大難題,坦克大戰所需要的素材很少,坦克車不同方向的圖片,還有一些其他的圖片就可以了,但是超級瑪麗就比較複雜了,人物跑步動作,死亡動作,怪物的不同形態等,但是在網上找了許久,都沒有找到合適的,尤其是馬里奧的跑步動作,沒有動作會顯得特別僵硬,動作圖片少了也會不自然。

我從來沒想過放棄,因為我感覺,既然我比別人多學了這麼多,就應該做一些不同的東西,而且我對事物的完美程度有一種固執,做事情必須要達到我期望的最完美的狀態,尤其是對於自己的作品。

後來靈光一閃,找不到素材,就自己做啊。於是我上網找了一個畫面比較精美的馬里奧遊戲,然後錄屏,一幀一幀的播放視訊,把每一幀截下來,然後用ps摳圖,當時自己就是那麼的固執,一定要做到最好,一個超級瑪麗全身動作和一個食人花的出場動畫,我整整做了五個小時。這一整個月的時間,我把課外的所有時間和精力都花費在了這上面,有時候一旦決定去做一件事情,為其付出多少精力都不覺累。

最後一天,在我給遊戲加上開場動畫之後,做了最後一次完整的測試,大功告成!

整整一個月,一個我自己親手實現的超級瑪麗完成了,這一個月痛並快樂著只有我知道,那時候我是非常激動的,就像看到自己的孩子出生一樣。雖然現在來看,很多地方寫的不成熟,但是對於當時的我來說,這差不多是我的極限了。後來這個作品也在課設中取得了年級第一的成績。放到github上之後,也獲得了不少star。而且我感覺更重要的是,這個專案極大地鍛鍊了我的程式碼實現能力,鞏固了我的Java基礎。

5 瘋狂學習

然後就到了大學最重要的一段時間,學校各大實驗室的納新,我當即報名了ING工作室後臺組,工作室納新有門檻,先是進行面試,問一些基礎知識,然後複試是做專案,要求四天的時間,從零做一個貼吧出來。

我之前雖然看過一些後臺的知識,但是並沒有做過東西,也沒有看的特別仔細,之前主要把精力放到了JavaSE上。這對我來說也是一個不小的挑戰,最後經過四天不亞於做超級瑪麗的痛苦的折磨,終於完成了一個成品,交付的時候,不出所料,放棄的人不少,進入複試的有二十幾個,交付作品的時候就只有幾個了,最後,這一年納新只招了我一個。

加入工作室之後,就有人指導了,帶我的學長是13級的,後來他去美團工作了,14級的前輩都是PHP方向的,學長工作之後,就沒有人帶我了,好在他一開始就告訴了我要學什麼東西,從Java基礎到框架,到資料庫,到原始碼等等,我現在真的特別感謝當時努力的自己,也有對於成功的渴望,也有對於知識的渴求,一半是因為興趣,一半是因為前途。

當時在圖書館借了很多書,我習慣看紙質書,而且一般是多本書同時看,因為一本書看久了大腦就會變得消極,換一本書就相當於平時說的“換換腦子”,自己也十分努力,恨不得一天24小時有25個小時學習,最多的時候我記得同時看四本書,早上看《程式碼的未來》這種閒書,上午看《看透SpringMVC》,下午學習《深入理解Java虛擬機器》,晚上學《HTTP權威指南》。

6 基礎知識

大二下學期,17年4月的時候,學長學姐們開始找實習,我為了積累一波經驗,也跟著聽面試(電話面),看筆試題,結果發現了不得了的事情,我一直以為面試會問很多框架,問很多專案,結果發現我錯了,面試問的滿滿都是底層,都是基礎,都是演算法和資料結構。這時候我開始重新審視自己:

是否之前太重視上層框架用法的學習,忽視了底層的學習?

是否接了太多無意義的簡單外包?

是否演算法水平還在吃高中的老底,一直在退步?

想明白這兩個問題之後,我知道了,原來我自己走偏了,自己沉浸在接各種無意義的外包賺錢的喜悅中,卻沒有意識到,其實這些都是浮雲,我在最該向下紮根的時候,卻選擇了向上生長,而且長得都是葉子。

從那時起,我開始做一些轉變,推掉了大部分的外包專案,只接對自己有挑戰的外包。開始重視基礎的學習,底層的學習。

根據學長學姐們的面試情況,我發現資料結構是面試特別重視的,然而當時的自己演算法水平已經退化很厲害了,這一塊需要惡補,因為有些基礎,所以這時候我直接開始刷《演算法導論》(新手不建議直接上手這本書,推薦紅皮的《演算法(第四版)》),演算法導論這本書很注重數學證明和推導,比如構建二叉堆的時間複雜度,其他書上可能直接告訴你是線性的,但是這本書上會給你進行詳細的證明,所以刷這本書也讓我知道了很多演算法的“所以然”,刷書是一方面,另一方面就是刷題了,因為當時還有CCF考試,所以刷題是一舉兩得,刷題是一個持續的過程,貴在堅持。三天不刷手生是真的。

我的學習經歷,總結來說就是三個詞,方向,堅持和努力。其實真正有天賦的人並不多,我高中的一個學長,學了半年的競賽就能拿到全國決賽的銀牌,而我辛辛苦苦學了兩年多,才勉強有一個省一。我學長那樣的天才畢竟是少數人,大多數人都是普通人,而普通人的競爭對手,就是普通人,普通人之間的競爭方式,就是最簡單的競爭方式,誰能堅持,誰的努力程度更高,誰就能超過競爭對手。一旦認準一個目標,就要堅持不懈,而且在堅持的道路上,不能偏離了方向,要時刻不忘初心。

7 準備校招

我真正開始準備春招是17年放了寒假之後,寒假前,我手上還有一個外包,因為甲方時不時的要求導資料,所以放假後甲方不放人,讓我在學校先待一段時間,當然是有償的,但是過了不到一週,我爸給我打來電話,說我爺爺生病住院了,我弟弟也得了感冒要住院,然後我就連夜買火車票回了家,直接奔去了醫院。

醫院的條件很艱苦,沒有網,我跟我弟弟擠一張小病床,我爸在樓下陪護我爺爺,晚上根本睡不好,沒有條件,創造條件也要複習,於是用自己手機開熱點,把劍指offer上的題目刷完了,還刷了幾套往年程式設計題。一直到小年,家人們都出院了,在醫院的這段時間,所做的主要的事情就是刷題,和零碎的知識點複習,大概花了十天。

回家之後條件就好多了,大概可以每天保持14個小時的學習時間,複習資料就是網上的面經,牛客網上刷題(這一段時間刷題並不多),還有工作室學長給提供的資料。

這段時間我還沒有想投簡歷,我想的是等開學後統一投簡歷,結果在一月十八號的時候,阿里C部門主管給我發了個郵件,大意就是無意間逛到了我的github,問我畢業後是否考慮加入阿里,我當時喜出望外,超級瑪麗又給我帶來了驚喜。

但是後來我並沒有走C部門,而是走的我校友所在的T部門的內推。

開學後,大概是3.5號,又準備了一週之後,3.12開始投遞簡歷,都是內推。前後分別投了:阿里,百度,美團,騰訊,京東,網易,頭條,華為,鏈家。

3.12首先面的是美團,第一次面試,由於緊張和其他原因,面試表現不是很好。

8 美團一面

面試官:自我介紹一下

我:(所有的自我介紹都是一樣的套路)我是XXX,來自XXX大學,大學期間加入了ING工作室學習Java後臺,後來擔任了後臺組組長,做了不少專案,很希望加入XXX公司。

面試官:介紹下專案

我:(一個人的命運,不僅靠個人的努力,還得看歷史的程式,我在所有的面試中,著重介紹的專案就是我寒假前的那個外包,因為這個外包,的確是我做過的含金量最高的一個專案了,而且這個外包在我們工作室歷年接的外包專案中都是少見的,可遇不可求的高含金量專案,我自認為這個專案給了我很大的優勢,這個專案是一個分類管理系統,對近200萬的結構化資料進行分類篩查,分類依據是多元化的,主要是資料的一個欄位和類別關鍵字的匹配程度,還需要做匹配度的量化排名,而且甲方要求嚴格,隨機抽查樣本,正確率必須達到95%以上,還要支援複雜條件的快速查詢,優化分類過程,所以很考驗演算法能力,和資料庫優化能力)XXX專案是XXX委託的一個外包,實現了XXX。

面試官:那我們聊一聊elasticsearch吧,說說倒排索引是怎麼回事。

我:(上面介紹專案只說了專案的內容,以及實現方法,我自認為面試官會直接問專案亮點,這時候我再把準備好的兩個難點,一個是量化匹配度演算法,一個是資料庫設計和優化一說,就完美了,結果面試官不按套路出牌,沒有問難點和亮點,直接讓聊一聊elasticsearch,還問了個我不會的東西)這個沒有了解過。(出師不利,第一個題就給難住了)

接下來就是一些Elasticsearch相關的東西了,TF/IDF演算法,分詞器等,因為我簡歷裡寫了會用es,所以這幾家公司都著重問了es,寫在簡歷裡的東西,一定要慎重,一定要保證真的會,真的懂。

然後就開始問Java基礎,比如:hashmap的原理、原子類、volatile等。這類問題,回答的細節越多越好,只要你還有話講,面試官就基本不會打斷你,除非他認為你說的足夠好了,一定要極力向面試官表現自己。

面試官:說說lru是怎麼實現的吧。

我:(懵逼了,只知道這是採用拋棄最近最少使用的快取策略的一種快取失效演算法,怎麼實現的真沒了解過,然後自己臨時想了個O(logn)的演算法,用二叉堆實現,其實這個實現不是lru,是錯誤的,因為我理解錯了lru。然後面試官可能沒聽出來我理解錯了,只聽了我說這個複雜度是log級,然後就說這個有一個常數級的實現方法,我就不知道了)

下面就是資料庫的一些問題,比如:說說MySQL中的鎖,死鎖,聚簇索引加鎖和二級索引加鎖有什麼區別

這種題目,比如第一個,一定要把你知道的所有的資料庫中的鎖說出來,各種鎖的作用,原理等,把自己知道的都說出來,還是那句話一定要極力向面試官表現自己。如果碰到自己不會的,比如第三個題目就不會,也要說出自己的思考,總比什麼都不說要強。

面試官:說一下自己還有哪些專案值得說的?

這個問題非常重要,就相當於面試官給了你一次機會讓你自由發揮展示自己的亮點。回答得好可以力挽狂瀾。於是我就回答的超級瑪麗那個專案。

至此,美團一面結束,面了大概28分鐘(這麼短),第一次面試感覺發揮的並不是很好,很多東西沒有發揮出來,也有不少的問題沒有答上來,難度感覺中等。

9 百度一面

百度一面平淡無奇,問的都很基礎Java中的資料結構,粘包拆包問題,設計模式,鎖,Spring等等。

這裡我感覺有個經驗可以分享,因為百度一面沒有讓我介紹專案,所以非常心有不甘,這麼大一個亮點說不出口,所以我就一直嘗試引導面試官,終於在一個問題上被我抓住了機會。

面試官:說說資料庫的設計和優化

關於資料庫設計優化,這個正是我的專案中的一個難點,然後我就試探了一下,問了問能不能結合專案說,面試官同意了。還有後面面試官問了Elasticsearch,我又結合專案,把專案的另一個難點講了一下,至此,專案兩個亮點都表達出來了,因此,引導面試官到你擅長的領域是特別重要的。

百度一面結束,大概是47分鐘,總體表現還可以,面試難度屬於簡單模式。

10 阿里一面:最難的一次

這次面試是我今年春招所有面試中最難的一次,面哭了都快。

先是常規的自我介紹和專案介紹,原以為接下來就是問一些基礎,可沒想到阿里面試官不按套路出牌。繼續接著專案問了下去。

面試官:你這個專案,我把資料量擴大100倍,並且放到網際網路上,併發量變得更高了,怎麼解決?

我:(100倍?本來就是200w左右,擴大100倍就是兩億資料,而且還要變成一個網際網路應用,專案本來併發量不高,甲方只要求2000左右,一上來就問這麼難的問題,這下可咋辦)對於大資料量,應該進行資料拆分,這個專案如果拆分的話,最好的辦法是通過不同的查詢條件進行拆分(專案中查詢是根據不同的查詢條件去不同的表裡查詢的,所以這種的有天然的劃分方式)

(還沒等我說完)

面試官:你這樣是假設所有的查詢是平均分佈到不同的領域的,萬一有熱點資料怎麼辦,比如有80%的查詢條件命中了同一臺機器呢。

我:分佈不均勻可以做一個Redis叢集,用來分流。我們這個專案是改動比較少,查詢較多的應用。所以用Redis價效比是很高的。

面試官:你這個專案是不會經常改動的,但是最終還是會改動的,如果改動的話怎麼保證資料的一致性?

我:(還是從這個專案本身的需求出發)這個專案資料改動的時候是某個時間段集中大規模改動的,所以改動是有特定的時間段維護的,在維護的時候,我們不允許訪問。

面試官:(完全改了需求)假設你這個就是特別頻繁改動呢?

我:(至此,我這個簡單的專案被面試官擴充套件成了一個高併發,大資料量,改動頻繁的網際網路專案,現如今的問題主要集中在如何保證資料一致性)頻繁改動如果保證一致性的話,可以使用nwr模型。

面試官:用這個方法,可擴充套件性不高,而且還需要在程式碼中感知網路拓撲,因為我們這個是廉價儲存,所以機器可能會當機,機器數量會經常變化,而且我們現在叢集是異地的,而且不想新增感知網路拓撲的程式碼,有沒有別的方法。

我:這樣的話,根據CAP理論,是不可能保證強一致性,除非犧牲可用性。否則只能保證最終一致性。

面試官;但是我們是需要保證強一致性的,因為付款之類的如果有延遲的話,使用者財務不就有損失了,那怎麼辦?

我:(徹底懵逼)犧牲可用性?沒有其他的好方法了。

面試官安慰:沒事,你現在的這個方案,對於你現在的這個應用場景是ok的,好,那再聊聊別的。

這一段應該是我面試過程中非常難受的一段了,面試官不斷的改動需求,問解決方案,最後更是觸及到了我的知識盲區,這也是面試官不斷去試探我的極限,一看就是很有經驗的面試官。接下來問了一些基礎問題,執行緒,併發等等。然後就到了jvm這裡了。

從JVM的記憶體模型開始,沒想到這又是一個噩夢,面試官一個問題接著一個問題,不停地追問:如何對老年代進行優化,有哪些引數可以解決碎片問題,有哪些方案可以減少GC停頓......

這一段是我這次面試中第二難受的地方,這個也反映出了我平時的積累不夠。所以一定要重視平時的積累,多思考。如果我平時去思考過這個問題,或者看的東西足夠多,那麼肯定不會回答成這個樣子。然後問了個演算法題,約瑟夫問題。最後問了問框架原始碼。

至此,阿里一面結束,一共面了77分鐘,我一度感覺自己應該是涼了,現在只有這次的超長面試時間能安慰我:一般涼了的不會跟你聊這麼久的,所以內心還是有報一絲希望,這次面試難度等級自認為是很高的,而且出現了很多失誤。

11 百度二面三面

百度二面也是平淡無奇,問的都特別基礎,es,sql,jvm,aop等等,值得注意的是,百度也問了一個經典演算法題

面試官:兩個檔案,儲存著int(32)型別的數值,都是10G,給你8G記憶體,怎麼求兩個檔案的交集?

這是一個典型的bitmap問題,512M空間即可解決。這裡還有一個擴充套件,如果統計出現次數是三次或者以上的數字,應該怎麼做呢?讀者可以自己考慮一下。

百度大概是48分鐘,主要是探討了做的專案,48分鐘中,跟面試官聊專案就用了半小時,因為可聊的東西還是挺多的。面試難度簡單。

過了四天,百度打來電話,約了三面,三面是半hr面半技術面,面試時間大概是40分鐘,主要問了家庭背景,學習情況,學習方法,為什麼想來百度等非技術性的知識,技術性的還是聊了聊專案,然後就給了口頭offer。

12 阿里二三面

阿里二面就比一面簡單多了,自我介紹,專案,然後就開始問演算法,如AVL樹, 最短路徑演算法。

這兩個問題,計算機科班出身的肯定都會,那麼大家都會你就沒有了亮點,和別人不一樣,面試官才會記住你。

因為之前刷過演算法導論(感謝當時自己的努力),所以這個地方我可回答的就很多了,avl樹這一部分從avl樹聊到紅黑樹。最短路這部分,Floyd,bellman-ford,spfa,dijkstra,不僅說出了演算法描述,而且說了其中的原理,正確性分析,各自的侷限性,互相之間的關係,然後有對這幾種演算法的本質的考慮,以及優化方案等等。一定要讓自己和別人不一樣,這樣才能給人留下深刻印象。

接下來還是基礎,鎖,泛型,設計模式,map等等,最後面試官還問有沒有沒有問到的亮點,說的超級瑪麗。

阿里二面的面試官沒有像第一個面試官那樣一直追問下去,問的題目也是很基礎,難度遠小於阿里一面,大概是中等難度

阿里二面五分鐘後,立馬又打來了電話,是三面hr面,聊了大概20分鐘,家庭,生活,學習,專案,大學的經歷,實習時間(感覺有些穩了)

13 美團二面

過了幾天,3月27號晚上,美團打來電話約了二面,這次面試難度還是相對高一些的。

先是自我介紹,然後專案,接下來直接問了兩個演算法題

面試官:怎麼使用es來對面試者進行分類。

我:這是一個聚類問題,首先對面試者進行資訊採集,然後進行資料清洗,標準化處理等,然後可以使用kmeans等無監督學習演算法進行聚類,es用來計算兩個面試者的相似性,對於面試者的技術棧,自我評價等非結構化資料,可以看做文字,用es進行匹配,來計算二者的距離,最後計算綜合相似度(這個我也說不準這樣可不可以,但是這好歹是個思路)

面試官:現在有若干借貸者,若干投資者,求一種最優的匹配策略。

我:(這個問題需要先考慮什麼算是最優,最後和麵試官探討的結果是,儘量較少使用投資者,儘量動用資產少的投資者的錢,這樣的話,這個問題可以看作是一個布林揹包問題的變形,對每個投資者,進行一次揹包,看看哪一個可以容納得下最多的借貸者,然後容納同樣多的就使用資產少的,然後將這個投資者和他所容納的借貸者去掉,對剩下的借貸者和投資者再次進行dp,直到所有的借貸者都被包含。這個是一個貪心的思想,並沒有證明是否真的能取到最優解,但是絕對是可以取得到近似最優解)

由此可見,資料結構和演算法真的是非常非常重要,一定要刷題,刷題,刷題。接下來就是一些基礎了。

美團二面結束,大概51分鐘,難度中等偏上,這次是主管面的,問的演算法較多。

14 阿里四面

3月27號當天白天,阿里打來電話約四面,這次是視訊面,提前說了需要手寫程式碼。加了面試官的微訊號。

3月28號下午阿里四面,這次面試難度中等偏上。

一開始還是那些東西,介紹,專案,redis等等。中間還問了個分詞演算法這個還真不知道,於是就說了一下大概的思路,最後上網查了查,方法很多,什麼隱馬爾科夫模型啥的,後來上課學了一些皮毛。

這裡值得注意的是,面試官又問了倒排索引,美團一面也問了這個,當時不會,過後查了查,現在正好又問到,所以,要把每一次面試都當成查漏補缺的機會,不會的問題過後一定要弄明白。

接下來就是傳說中的手寫演算法題了:

N個球隊,每個球隊有一個球隊的水平,水平是個整數,設計一個函式,每次呼叫函式,隨機取出一個球隊,要求,取出的球隊的分佈情況和球隊水平成正比。

這個題目不算難,主要是考慮怎麼利用現有的產生均勻分佈隨機數的random函式,對映成和球隊水平相關的隨機數,這個可以用幾何概型的思路,把球隊的水平,抽象為線段,線段的長度就是球隊水平,水平越高,線段越長,所有的球隊的水平總和,即為整個線段的長度,每次從線段上隨機取一個點,判斷這個點屬於哪一段,那麼這次取出的就是這個球隊,這樣就達到了題目說的要求,思路有了,關鍵是怎麼設計資料結構。我想到兩種思路,分別在時間和空間上有優勢,具體的細節就不再介紹了。

阿里四面大概是50分鐘,這一面難度中等偏上,也有一些沒有答上來的題目,但是最後的演算法題回答的還是不錯的。

接下里的幾天陸續有美團的三面和四面,阿里的五面。基本上都是聊家庭,大學經歷,發展規劃,還問到了女朋友,以及打不打遊戲的問題,還談了實習時間和薪資。

4月3號,美團打來電話,發了口頭offer。

4月5號晚,阿里發來簡訊,說已經發了意向書,然後我立馬下床開啟電腦點了接受。然後撤掉了還沒有面試的其他所有簡歷。後來我才知道今年阿里T部門對實習生要求比之前提高了一個檔次,只要A和以上的,真是無知者無畏,如果我早就知道這個訊息,為了穩妥,我可能就不走T部門的內推了。

至此,我的春招實習完全結束,最後拿到了三份offer。

自己對結果還算比較滿意,但是沒有參加騰訊的面試還是比較遺憾的,雖然後來也邀請我面試了,但是還是拒絕了,因為已經有了心儀公司的offer,驚心動魄的春招已結束,就不去浪費其他公司的面試資源了。

對於春招,雖然一開始準備的時候,家裡遇到了突發狀況,有一些小插曲,但是總體來說還是比較順利的,但是就面試表現來看,我感覺自己還是有提升空間的。

15 校招面試總結

  1. 從面試題目來看,大廠校招還是看重基礎的,三個公司一共七次技術面,其中有六次涉及到了資料結構和演算法。所以,一定要重視學科基礎,基礎不牢,地動山搖。

  2. 面試準備一定要儘早,刷題更是要儘早,不妨現在就開始,leetcode,codeforces,多刷題總沒壞處。

  3. 一定要主動向面試官表現自己,有時候面試官可能不會去深入問,但是你自己去深入的介紹,面試官一般不會打斷你,如果你懂的很深,但是隻是簡單的說了說,面試官又沒繼續問下去,這樣就很難受了。

  4. 對於不會的東西,一定別胡謅,但是也不能不說,不會也要自己去擴充套件,延伸,說出自己的心路歷程。比如面試官問A,我不會,但是我知道跟A很相近的B,我說一下B問題的思路,總比什麼都不說強。

  5. Github要用起來,經常往上放一些東西是很有用的,參考C部門主管內推的例子。

  6. 基本上每一面面試官都會問你有沒有什麼要問他的,一句話,一定要表現出來你熱愛學習,熱愛技術,渴望成長,可以問一些比如”對我以後的發展提一些建議“或者”公司培養新人的模式“此類問題。

  7. 面試過程中即使感覺自己前面表現不是很好,也別放棄,一定要全程保持冷靜,保持積極,參考阿里一面。

  8. 平時如果接外包專案,一定要接有質量的,一些無新意無挑戰無難度的外包,除了能賺些錢就是浪費時間了,大學生的時間很寶貴,不要把時間浪費在賺小錢上。

  9. 學習一定要深入,不能淺嘗輒止,會100種語言的hello world是沒有用的,尤其是在校生,對技術鑽研的深度比廣度更重要(當然前提是廣度不能過於狹窄,需要自己權衡),灌木叢是永遠無法成材的。

  10. 面試也看緣分,即使沒有通過面試,也別放棄,吸取經驗教訓,再接再厲。

在這裡順便給大家推薦一個架構交流群:617434785,裡面會分享一些資深架構師錄製的視訊錄影:有Spring,MyBatis,Netty原始碼分析,高併發、高效能、分散式、微服務架構的原理,JVM效能優化這些成為架構師必備的知識體系。還能領取免費的學習資源。相信對於已經工作和遇到技術瓶頸的碼友,在這個群裡會有你需要的內容。

相關文章