人人,金山西山居,騰訊互娛,微信,網易遊戲offer及面經

轉自:http://www.itmian4.com/forum.php?mod=viewthread&tid=3985php

 

首先感謝師兄在兩年前發的貼(【天道酬勤】 騰訊、百度、網易遊戲、華爲Offer及筆經面經 ),這篇文章對我幫助很大。linux


我寫這篇文章一是爲了感謝這位同是華南理工但素未謀面的師兄,給我推薦這篇文章的炳爺,以及爲我解決難題的浩子,羊兄給的項目幫助,潔潔的理解,王兄提供的兩個月免費住宿,以及互娛的BOSS,leader,金山的朱先生等人對我擇業的幫助,以及全部直接間接幫助過個人人。二是飲水思源,要把這份活水轉贈出去以幫助到更多的人。

我用完以後是這個樣子,大家用完以後也會是這個樣子。 = =~

文筆很差,表述不清的地方還請見諒,記錄本身的找工做歷程,若是能爲有須要的人提供到一點幫助或啓發我就很心滿意足了,一樣攢攢RP~嘿嘿


-------------------------------------------公司面試回憶----------------------------------------------------
(面試很大不肯定性,這些僅是本身的相關面試經驗,不會涉及到具體面試題目的表述,公司考查的都是常見問題,這裏不涉及對具體問題的探討,只會說個大概謹供參考~)
1、2013年4月,騰訊互娛,後臺開發工程師(實習)-------------------------------
1)一面,當天人爆滿,十點半進到808房間(挺吉利的號碼~),面試官整個過程一直面帶微笑,一面在輕鬆的氛圍中度過~(40分鐘)主要問到:
1. FTP服務器怎麼實現(由於本身有寫過),多線程磁盤讀寫效率(因爲磁盤尋道隨機性增長而致使I/O效率呈線性降低),是否考慮到斷點續傳。爲何要用epoll,優缺點是什麼,epoll的兩種方式,各有什麼不一樣。
2. TCP爲何要三次握手。
3. vector的容量增加的題目,vector a; push_back八次對象,求總共調用多少次拷貝構造函數。另外問到vecter和set的底層實現。
4. 空對象的大小,加虛析構函數又怎樣呢。
5. 寫算法,求二叉樹中某個值爲5的結點到根的路徑。
6. 看我寫過抓包軟件,問有沒嘗試分析一些軟件的數據包。
7. 字符串倒轉。
8. 排序有哪些,快排的思想。

2)二面總見面,態度也很友好,談話挺輕鬆的。(40分鐘)
主要問到:
1.一上來看我簡歷上編譯器相關內容,問我基於什麼緣由要寫,覺得現場寫彙編的節奏,結果是要寫strcpy(),大跌眼鏡~;
2. FTP服務器怎麼改進,果斷把上次一面面試官說的答上。提到若是進程崩潰,文件緩存區內容還沒法寫到文件中怎麼辦,我回答用數據庫的回滾思想,作記錄。後面說能夠用文件映射和共享內存等等。問用共享內存須要注意什麼東西,讓我回去想一想。。
3. 問網絡,問項目中爲何要考慮用TCP(文件傳輸難道用UDP?= =),不用TCP流量控制,傳文件還不爆掉阿。。問迅雷的協議是什麼,問優酷土豆這些視頻網站是用什麼協議傳輸視頻,答可能UDP組播。問熟悉P2P不,叫我回去瞭解。。
4. 問語言,問面向對象繼承封裝多態,問動態多態的實現,STL容器,仍是問到vector增加(這麼喜歡問這個)。
5. 寫算法,升序鏈表的合併。(現場手寫代碼能力要增強
6. 問連連看外掛,問基於什麼緣由要寫。
7. 問實習,談到說實習公司LINUX下用到mono來開發C# , 本身參與C++重寫。

3)三面HR。當知道hr面不怎麼刷人也就放下心來了。本身好好想了下,看了騰訊的基本信息。
主要問到:
1. 自我介紹:扯遊戲和技術
2. 平時學校生活怎麼安排:起牀看網頁看小說學習吃飯健身跑步鍛鍊遊玩
3. 說下騰訊的產品的見解:QQ消息丟失的問題,QQ密碼安全的問題
4. 各類問,還問考研考了多少分,英語怎麼複習的,哪科考的最好
5. 你認爲本身作過最成功的事:說遊戲打到好裝備= =~,考研,項目
6. 介紹參加的社會實踐,問之前有沒實習經歷

7. 談本身研究生生活的得與失:得-知識能力積累提升 失-沒有搞什麼研究,或者本身不是想純搞研究的人吧

糾結的十多天,期間有一批同窗簽約了,本身這裏還毫無音訊,到5月1號,微信通知招聘結束,這下以爲可能要沒戲了,後來發現這是個系統錯誤,但願又來,果真5月2號下午四點半收到OFFER通知~ (記我難忘煎熬的騰訊實習面試經歷)


2、2013年9月,人人,後臺開發工程師-------------------------------
1)一面,一上來寫個aabbbccddff化爲abcdef的去重算法,想複雜了,覺得要置換,其實的話只要將後面的移到前面來就好了(我是否是太弱了。。。)。接着問騰訊實習做業,磁盤的效率問題,併發的取捨,實現的UDP可靠傳輸效果如何,最後考了個0(1)時間求棧中最大元素的算法。這個沒想出來,其實考慮到棧的出棧入棧特色的話,很容易解決了。

2)二面,一上來又是算法,畫個不規則的多邊形,如今每條邊都須要一條等長的木頭,給定一塊足夠長的木頭,要以最小的體力值把這些邊長木頭出來(體力值等於木頭的長度),其實這就是個哈夫曼算法。提示不少次纔想到這裏,還好最後算法實現比較快。接着問了linux查看內存,查看磁盤容量剩餘,怎麼經過ls輸出目錄。

3)三面,問了key/value存儲,有什麼優缺點,什麼場景下用。問了一個分佈式key/value存儲要如何保證映射可靠,答經過中心代理來負責映射,那缺點又是什麼。接着問,若是不一樣的例程都要向某個key更新更大的value值,如何在不用信號量,同步鎖這些的狀況下保證最終value是最大的(同步,set get循環巧妙)。後面問了個海量數據中找第k大數(1.其實能夠直接採用桶劃分,即便是64位也最多三次遍歷就能夠了。2.也能夠採用位濾除,但磁盤操做太多 3.k堆濾除,但k若是太大會頻繁交換內存 4.分配到多機,多機同時外存排序,並有另一臺機子做多路歸併)

順利拿到了offer~可北京不太想去


3、2013年9月,金山西山居,後臺開發工程師------------------------------
1)一面,面試官是湖南老鄉,一上來問了各類c++問題,如new,delete,malloc,free的區別new a[5]再delete []a的編譯器未定義行爲及深層緣由探討。接着問了個內存分配,說堆中有1G的內存,但內存還夠用,但爲何就分配內存錯誤了。問了C++類的構造順序。問了TCP的黏包現象。一個是nagle算法,一個是應用層數據的包無邊界問題,這是沒法解決的,由於TCP管不到應用層的事,它只負責按字節流傳輸。問了火車運煤,拉燈的智力問題。。開玩笑帶過去了。。。

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

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

拿到金山offer~ 這個offer真是很難割捨,幾輪面試官都給人印象都很好,整個西山居環境也非常不錯,自助食堂餐廳,工做間旁各類遊戲機,在珠海拿着還不錯的待遇過的應該很舒服。。。
在婉拒offer後,面試官還給了我一些在微信和網易遊戲間如何選擇的中肯意見,甚是感激。


4、2013年10月,微信,後臺開發工程師------------------------------
1)一面,一上來丟了6個算法題過來作,要四十分鐘的樣子搞定,單都是基礎算法,什麼鏈表,二叉樹之類的,其中的兩個字符串的最大公共子串沒有較好的解決辦法。問key/value緩存,它具體是如何實現的。瓶頸在哪,怎麼保證負載。後面問騰訊互娛後臺的負載均衡低耦合架構,這裏說的不是很好。問磁盤效率優化,如何作的優化,測磁盤數據怎麼測,經過什麼命令(top,iostat),iostat的參數如何去看,讀寫隊列,等待時間與服務時間的比例,空閒比例。編碼規範(命名規範,固定的括號樣式,函數註釋與關鍵註釋,異常說明,類的訪問控制規範)。問網絡編程應該注意的地方(TCP和UDP取捨),問UDP實現可靠傳輸是如何實現的。是否作過測試,拿scp來作爲對比的恰當性。問網絡方面的調試用到的命令,如tcpdump,lsof,netstat,問編譯器,如何實現的,是否考慮到中文編碼問題的解決。編譯器的實現流程。問查看一個進程的運行狀況的命令,top,/proc/pid/,問如何統計出函數的使用頻率,用valgrind。==。壓力較大的一次面。。

2)二面總監面,自我介紹,以後問我作的最好的一個項目,說了編譯器,最後再叫我介紹個項目,說了UDP文件上傳服務,問了UDP可靠傳輸的的具體內容,好奇爲何速度能夠達到SCP的兩倍。問我本科爲何沒寫什麼東西,答的很差。問平時讀什麼技術書籍,本身說linux內核詳解,我說內存,介紹了一遍,最後問內存這塊有什麼用到項目中的嗎,實際上是沒有,但能夠說的更好一些的,如能夠說對動態內存的理解,線程建立實際的開銷在內存方面是有多大。說了文件中的mmap,直接I/O。問三個優勢,最大的缺點。。

3)三面hr面,自我介紹,之後自我介紹儘可能要充實點,問了拿到幾個offer,問了之後的工做意向,是否願意留廣州,問本身以爲作的最出色的一個項目,爲何是最出色的,嗯,這點要多想一想。

順利拿到offer~


5、2013年10月,網易遊戲,遊戲研發工程師------------------------------

順利收到offer

-------------------------------------------公司面試回憶----------------------------------------------------



這些即是我一路過來的面試歷程了,我不是技術牛人,能拿下這些offer主要是準備還算充足,今年就業形勢好,另外運氣還不錯,這裏談談本身是如何找工做及準備的。

-------------------------------------------找工做及準備----------------------------------------------------
首先肯定目標,本身剛出去仍是想從事技術工做,偏實幹,因此首選互聯網公司。

如何準備的話,個人想法是不能爲了準備而準備,同時也能夠當作一種學習來鞏固本身的整個技術框架體系(我的認爲,在學校仍是頗有必要把整個技術體系架好)。

那麼我會分紅算法,語言,系統三個部分來準備。
算法:
本身不搞ACM,自知也不是搞ACM的料,因此這塊仍是比較虛的,那麼怎麼較好得消解這個短板呢?
1.我首先是把weiss的那本《數據結構與算法分析》大概看了遍的,多動手,嘗試着解決後面的一些算法問題,問題不在多在精。
2.必定要多動手,訓練本身的手寫代碼能力,大可沒必要去鑽難的算法,基本算法搞定面試基本無憂。問問本身能把插入,選擇,冒泡,希爾,快排,堆排,歸併等排序正確高效地寫出來;能寫循環隊列實現;能對鏈表指針插入刪除等操做熟悉;二叉樹各類遍歷遞歸非遞歸實現,常見算法寫的出;優先隊列(堆)的實現可否寫的出;圖的基本算法,DFS,BFS,最小生成樹,最短路徑;熟悉貪心,分治,動歸,回溯等算法設計方法及適用場景;深入理解迭代跟遞歸的區別。
3.熟悉一些常見的高級數據結構,如紅黑樹,B+樹,線段樹,跳錶,並查集等,不要求實現,原理、基本實現流程知道便可,如紅黑樹的是怎麼插入刪除結點的(你叫面試官現場給你寫個紅黑樹試試= =~)。
4.查漏補缺,能夠看《編程之美》來啓發本身的靈活運用能力,看JULY的博客來看本身可否解決常見的一些算法面試題,什麼微軟100題之類的。

語言:
因爲日常多用C++,因此準備的也可能是這塊的。
1.STL是否熟悉,固然最好是本身能夠嘗試寫寫與STL兼容的容器,算法之類來增長理解,瞭解vector,list,set,map的底層數據結構實現。
2.C++語法機制是否熟悉,我看的是《C++ Pimer》和《c++ 對象模型》,對象模型畫的出嗎;多態是如何實現的;異常框架是否知曉;構造,析構,虛函數的關係;
3.適當瞭解C++11新特性,如move語義,auto類型推斷,lambda表達式等。
4.固然語言終歸是工具,是聯繫算法邏輯和系統的橋樑,仍是須要在本身的項目中去總結怎麼用好C++這把雙刃劍。

另外後臺開發,腳本語言也是須要熟悉,如SHELL,經常使用命令要知道吧;基本的正則要會寫吧,這些對工做效率也有很大提升的。

系統:
這部分就比較雜了,我的比較喜歡對技術究根問底,因此彙編,編譯原理,系統內核實現,網絡原理實現都會有涉及。好比:一個程序如何編譯成彙編語言到連接成可執行文件,程序如何被裝載運行,操做系統作了些什麼,程序的內存佈局是怎樣的,棧是如何分配的,堆是如何擴張的,文件映射內存在哪,操做系統是如何實現的。虛擬內存到實際物理內存是如何轉換的,硬件負責什麼,操做系統負責什麼,操做系統怎麼管理內存又如何影響到實際程序的執行,文件是什麼等等。下面我會例舉幾個大點。
1.彙編,程序連接這些比較雜的(固然這些看我的興趣),我會看《深刻理解計算機系統》,這本書講的不錯,= =~我只是選着看了一點點。
2.系統內核這塊,我看的是那個女人拿個大盤子的《Linux內核詳解》,主要看了內存,文件這幾塊,真正從代碼級來理解一個操做系統,也只是淺嘗則止,沒有進行深刻研究。另外像epoll這種幾乎必問的能夠考慮看看內核源碼,管道,FIFO,文件映射,共享內存等是如何實現的。
3.系統調用接口,posix編程環境這塊就是兩個大部頭,《UNIX環境高級編程》和《UNIX網絡編程》,這些對個人實習及一些項目的編寫都幫助挺大,不是說要去記這些接口,只是要有個總體把握。
4.計算機網絡這塊看到就是《TCP/IP詳解-協議》,瞭解從鏈路層到應用層的協議,真正的理解TCP的優缺點,爲什麼須要有UDP。
5.再就是對一些系統架構上的東西要有了解,如負載均衡有哪些策略,高性能服務器須要注意什麼,什麼是C10K問題,key/value緩存,事物處理這些。

我一直以爲不是爲了找工做而找工做,若是同時這又是種提升和積累,何樂而不爲呢?

-------------------------------------------找工做及準備----------------------------------------------------

總結下來就是: 明確目標->選擇方法->踏實準備
好了,到這裏也差很少了,個人不必定適合後來者,若是能有一點借鑑意義,那就是我最大的安慰了。祝你們都找到滿意的工做~ios

相關文章
相關標籤/搜索