職位類型:技術類實習生
面試時間:2014年4月
招聘公司:網易
網上投簡歷:樓主以前的簡歷寫的是精通SDK、精通C++、精通數學基礎,后來低調了許多,寫成熟練掌握。當然,樓主以前的代碼行數超過20W,sdk寫了四年,C++寫了六年,這些是實在的數據。簡歷寫得比較實在,結果過了。
一面:一面面的是C++和算法。
面試官首先問你用過Directx,那么,你會渲染管線么。我說不會,以前只用過一個低版本的Directx,當時做的時候就是往顯卡里面寫數據。面試官說沒事,我只是問一下而已。然后是C++,主要是一些概念和語法,比如:引用和指針有什么區別與聯系,還有,sizeof對指針和引用的結果有什么不同,還有,sizeof指針的結果是多少,extern有什么用,模板特化是什么。其它還有許多,我不記得了,反正我覺得蠻簡單。
算法有兩個題目,各分兩個小題。
第一個是最大子列和,我速度說了是動態規劃。然后他問如果數改成復數,和改成模呢?我想了一會,說暴力可以。面試官不太滿意,說你再想想,我說我不知道了。面試官又說,你考慮一下幾何意義,我當時真是醍醐灌頂,立刻回答了,復數的幾何意義是點,模的幾何意義是長度,這個題目等價于平面n個點求最長點對。面試官說對的,那如何解呢,我說,最長點對在凸包上,求出即可,面試官問,復雜度多少,我說O(nlog n)------其實不用求凸包的,最長點對中的一個點顯然要么x最大,要么y最大,要么x最小,要么y最小,滿足這四個條件中的一個的點最多常數個,暴力一個,O(n)完事。
第二個題目是概率的,你現在有一個函數F(),只能返回0-1之間的隨機實數,你如何利用F(),使得以P(1)概率返回1,P(2)返回2…P(n)返回n,樓主想了一會,說調用一次F(),如果小于P(1)就返回1,否則小于P(1) P(2)返回2,否則小于P(1) P(2) P(3)返回3…這樣就行了。面試官問,這樣復雜度多少,我說O(n),面試官說如何優化呢,我說可以用huffman樹優化,其實if else連對應于二叉樹,這個是帶權值的最短葉長度,果斷huffman,然后它問了,復雜度多少,我說您指的是構造huffman編碼的復雜度么,它說不是,假設那些預處理已經好了,我說那么就是O(lg n),即二叉樹的平均深度(其實應該比這個小,但是,具體值肯定與P序列有關,但是,這么答肯定是對的),然后面試官說我們面試到這里結束了。面試完,樓主知道肯定過了。
二面:
二面上來先是讓手寫代碼,樓主就會寫程序,果斷秒掉,然后等著面試。面試分四個部分。
第一部分,算法題目。給你一個m*n的矩陣,求其中有多少個子矩陣的和為k,樓主看了一下,問:這個矩陣的數字有什么特點么,面試官答,沒任何特點,只是數而已。我問,全是正的么,答,不是。樓主想了10秒,說了兩個字,暴力枚舉。面試官問,如何暴力,樓主答,暴力出左上和右下兩個點,然后算和就行,面試官問,如何算何,樓主答,先對原矩陣做一個預處理,第(I,j)位置的數寫成(0,0)->(I,j)的和,然后暴力左上,右下兩個點的時候可以在O(1)算出和,總的復雜度O(m*m*n*n),面試官沒說話了。樓主知道pass。
第二部分,智力題。網上有,樓主當時沒想出來,主要是中午沒吃飯(喝了一點湯),然后頭也暈(我2.9分到的,2.10分開始筆試手寫代碼),心態比較不好,沒做出來。這一部分算掛了。
第三部分:簡歷問。看到我寫的我寫了一個STL,面試官問,你的vector的push_back如何寫的(你先不考慮allocator),樓主知道一般是直接放,如果滿了,就分配兩倍的空間,然后說了一通,面試官不滿意,說,分配兩個空間的代碼寫成Type* buf= newType[size*2],這樣的話,有size-1 個位置其實沒有對象,可是你還是給它分配了,還調用了構造函數了,這如何解決?樓主當時誤解了意思,說,你不分配2倍,下次如果再push_back,你還得再分配,面試管繼續解釋,不過,越解釋越糊涂,我后來算是明白了,原來 是placement new,我說,構造函數調用其實是多余的,不需要調用,可以直接寫成void* buf= new char[sizeof(Type)*size*2];,然后copy對象的時候用placement new去干,面試官又問placement new 的語法,樓主說了,面試官沒說什么。這也算過了吧
第四部分:聊天。問我玩游戲么、玩什么游戲,我說玩war3 &&dota;問玩什么英雄,我說dota里面玩猴子、SPE、火槍、PA、一姐。然后問我有被針對的時候么,我就說了幾個。又問,你說說你影響比較深刻的幾把。我說選了兩個例子說,第一個講完加了句“這一把讓我明白了不要輕意放棄”;第二個講完加了句“這比賽讓我明白團結對于一個團隊特別地重要”。面試官又問,你覺得你是dota里面哪個英雄?我回答,一姐,如果團隊不需要我的時候,我會默默地farm(學習,干活),如果需要我,我會擔當起輸出的重任,挑起團隊的大梁,帶領團隊走向勝利。
最后面試官問,你有什么問題想問我的嗎。我就問了兩個,一個是聽說有導師帶,還有項目,我想問下下,項目和以后工作有什么關系,第二個是廣州和杭州有什么關系和區別。面試官很耐心地回答了十多分鐘,我一直認真地聽著,然后說了一句,謝謝您,走出了面試場地。
當時我心情很不好,因為智力題沒做出來。我以為掛了,沒想到后來收到了offer,感覺很幸運,在這也祝大家好運吧!