微信、網易遊戲、金山西山居、人人offer及面經

才智咖 人氣:3.02W

01

微信、網易遊戲、金山西山居、人人offer及面經

一面

一上來丟了6個演算法題過來做,要四十分鐘的樣子搞定,單都是基礎演算法,什麼連結串列,二元樹之類的,其中的兩個字串的最大公共子串沒有較好的解決辦法。問key/value快取,它具體是如何實現的。瓶頸在哪,怎麼保證負載。後面問騰訊互娛後臺的負載均衡低耦合架構,這裡說的不是很好。問磁碟效率優化,如何做的優化,測磁碟資料怎麼測,通過什麼命令(top,iostat),iostat的引數如何去看,讀寫佇列,等待時間與服務時間的比例,空閒比例。編碼規範(命名規範,固定的括號樣式,函式註釋與關鍵註釋,異常說明,類的訪問控制規範)。問網路程式設計應該注意的地方(TCP和UDP取捨),問UDP實現可靠傳輸是如何實現的。是否做過測試,拿scp來做為對比的恰當性。問網路方面的除錯用到的命令,如tcpdump,lsof,netstat,問編譯器,如何實現的,是否考慮到中文編碼問題的解決。編譯器的實現流程。問檢視一個程序的執行情況的命令,top,/proc/pid/,問如何統計出函式的使用頻率,用valgrind。==。壓力較大的一次面。。

02

二面

二面總監面,自我介紹,之後問我做的最好的一個專案,說了編譯器,最後再叫我介紹個專案,說了UDP檔案上傳服務,問了UDP可靠傳輸的具體內容,好奇為什麼速度可以達到SCP的兩倍。問我本科為什麼沒寫什麼東西,答的不好。問平時讀什麼技術書籍,自己說linux核心詳解,我說記憶體,介紹了一遍,最後問記憶體這塊有什麼用到專案中的嗎,其實是沒有,但可以說的更好一些的,如可以說對動態記憶體的理解,執行緒建立實際的開銷在記憶體方面是有多大。說了檔案中的mmap,直接I/O。問三個優點,最大的缺點。。

03

三面

三面hr面,自我介紹,以後自我介紹儘量要充實點,問了拿到幾個offer,問了以後的工作意向,是否願意留廣州,問自己覺得做的最出色的一個專案,為什麼是最出色的,嗯,這點要多想想。

順利拿到offer~

面經

網易遊戲

遊戲研發工程師

01

筆試

這個要提下,總共三個小時的題量,而且題目都不簡單,前面30題的基礎題,每題一分,都不是好搞的。後面6個演算法題,涉及陣列靈活遍歷,演算法非遞迴實現,BNF,連結串列,圖,布隆過濾器等。大多是寫了一小問,難~(其實後面想想還是自己 對知識的靈活運用能力不足吧 )

02

一面

開始做的矩陣乘法測試題,反覆檢查發現就只是矩陣乘法,還是自己想多了。首先自我介紹。介紹C++,C++和C的區別,出了個c++多型的例子,考的還算比較活的',但順利做出來了。介紹TCP協議。問了epoll,epoll的特性,LT和ET的區別。問了程序的記憶體佈局,由於都有充足準備,答的都可以。出了BFS演算法和擴充套件問題,出了線段樹的問題,最後是一個如何以最快時間找到與給定點最近的點演算法,說了取整預處理思路,但資料儲存會有問題,如果問題域是無限的,又如何去設計這樣的資料結構來儲存。問了編譯器的實現。

02

二面

一上來就是四張撲克牌要算24點,當時為毛想不出= =~,後面是給演算法解決。桌面均勻放點演算法,最後是要求一個點在扇形中如何隨機放的問題,說了按弧度和半徑來隨機的想法,但這樣會集中在扇形頂部,說了按頂部和底部的面積來分,這樣又不能處理連續的情況,而且也會出現同樣的問題,最後提到連續隨機密度函式的思路但沒能給出最終正解。給個隨機洗牌演算法,如何證明洗牌是隨機的。也問了編譯器,叫我介紹一遍。最後問為什麼沒有hr面了,他說需要的話可以給我安排。。我就很自覺的滾粗了~

順利收到offer

面經

金山西山居

後臺開發工程師

01

一面

面試官是湖南老鄉,一上來問了各種c++問題,如new,delete,malloc,free的區別, new a[5] 再delete a的編譯器未定義行為及深層原因探討 。接著問了個記憶體分配,說堆中有1G的記憶體,但記憶體還夠用,但為什麼就分配記憶體錯誤了。問了C++類的構造順序。問了 TCP 的黏包 現象。一個是nagle演算法,一個是應用層資料的包無邊界問題,這是無法解決的,因為TCP管不到應用層的事,它只負責按位元組流傳輸。問了火車運煤,拉燈的智力問題。。開玩笑帶過去了。。。

02

二面

是個做手遊3D的總監,一上來也是問編譯器,說不懂編譯原理,他就說你是怎麼去做的這個東西,我就說了一通,最後他說這樣先實踐再看理論也是不錯的,說他喜歡這種搞鑽研的人= =~。。。後面問到多執行緒需要注意的問題,問到FTP做的目的。

03

三面

見到CTO陳飛舟,居然不認識他。。。首先也是一上來問了個編譯器的問題,函式宣告和函式定義是如何區分的,編譯器怎麼判別出來。後面問到我做的騰訊實習這個作業,說到併發策略那塊( 多CPU核開網路中斷 是需要特殊網絡卡,特殊平臺及更高版本的linux支援)。問我有沒程式碼積累,講他的程式碼積累的習慣。問我以後想從事哪方面工作,跟我講他在各個不同產品部門間積累程式碼,高效最優完成的結果。講到選擇,講到自己認同公司的價值觀。講到遊戲產業,為什麼虛幻三用不起(美術的整體工業環境不行,同樣的效果圖,美術資源是暴雪美術的4倍)。講到雲風,講到雷軍和小米,看了下桌子上的小米3S工程機= =~。

拿到金山offer~ 這個offer真是很難割捨,幾輪面試官都給人印象都很好,整個西山居環境也很是不錯,自助食堂餐廳,工作間旁各種遊戲機,在珠海拿著還不錯的待遇過的應該很舒服。。。

在婉拒offer後,面試官還給了我一些在微信和網易遊戲間如何選擇的中肯意見,甚是感激。

後臺開發工程師

01

一面

一上來寫個 aabbbccddff 化為abcdef的去重演算法,想複雜了 ,其實的話只要將後面的移到前面來就行了(我是不是太弱了。。。)。接著問騰訊實習作業,磁碟的效率問題,併發的取捨,實現的UDP可靠傳輸效果如何, 最後考了個0(1)時間求棧中最大元素的演算法。這個沒想出來 ,其實考慮到棧的出棧入棧特點的話,很容易解決了。

02

二面

一上來又是演算法,畫個不規則的多邊形,現在每條邊都需要一條等長的木頭,給定一塊足夠長的木頭,要以最小的體力值把這些邊長木頭出來(體力值等於木頭的長度),其實這就是個 哈夫曼演算法 。提示很多次才想到這裡,還好最後演算法實現比較快。接著問了linux檢視記憶體,檢視磁碟容量剩餘,怎麼通過ls輸出目錄。

03

三面

問了key/value儲存,有什麼優缺點,什麼場景下用。問了一個分散式key/value儲存要如何保證對映可靠,答通過中心代理來負責對映,那缺點又是什麼。接著問,如果不同的例程都要向某個key更新更大的value值,如何在不用訊號量,同步鎖這些的情況下保證最終value是最大的(同步, set get 迴圈巧妙 ) 。後面問了個海量資料中找第k大數(1.其實可以直接採用桶劃分,即使是64位也最多三次遍歷就可以了。2.也可以採用位濾除,但磁碟操作太多 3.k堆濾除,但k如果太大會頻繁交換記憶體 4.分配到多機,多機同時外存排序,並有另外一臺機子作多路歸併)

順利拿到了offer~