作者:王選易,出處:http://www.cnblogs.com/neverdie/ 歡迎轉載,也請保留這段聲明。如果你喜歡這篇文章,請點【推薦】。謝謝!
網易游戲面試准備
如果你大學里有想過從事游戲開發的話,你對網易游戲肯定不會陌生,網易開發出過夢幻西游,倩女幽魂這種端游大作,可惜在頁游和手游方面現在依舊毫無建樹,網易游戲的特點有以下幾個:
- 工作環境非常好,或者極端點說,可能是國內所有公司里工作環境最好的,具體可以參考知乎里的這個問題里的國內有哪些工作環境很贊的互聯網公司?第一個回答
- 工資待遇非常高,實習生的工資具體數額一般是其他互聯網公司的兩到三倍左右,各位可以自己算算,應屆畢業生的薪資水平也可能是國內IT行業最高的(最低每年在250k以上,280K比較多 ,360K也有),當然你要非拿阿里星來比我也沒有辦法。
- 基本上只招C9的學生加上北郵,華南和華科這幾個學校的碩士及以上學歷,如果你是其他學校的學生或者是C9的本科生卻沒有好的經歷的話在HR篩選簡歷時會把你直接刷掉。
- 培訓體系非常完善,畢竟是當年雲風他們一手搭建的培訓機制。如果你是實習生的話,你會和其他實習生(包括策划,開發和美術)組隊做一個MiniGame,然后在兩個月的實習期結束之后,分組做ppt演示,然后評分,一般刷掉50%的人,留下剩下50%的人。不是像其他公司一樣實習生跟版本打雜,這個機制挺有意思,但是具體好壞也不好評判。
- 加班較少
- 實習生不需要租房子,網易提供單身宿舍和餐廳,就是說食宿基本不花錢。但是你非要下館子我也沒辦法。。。
關於學歷的事情強調下,下面是各個學校的錄取比例:
哎。。。我怎么說了好多網易游戲的特點好像都是在誇網易游戲啊,那再說下網易游戲不太好的地方吧。
- 手游包括端游砍項目或者回爐重做的現象比較頻繁,手游的話一般十個項目砍掉八九個?感覺面試的時候面試官在項目上的壓力還蠻大,一直說手游的競爭很激烈,但我感覺網易游戲的內部競爭更激烈,被砍的依據大多不是市場表現,而是部門老大的評價和判斷。
- 網易游戲還是偏保守,網易基本上已經錯過了頁游的巨大市場,現在看也基本上錯過了手游,不過網易是個好學校,非常適合應屆生去。
還有更多的觀點可以參考知乎上的這個問題:你為什么從網易離職?我就不一一列舉了。
前面說了網易游戲基本不招本科生,那我為什么去面試了呢?因為網易游戲最近移動游戲這邊看來是比較缺人,所以在招聘要求上特意標明了可以招收本科生,我又對移動游戲很感興趣,學習了很多相關的知識,對Cocos2d-x,Lua等游戲相關的技術也算用的比較熟了。最終HR就給了我電話面試的機會。
網易游戲電話面試
第一輪的電話面試是在周一上午十點,可是我一直等到10點40才接到面試官的電話,第一面的面試官是南京大學的學長,人非常nice,沒有問什么很難的問題,基本上一開始就是從我做過的戰棋游戲的項目入手,因為我負責的主要是GamePlay,所以問的問題也都集中在這一塊,比如游戲中的狀態機的設計,動畫曲線的設計,相機的移動,游戲中如何使用MVC之類的(可以參考我的這篇文章)等等。然后就是我一個人在扯一些Cocos2d-x的事情了,因為我本人對Cocos2d-x還算有點研究,就把Cocos2d-x的一些重要的特性說了下,但是學長好像是做Unity3D的,感覺有點對不上路。算法方面的問題倒是一個也沒問,面試結束后,我問了下學長對我的印象如何,學長說各方面都還不錯,我就覺得這一輪差不多了。
總之第一輪的電話面試,還算簡單,只要你有幾個拿得出手的項目就行了,最好是移動游戲,實在不行的話,做過移動App也行吧。當然,熟悉Unity3D或者OpenGL之類的有加分,要是獲悉一些后端的東西,比如網易的Pomelo就更好了。
網易游戲二面
過了一周之后,網易發來了通知,叫我去杭州參加第二次面試,知道這個消息還是蠻興奮的,因為網易的本科生錄取率還不到5%吧。。。又過了一周,果斷買票趕往杭州!
網易的第二次面試實際上是三次面試,就是三個工程師會輪流對你進行面試,然后綜合評價之后,再判斷是否給你下一輪的機會。對於這次面試我還是做了不少准備的,我不但專門為這次游戲做了一個游戲Demo,用MVC架構做了一個Cocos2d-x的游戲,源碼在這,而且專門准備了一份自我介紹和一些想問面試官的問題。
去進行面試的一共有6個人,五個是應聘實習生的,一個是春季補招的,也就是說,網易對實習生的招聘和正式員工的校招要求的水平基本一致,這點各位注意一下。一般過了第一面之后,在杭州這一次是6個里面淘汰5個,這6個人基本都拿到BAT或者同級別的的offer了,除了我和我的一個同學(我兩之前一起做了那個戰棋游戲。。。)是本科生外,其他人基本都是研究生,可見網易的選拔還是比較嚴格的。
接下來說一說二面都問了些什么問題吧,我一一列舉如下,各位可以參考一下(網易的人別打我,我這不算泄露機密吧):
- 如何對手機游戲進行優化,我的回答基本上是以下這樣的
- 一般分為內存優化幀數優化,內存優化和運存優化。
- 幀數優化可以考慮對一個message loop中的邏輯運算進行優化,比如可以考慮A*的剪枝。或者進行time slice,具體可以參考我的這篇文章
- 體積和運行內存優化有以下幾點
- 使用工具對資源進行打包,使用TexturePacker等工具把多張資源合成一張圖片。
- 采用png壓縮工具,在打包圖片之前對每張圖片進行壓縮,降低圖片質量。
- 針對不同的平台使用特定的壓縮格式的圖片
- 如果項目中幀序列占的比較多,那么可以采用降幀的方式來優化。
- 縮放圖片,將原來圖片縮小為原來的70% ~ %80,再對圖像進行放大
- 采用編輯器,將大圖轉化為拼接,那么就可以利用地圖編輯器、動作編輯器等從而減少體積,降低內存的使 用。
- 如何在對游戲的“手感”進行改進:
- 游戲手感一般指的是打擊感,那么我就在打擊到一個游戲對象時,游戲對象要產生擊退的效果,產生該對象被打擊的感覺。
- 時間控制要恰當,要讓某個對象(比如火球,拳頭)打擊到另一個游戲對象的時候,才產生擊退效果,這就需要進行使用消息機制和回調來解決。
- 如何在數據庫中存儲一個人的所有裝備
- 建立一個人物ID和裝備ID的關系表。
- 將人物的所有裝備的id序列化為一個JSON字符串存儲為人物的一個字段。
- 這兩個最大的區別是在修改裝備時,第一個只會影響一條記錄,當時第二個會影響所有裝備,一旦出現bug還讓玩家損失所有裝備。兩者各有利弊,根據使用場景自己權衡。
- C++11的新特性?
- 如何對一個快排進行優化使得它的最壞的時間復雜度達到O(LogN)?
- Lua和Unity中的協程是怎么使用的,都有什么區別?
- 我的游戲Demo中AI的設計思路是怎樣的。
- 如果讓你設計一個暗黑破壞神的簡化版手機游戲,你會從哪里開始設計。
只記錄了一些我認為比較有價值的問題,有些問題沒有記錄,其實除了這些問題之外,我和面試官的許多交流都圍繞在我做的游戲Demo上了,討論了許多關於這個游戲AI,架構和Cocos2d-x相關的問題,我還把自己的游戲代碼給面試官看了,很多問題都是邊看代碼邊聊的,還是和第一次一樣基本沒問算法,大部分時間是在聊項目。所以各位同學們,有個拿得出手的項目還是很重要的。
總而言之,和這幾個面試官的聊天過程,還是比較開心的,大部分問題都能答得不錯,幾個面試官對我的評價也不錯,順利進入下午的三面。
要注意的是二面的時間比較長,每一面的時間都有30分鍾以上,還要連着跟三個面試官聊天,前一天一定要休息好,要不然可能撐不住。
網易游戲三面
三面是總監面,到了三面的時候,6個人又被淘汰了幾個,然后我第一個被叫過去總監面,三個總監貌似是主策,主美和主程。這一面的壓力還是蠻大的,問的問題明顯要比二面的時候難了不少,我整理了一下三面中一些比較難的問題,供大家參考一下:
- C++11有那些特性?
- C++11模板中的特化和偏特化分別指什么?都在那些情況下應用?
- C++11模版的高級使用有那些?請舉出例子。
- Java Runtime和Lua Runtime有什么區別和相同點?
- 游戲中狀態機如何實現REDO,UNDO和MERGE?(用stack即可實現)
- 極大極小算法的原理和在AI中的應用?
- 3D游戲中相機是有那三個元素構成的(Translate,Target和Up Vector),分別起什么作用,如何使用四元數進行相機的變換?
由於本人計算機圖形學比較菜,很多相關的問題沒法打上來,在第三次面試中真實蠻失敗的,最終很可惜,沒拿到offer,只好下次再戰。。。
網易游戲到底招什么樣的應屆生?
網易游戲的面試流程整體走下來,感覺還是蠻規范的,網易確實在認真的招人和面試,我的感覺是網易希望招聘的應屆生除了有一個拿得出手的項目之外(最好是游戲相關的),還要在以下這兩個方面至少熟悉一樣:
- 計算機圖形學
- 游戲服務器編程
然后再說一下網易的基本要求,當然了,什么數據結構,操作系統,數據庫,編譯原理這些的基本原理和應用就不細說了,都是本科生基礎必會的東西,說些和游戲相關的要求:
- 對C++的模版的高級用法要了解的比較深入。
- 對C++的內存管理的各種解決方案要非常熟悉並親手實驗過。
- 對AI的各種算法要有了解:比如博弈論中的極大極小算法,A*算法的優化等等
- 對C++的裝載鏈接過程和Lua的虛擬機的一些底層實現要有了解
- 對VS或者Xcode這兩種IDE需要可以熟練的應用
- 需要的項目經歷:自己開發過 一個簡單的游戲引擎或者是做過比較復雜的 游戲Demo(大概是Kingdom Rush這個級別就可以了吧)
- 對Unity3D或者Cocos2d-x有着豐富的使用經驗 (可以沒有,有的話加分)
- 對OpenGL或者是DirectX要有了解,做過一些Shader和Renderer (可以沒有,有的話加分)
- 了解過網易的后端框架Pomelo(可以沒有,有的話加分)
再說一下,網易手游這邊目前的一些相關信息,
- 游戲引擎:主要是Unity,有部分Cocos2d-x
- IDE:主要是Xcode
- 后端:主要是Pomelo
- 項目前景:大部分是被砍
好了,這篇文章就寫到這里,有什么其他不明白的問題,可以到微博上私信我,QQ不想加人了。。。好友太多。