天天看點

【求職經曆】網易遊戲實習生面試體驗

如果你大學裡有想過從事遊戲開發的話,你對網易遊戲肯定不會陌生,網易開發出過夢幻西遊,倩女幽魂這種端遊大作,可惜在頁遊和手遊方面現在依舊毫無建樹,網易遊戲的特點有以下幾個。

作者:王選易,出處: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不想加人了。。。好友太多。

系列文章

Unity3D基礎教程

作者:王選易

出處:http://www.cnblogs.com/neverdie/

郵件:[email protected]

如果您覺得有些收獲,請點選頁面下方的【推薦】或者關注【我的微網誌】

如果您想進一步交流,請郵件聯系我活在微網誌上給我私信