應屆遊戲開發求職路

 

「不拼搏,枉少年!」網易遊戲程序員

寫在前面:先介紹下本身的狀況,末流985大學本科生一枚,全院人數200+,個人成績排名在170左右(校招開始的時候仍有一科掛在樹上,如今已經補考過了),英語4級。僥倖得到了幾個遊戲公司的offer,最後和網易遊戲簽約。「遊戲」陪我走過了人生中最值得回味的時代。懵懵懂懂的童年,在面對這個複雜繽紛的世界,遊戲成爲我瞭解這個世界的窗口。《魂鬥羅》,讓我知道了什麼是「合做」;《赤色要塞》,讓我明白了什麼是「任務」;《超級馬里奧》,然我知曉了什麼是「責任」……有太多的遊戲,太多的記憶。遊戲爲我打開了一扇大門,一種新的方式去看待世界。正所謂人生如戲,只是咱們沒有機會重來。因此我很熱愛遊戲!面試

廢話到此爲止,寫這篇日誌之類的東西,是爲了分享遊戲求職經驗給學弟學妹們(響應某人的號召,哈哈),攢RP用的。算法

前期準備編程

按照慣例,各大IT公司會在大三下學期開展暑假實習生的招聘工做。這對要找工做的同窗來講是很重要的,即便未來你不在你實習的公司工做,這實習經歷也會給你加分的。有的學校會統一安排學生去某公司實習。若是你讓你的簡歷更好看一點,那麼去著名的IT公司實習是個不錯的選擇,傳說中的BAT(百度、阿里、騰訊)。固然若是實力夠強大,微軟、GoogleFacebook之類的國際大公司更好。在實習招聘過程當中,你還能鍛鍊各類技能。這些技能在之後的應屆生招聘中也有好處。前提是:你要有清晰的目標。你要有清晰的目標(工做崗位、工做內容、本身擅長)。你要有清晰的目標。你在實習以前瞭解本身的興趣點是最好的,而後又針對性的複習知識,這樣會更有效一點。固然,實習還沒目標的同窗也不用擔憂,你能夠一邊實習一邊找感受。可是在應屆生招聘的時候,你就要作出選擇了。數組

請用半年的時間來面試本身。若是你不知道本身努力的方向,企業的招聘要求是一個很好的參考。相信你們對應試考試已經可以應付自如了,這裏的招聘要求就是一個大綱之類的東西。從它你能知道企業但願你能有什麼樣的技能,接下來的,就是努力了。在知乎上我看到過一句話以爲很不錯,「以大多數人的努力程度之低,根本輪不到拼天賦」。下面是網易遊戲的招聘要求。網絡


  第一條學歷這種硬性條件咱們能夠忽略(本科也行,只要你達到個人要求)。網易要求你精通C++(要求應屆生精通,這絕對是HR寫的),很明顯他要求你的C++能力要達到必定的水準。通常來講,你把C++ Primer》《Effect C++這兩本書啃透,在面試上就不會有太大的問題。面試官也不會指望一個應屆生可以「精通」C++。要對本身有信心,這很重要。接下來,你要熟悉數據結構、算法和操做系統。通常來講CS專業相關的專業學生都會學習這方面的知識。可是不要覺得這樣就好了,學了和會是兩個概念。碼農應有的覺悟就是要動手寫代碼。對於操做系統,課件就足夠了。對於數據結構和算法,這須要真正的動手去寫代碼,動手去寫代碼,動手去寫代碼。《算法導論》你能啃多少是多少吧。對於非ACMer的學生來講,練習碼代碼的能力顯得尤其重要。線上的OJ系統是個不錯的選擇(著名高校OJ,我就不明說了)。對於找工做的人來講,還有一個很棒的練習網站LeetCode。這上面有不少公司的面試、筆試題(我遇到過原題)。咱們不要期待原題的出現,更重要的能力、思惟的提高。在暑假我在上面刷了200題,收穫頗豐,見識了很多好的題目和解題方法。這個網站是面向全世界的,因此有不少程序員在上面練習,他們會給出不少讓人感到很是精妙的方法解題。至於後面的幾點,這就須要經過一些事來體現了。好比你在學習、項目過程遇到過什麼困難,你是怎麼想的,你是怎麼解決的?因此,好的項目經驗也很重要。數據結構

      關於項目,對於大部分本科生來說是可遇不可求的。可是咱們不能坐以待斃,沒有項目,創造項目也要上!針對遊戲,尤爲如此。你說不會美術,網上的素材不少;你說你怕侵權,僅供學習之用(不用發佈出去);你說你不會作遊戲,學啊!Unity3Dcocos2d-x這麼好的遊戲引擎。不要在意你本身作的項目有多小,感受多幼稚,你已經比那些沒有的人領先了。路漫漫其修遠兮,上下而求索。架構

      接下來就是加分項,針對遊戲,那天然是程序員的三大浪漫之一的圖形學了。沒有捷徑,啃書+寫代碼。其實我以爲《OpenGL 超級寶典》、《遊戲引擎架構》、《3D遊戲編程大師技巧》這些書還不錯。數據結構和算法

校招前最後一搏

      我假設你基礎已經準備好了,在真正去面試以前,你沒有實戰經驗,怎麼辦?高考以前咱們還有往年考題、模擬題呢!沒錯,就是練習重點練習高質量企業的往年筆試、面試題。從這些題中,你能夠檢查你知識點中的不徹底的地方。以及企業喜歡檢查的知識點有哪些。你就能夠針對性複習了。這個時候若是你有大面積的知識點不會,那麼就是你前一個階段作得很差了。這個時候只能經過一些臨時抱佛腳的方法來彌補了。詳見《劍指offer》《程序員面試指南》之類的書籍。ide

筆試

      筆試的成績也是很重要的,不要忽略。對於微軟、網易遊戲這類公司,就靠難題來刷人。因此你們必定要作好準備。至於有多變態,你們能夠去這個網站(www.hihocoder.com)看看。網易遊戲和微軟的招聘的筆試都在這個在線平臺上。下面截圖是2016校招的筆試的一些狀況你們能夠了解下。從這些中數據咱們能夠直接看出一道題的難度。經過率:50%-100%難度爲易,30%-50%難度爲中,10%-30%難度爲難,0%-10%難度超難。微軟筆試題爲2個半小時,網易遊戲爲3個小時。你們能夠本身去試試。

  其餘公司的筆試題我就不贅述了。總結:練、練、練。

面試

  總的來看遊戲公司對計算機基礎知識,好比計算機網絡,操做系統,數據結構和算法,程序的連接裝載等等都會有不一樣程度的考查,另外就是對C++要至關熟悉。而二面的時候又會考查一些常見的遊戲算法,對遊戲引擎的使用和圖形學基礎並無嚴格的要求,不過有基礎的話更好。

下面是我在面試遊戲公司過程當中遇到過的問題,我不會給出答案(沒有標準答案)。

C++

  • inline關鍵字是作什麼的?具體說說?會對目標代碼形成什麼影響?它和#define 這個宏定義有什麼區別?
  •  什麼是多態?多態在C++中是怎麼實現的?說說在C++中重寫、重載和覆蓋的區別。
  •  在C++中和CStruct的相同和不一樣點。
  •  什麼是虛基類?有什麼用?
  •     C++智能指針有哪些?說說他們的區別,是怎麼實現的。
  •  說說你知道的C++容器。vector這個容器是怎麼實現動態擴容的?
  •     extern 這個關鍵字有什麼做用?
  •  說說CC++強制轉換有什麼不一樣?爲什麼?
  •  若是你來實現move函數須要注意些什麼?

網絡:

  • 簡述TCP/IP協議的鏈接和斷開狀態轉移。
  • TCP_NODELAYTCP_CORK這個兩個選項有什麼用?有什麼區別?在什麼狀況下咱們會設置這兩個選項?
  • Socket Server端的流程是怎麼樣的?什麼是阻塞和非阻塞?selectpoll的區別?
  • 你知道哪些通訊協議能夠被利用來DDoS攻擊?

算法:

  • 將一個字符串轉化爲int類型(這裏面陷阱不少,在面試時須要和麪試官多溝通)。
  • 如何快速查找40億數據中的那些重複數據?
  • 如何快速查找100萬數據的最大的100項,常量空間?
  • 怎麼快速刪除一個數組中的爲0的項,常量空間?
  • 在一個數組中保存的都是整數,只有一個數字出現的次數爲一,其餘數字出現的次數都爲2,怎麼快速找出這個只出現一次的數據,常量空間?要是其餘數字都出現了3次,4次呢?
  • 如今咱們要作一個登錄排隊系統,你會怎麼作才能使這個系統高效呢?要是這個系統可讓VIP用戶排到前面呢?須要在這個系統中快速查找一個用戶,咱們使用什麼樣的數據結構才能知足以上要求?
  • 你知道哪些自動尋路算法?BFSA*有什麼異同?在什麼狀況下A*BFS同樣了?

遊戲相關:

  • 簡述OpenGL的渲染流程。哪些過程是能夠編程的?
  • 在很大的場景中,有什麼優化碰撞檢測的方法?寫一下空間八叉樹的兩個子葉節點的最低公共祖先的算法?
  • 普通光照模型你知道哪些?寫一寫?
  • 對於遊戲模型的貼圖,有什麼優化的措施?
  • 骨骼動畫是怎麼實現的?你知到哪些插值方法?
  • 你在開發你的遊戲過程當中遇到過哪些困難?怎麼解決的?

最後還有一個小問題,是我在學習過程當中遇到的,給面試官講事後,感受不錯。我曾經寫過一個排序算法的演示程序,在過程當中遇到一個問題,其餘排序算法是本身寫的,能夠很容易的記錄數據的變化過程,可是有關STL裏面的sort這種排序算法就犯了難。你們能夠想一想怎麼作才能知道sort內部具體是怎麼排序的。

上面的那些面試題,你不要指望會遇到原題。我沒有給出答案,你們若是感受答不上來,能夠問問本身是否是本身哪方面還欠缺。這些都是基礎問題,答不上來就有很大可能那方面知識沒有掌握好,繼續努力吧。

一家之言,但願你們都經過本身的努力能找到一個好工做!

                                                 --燃燈

相關文章
相關標籤/搜索