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

1 前言

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

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

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

2 高中:劍走偏鋒

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

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

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

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

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

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

3?大學的目標與迷茫

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

我認為盡早地確定一個目標非常重要,上了大學之后,很多人會開始迷茫,不知道接下來該干什么,畢了業(yè)該干什么,但是在我確定了目標之后,在其他人都還在觀望的時候,我已經(jīng)開始向自己的目標進擊了。

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

“但是,總得學些東西,不能一直這樣浪費時間啊?!蔽腋嬖V自己。

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

4?超級瑪麗:追求完美

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

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

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

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

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

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

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

5?瘋狂學習

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

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

加入工作室之后,就有人指導了,帶我的學長是13級的,后來他去美團工作了,14級的前輩都是PHP方向的,學長工作之后,就沒有人帶我了,好在他一開始就告訴了我要學什么東西,從Java基礎(chǔ)到框架,到數(shù)據(jù)庫,到源碼等等,我現(xiàn)在真的特別感謝當時努力的自己,也有對于成功的渴望,也有對于知識的渴求,一半是因為興趣,一半是因為前途。

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

6?基礎(chǔ)知識

大二下學期,17年4月的時候,學長學姐們開始找實習,我為了積累一波經(jīng)驗,也跟著聽面試(電話面),看筆試題,結(jié)果發(fā)現(xiàn)了不得了的事情,我一直以為面試會問很多框架,問很多項目,結(jié)果發(fā)現(xiàn)我錯了,面試問的滿滿都是底層,都是基礎(chǔ),都是算法和數(shù)據(jù)結(jié)構(gòu)。這時候我開始重新審視自己:

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

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

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

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

從那時起,我開始做一些轉(zhuǎn)變,推掉了大部分的外包項目,只接對自己有挑戰(zhàn)的外包。開始重視基礎(chǔ)的學習,底層的學習。

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

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

7?準備校招

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

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

回家之后條件就好多了,大概可以每天保持14個小時的學習時間,復習資料就是網(wǎng)上的面經(jīng),??途W(wǎng)上刷題(這一段時間刷題并不多),還有工作室學長給提供的資料。

這段時間我還沒有想投簡歷,我想的是等開學后統(tǒng)一投簡歷,結(jié)果在一月十八號的時候,阿里C部門主管給我發(fā)了個郵件,大意就是無意間逛到了我的github,問我畢業(yè)后是否考慮加入阿里,我當時喜出望外,超級瑪麗又給我?guī)砹梭@喜。

但是后來我并沒有走C部門,而是走的我校友所在的T部門的內(nèi)推。

開學后,大概是3.5號,又準備了一周之后,3.12開始投遞簡歷,都是內(nèi)推。前后分別投了:阿里,百度,美團,騰訊,京東,網(wǎng)易,頭條,華為,鏈家。

3.12首先面的是美團,第一次面試,由于緊張和其他原因,面試表現(xiàn)不是很好。

8?美團一面

面試官:自我介紹一下

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

面試官:介紹下項目

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

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

我:(上面介紹項目只說了項目的內(nèi)容,以及實現(xiàn)方法,我自認為面試官會直接問項目亮點,這時候我再把準備好的兩個難點,一個是量化匹配度算法,一個是數(shù)據(jù)庫設(shè)計和優(yōu)化一說,就完美了,結(jié)果面試官不按套路出牌,沒有問難點和亮點,直接讓聊一聊elasticsearch,還問了個我不會的東西)這個沒有了解過。(出師不利,第一個題就給難住了)

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

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

面試官:說說lru是怎么實現(xiàn)的吧。

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

下面就是數(shù)據(jù)庫的一些問題,比如:說說MySQL中的鎖,死鎖,聚簇索引加鎖和二級索引加鎖有什么區(qū)別

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

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

這個問題非常重要,就相當于面試官給了你一次機會讓你自由發(fā)揮展示自己的亮點?;卮鸬煤每梢粤ν炜駷?。于是我就回答的超級瑪麗那個項目。

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

9?百度一面

百度一面平淡無奇,問的都很基礎(chǔ)Java中的數(shù)據(jù)結(jié)構(gòu),粘包拆包問題,設(shè)計模式,鎖,Spring等等。

這里我感覺有個經(jīng)驗可以分享,因為百度一面沒有讓我介紹項目,所以非常心有不甘,這么大一個亮點說不出口,所以我就一直嘗試引導面試官,終于在一個問題上被我抓住了機會。

面試官:說說數(shù)據(jù)庫的設(shè)計和優(yōu)化

關(guān)于數(shù)據(jù)庫設(shè)計優(yōu)化,這個正是我的項目中的一個難點,然后我就試探了一下,問了問能不能結(jié)合項目說,面試官同意了。還有后面面試官問了Elasticsearch,我又結(jié)合項目,把項目的另一個難點講了一下,至此,項目兩個亮點都表達出來了,因此,引導面試官到你擅長的領(lǐng)域是特別重要的。

百度一面結(jié)束,大概是47分鐘,總體表現(xiàn)還可以,面試難度屬于簡單模式。

10 阿里一面:最難的一次

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

先是常規(guī)的自我介紹和項目介紹,原以為接下來就是問一些基礎(chǔ),可沒想到阿里面試官不按套路出牌。繼續(xù)接著項目問了下去。

面試官:你這個項目,我把數(shù)據(jù)量擴大100倍,并且放到互聯(lián)網(wǎng)上,并發(fā)量變得更高了,怎么解決?

我:(100倍?本來就是200w左右,擴大100倍就是兩億數(shù)據(jù),而且還要變成一個互聯(lián)網(wǎng)應用,項目本來并發(fā)量不高,甲方只要求2000左右,一上來就問這么難的問題,這下可咋辦)對于大數(shù)據(jù)量,應該進行數(shù)據(jù)拆分,這個項目如果拆分的話,最好的辦法是通過不同的查詢條件進行拆分(項目中查詢是根據(jù)不同的查詢條件去不同的表里查詢的,所以這種的有天然的劃分方式)

(還沒等我說完)

面試官:你這樣是假設(shè)所有的查詢是平均分布到不同的領(lǐng)域的,萬一有熱點數(shù)據(jù)怎么辦,比如有80%的查詢條件命中了同一臺機器呢。

我:分布不均勻可以做一個Redis集群,用來分流。我們這個項目是改動比較少,查詢較多的應用。所以用Redis性價比是很高的。

面試官:你這個項目是不會經(jīng)常改動的,但是最終還是會改動的,如果改動的話怎么保證數(shù)據(jù)的一致性?

我:(還是從這個項目本身的需求出發(fā))這個項目數(shù)據(jù)改動的時候是某個時間段集中大規(guī)模改動的,所以改動是有特定的時間段維護的,在維護的時候,我們不允許訪問。

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

我:(至此,我這個簡單的項目被面試官擴展成了一個高并發(fā),大數(shù)據(jù)量,改動頻繁的互聯(lián)網(wǎng)項目,現(xiàn)如今的問題主要集中在如何保證數(shù)據(jù)一致性)頻繁改動如果保證一致性的話,可以使用nwr模型。

面試官:用這個方法,可擴展性不高,而且還需要在代碼中感知網(wǎng)絡(luò)拓撲,因為我們這個是廉價存儲,所以機器可能會宕機,機器數(shù)量會經(jīng)常變化,而且我們現(xiàn)在集群是異地的,而且不想添加感知網(wǎng)絡(luò)拓撲的代碼,有沒有別的方法。

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

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

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

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

這一段應該是我面試過程中非常難受的一段了,面試官不斷的改動需求,問解決方案,最后更是觸及到了我的知識盲區(qū),這也是面試官不斷去試探我的極限,一看就是很有經(jīng)驗的面試官。接下來問了一些基礎(chǔ)問題,線程,并發(fā)等等。然后就到了jvm這里了。

從JVM的內(nèi)存模型開始,沒想到這又是一個噩夢,面試官一個問題接著一個問題,不停地追問:如何對老年代進行優(yōu)化,有哪些參數(shù)可以解決碎片問題,有哪些方案可以減少GC停頓......

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

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

11 百度二面三面

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

面試官:兩個文件,存儲著int(32)類型的數(shù)值,都是10G,給你8G內(nèi)存,怎么求兩個文件的交集?

這是一個典型的bitmap問題,512M空間即可解決。這里還有一個擴展,如果統(tǒng)計出現(xiàn)次數(shù)是三次或者以上的數(shù)字,應該怎么做呢?讀者可以自己考慮一下。

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

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

12?阿里二三面

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

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

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

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

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

阿里二面五分鐘后,立馬又打來了電話,是三面hr面,聊了大概20分鐘,家庭,生活,學習,項目,大學的經(jīng)歷,實習時間(感覺有些穩(wěn)了)

13 美團二面

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

先是自我介紹,然后項目,接下來直接問了兩個算法題

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

我:這是一個聚類問題,首先對面試者進行信息采集,然后進行數(shù)據(jù)清洗,標準化處理等,然后可以使用kmeans等無監(jiān)督學習算法進行聚類,es用來計算兩個面試者的相似性,對于面試者的技術(shù)棧,自我評價等非結(jié)構(gòu)化數(shù)據(jù),可以看做文本,用es進行匹配,來計算二者的距離,最后計算綜合相似度(這個我也說不準這樣可不可以,但是這好歹是個思路)

面試官:現(xiàn)在有若干借貸者,若干投資者,求一種最優(yōu)的匹配策略。

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

由此可見,數(shù)據(jù)結(jié)構(gòu)和算法真的是非常非常重要,一定要刷題,刷題,刷題。接下來就是一些基礎(chǔ)了。

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

14 阿里四面

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

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

一開始還是那些東西,介紹,項目,redis等等。中間還問了個分詞算法這個還真不知道,于是就說了一下大概的思路,最后上網(wǎng)查了查,方法很多,什么隱馬爾科夫模型啥的,后來上課學了一些皮毛。

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

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

N個球隊,每個球隊有一個球隊的水平,水平是個整數(shù),設(shè)計一個函數(shù),每次調(diào)用函數(shù),隨機取出一個球隊,要求,取出的球隊的分布情況和球隊水平成正比。

這個題目不算難,主要是考慮怎么利用現(xiàn)有的產(chǎn)生均勻分布隨機數(shù)的random函數(shù),映射成和球隊水平相關(guān)的隨機數(shù),這個可以用幾何概型的思路,把球隊的水平,抽象為線段,線段的長度就是球隊水平,水平越高,線段越長,所有的球隊的水平總和,即為整個線段的長度,每次從線段上隨機取一個點,判斷這個點屬于哪一段,那么這次取出的就是這個球隊,這樣就達到了題目說的要求,思路有了,關(guān)鍵是怎么設(shè)計數(shù)據(jù)結(jié)構(gòu)。我想到兩種思路,分別在時間和空間上有優(yōu)勢,具體的細節(jié)就不再介紹了。

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

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

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

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

至此,我的春招實習完全結(jié)束,最后拿到了三份offer。

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

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

15 校招面試總結(jié)

1. 從面試題目來看,大廠校招還是看重基礎(chǔ)的,三個公司一共七次技術(shù)面,其中有六次涉及到了數(shù)據(jù)結(jié)構(gòu)和算法。所以,定要重視學科基礎(chǔ),基礎(chǔ)不牢,地動山搖

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

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

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

5.?Github要用起來,經(jīng)常往上放一些東西是很有用的,參考C部門主管內(nèi)推的例子。

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

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

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

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

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

在這里順便給大家推薦一個架構(gòu)交流群:617434785,里面會分享一些資深架構(gòu)師錄制的視頻錄像:有Spring,MyBatis,Netty源碼分析,高并發(fā)、高性能、分布式、微服務(wù)架構(gòu)的原理,JVM性能優(yōu)化這些成為架構(gòu)師必備的知識體系。還能領(lǐng)取免費的學習資源。相信對于已經(jīng)工作和遇到技術(shù)瓶頸的碼友,在這個群里會有你需要的內(nèi)容。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在大人們的眼中,對一個乖小孩的定義為聽話不吵鬧不愛出風頭。而當我們犯錯的時候最長用的就是,你以為我們都看不到么?你...
    鄧小怪閱讀 718評論 0 1
  • 樂觀和悲觀是人生的兩種對立的態(tài)度,有人說樂觀的人更幸福,但是我要說,悲觀的人幸福感更強。 “世界本來就是糟糕一片、...
    若水Dewlight閱讀 345評論 0 0
  • 慧開禪師有一首偈,開頭兩句是:“春有百花秋有月,夏有涼風冬有雪;若無閑事掛心頭,便是人間好時節(jié)?!笔钦f世間的事皆是...
    鄧淼心閱讀 587評論 0 1
  • 藍天與烏云平分秋色 可是還是有一個哭了 我不知道天空落下的是誰的淚 不知道樹葉為什么會吵鬧 不知道鳥兒為什么害怕 ...
    此事無關(guān)風月閱讀 226評論 0 1

友情鏈接更多精彩內(nèi)容