想加入王者榮耀團隊?這27大遊戲開發基礎面試題你會多少?
說起遊戲開發,最頭疼同時又最幸福的怕是王者榮耀團隊了吧!據悉,僅2017年第一季度,這款遊戲就讓馬化騰賺了120億!去年底,王者榮耀團隊30人瓜分了1億獎金,最低分紅60萬,這讓同行們好生羨慕啊!王者榮耀的火爆瞬間引燃了無數程序員想做遊戲開發的心,這裡正好有一份程序員面試遊戲開發相關崗位可能被問到的基礎面試題和答案,快來看看你離成為一名遊戲開發工程師還有多遠距離吧!
(1) 開發一個遊戲的基本結構是什麼?
開發遊戲的基本結構為:
(a) 遊戲介面
(b) 界面實現
(c) 遊戲源代碼
(2) 用Java開發遊戲時,你可能會遇到的問題是什麼?
(a) 垃圾回收器:非確定性內存管理可能成為一個問題
(b) 缺少第三方庫:大多數可用的庫並不支持Java。Java有很多內置的庫,但與遊戲開發不相關。
(c) 遊戲控制台不支持:常用的遊戲控制台並不支持Java
(d) 更小型的社區:大多數遊戲開發的程序員都用C++,所以如果你用Java開發程序,就很少可以從其他程序員那裡獲取幫助
(3) 在遊戲開發中用什麼模型來賺取收益?
(a) 每次拷貝付費
(b) 訂閱付費
(c) 微交易
(d) 按次付費
(e) 廣告收費
(f) 供應商
(g) 銷售
(h) 代碼許可
(i) 贊助
(4) 為什麼C++語言在遊戲開發中更受歡迎?
(a) 由於C++已經被使用多年,遊戲開發商用起來更順手
(b) 不同平台的SDK是以C++為中心的
(c) 比起C語言和Java,C++給予更多控制權
(5) 什麼是「Pixel Art」?
Pixel Art是一種通過繪製單個像素來創造圖像,而不是建立3D模型的數碼藝術。
(6) 什麼叫做「延時(Lag)」?
在線遊戲中,玩家操作與伺服器反應時間的間隔稱作延時。
(7) 如何減少遊戲延時?
為了減少遊戲延時,你可以降低遊戲運行設置或者升級電腦的特定部分。
(8) 什麼是雲遊戲?
在雲遊戲中,遊戲通過雲端數據中心的遊戲伺服器運行,用戶只運行本地客戶端,將遊戲控制操作傳送至遊戲伺服器。
(9) 說出幾個HTML5框架的遊戲引擎
以下幾個為HTML5框架的遊戲引擎:
(a) Construct2
(b) Turbulence
(c) CAAT
(d) Phaser
(10) Bitbucket、Github對遊戲開發有多少優勢?
Bitbucket是一個編碼主機服務,而不是文件共享服務。它和小型遊戲開發兼容,但如果你想要處理非常大的文件或者經常變化的二進位文件,Bitbucket就沒那麼好用了,Bitbucket不能呈現二進位的區別。Github為開發者創造了一個非常不錯的交流環境。
(11) 什麼是PunkBuster?它如何工作?
為了預防和探測針對在線遊戲的詐騙軟體,誕生了電腦程序「PunkBuster」。它掃描本地機器的記憶內存,預防其他軟體進行惡意攻擊。在大多數現代遊戲中,PunkBuster用來抵擋黑客和網路詐騙。
(12) 在Java遊戲開發中,animation thread類起什麼作用?
animation thread類為遊戲邏輯更新DrawablePanel,並使控制板進行重塑。它為DrawablePanel提供了參考。
(13) 用於遊戲開發的安卓工具有哪些?
以下是用於遊戲開發的不同工具:
(a) Eclispse:整合開發環境(IDE)
(b) ADT——安卓Elipse插件
(c)包含ADB的 安卓SDK
(d) Hudson——自動化建造工具
(14) 在安卓中,如何運用載入texture方法來載入圖像?
載入texture 方法會讀入圖像指針,然後將圖像載入到一個流當中。這個流會被作為texture載入到OpenGL中。
(15) 什麼是Vertex Buffer Object?
Vertex Buffer Object是一個上傳vertex數據到非即時模式視頻設備的方法,是OpenGL的功能之一。
(16) 列出創建Vertex Buffer Object的步驟
你可以通過三個簡單步驟來創建Vertex Buffer Object:
(a) 通過glGenBuffers()來生成一個新的緩衝對象
(b) 通過glBindBuffer()來綁定緩衝對象
(c) 複製vertex數據到緩衝對象
(17) 說明利用打包緩衝的優點與缺點
利用打包緩衝的優點在於它可以更有效的被GPU使用,因為所有需要的信息被放置在同一個內存區塊。打包緩衝的缺點在於如果你使用的是動態數據,更新會變得困難和更緩慢。
(18) 列出安卓中存儲的不同方法
安卓的存儲方法如下:
(a) 共享偏好:在鍵值對中儲存個人原始數據
(b)內部存儲:在設備內存中存儲個人數據
(c) 外部存儲:在共享的外部存儲中存儲公開數據
(d) 網路連接:通過自己的網路伺服器,在網路上存儲數據
(e) SQLite資料庫:在個人資料庫中存儲有結構的數據
(19) 什麼是遊戲循環?
對於任何遊戲開發,循環都是一個中心元素。循環對於進行必要的更新以及檢查遊戲中的變化很有用。圖表、動態、變化等都要依靠於遊戲循環。
(20) 什麼是FPS?
FPS意為每秒的幀數(frames per
second),表示了用來儲存和展示動態視頻的信息量。每一幀是一張靜態圖片,通過快速連續展示這些幀來表現動態的畫面。
(21) 安卓遊戲開發中的「onsurfacecreated」是什麼意思?
「onsurfacecreated」每次繪製表面時都會被調用,在應用程序啟動、關閉至背景後再啟動或者源改變時會發生。當背景環境丟失後,這些事件會被觸發,每個資產會丟失,需要被重新創建。所有資產和應用程序對象需要在此處被重新創建。
(22)「onsurfacecreated」什麼時候會出現?
當設備源改變時,屏幕尺寸會發生變化,從而出現「onsurfacecreated」。
(23) 程序員編程時的常見錯誤有哪些?
程序員編程時的常見錯誤有:
(a) 未聲明的變數
(b) 未初始化的變數
(c) 將未初始化的值賦給變數
(d) 用單個相等標誌來檢查相等
(e) 未聲明的函數
(f) 多餘的分號
(g) 超出數組的界限
(h) 誤用運算符&&和||
(24) 你可以用哪些遊戲引擎來開發遊戲?
以下是可以用來開發遊戲的不同遊戲引擎:
(1) AndEngine
(2) Rokon
(3) Libgdx
(4) Android-2D-Engine
(5) jMonkey Engine
(6) Cocos2D-Android
(25) AndEngine的主要功能有哪些?
AndEngine的主要功能包括:
(a) 安卓最優化
(b) 安卓1.6兼容
(c) 屏幕分割
(d) 網路多重播放器
(e) 多點觸摸
(f) 物理引擎
(26) 解釋Blender中的對象
Blender是一個3D計算機圖像軟體程序,用於開發視覺效果、3D遊戲、動畫電影和軟體,是一個開源程序。
在Blender中操作對象,當你按空格鍵時會打開菜單塊,在這裡你可以選擇任意尺寸的對象來創建球體、立方體等。選中對象之後,你可以進行很多操作,例如添加、刪除、移動、擴展以及旋轉對象。
在Blender中合併兩個對象,你需要進行以下幾步:
·在對象模式下選中兩個對象
·按Ctrl+J來將兩個對象合併成一個
·進入編輯模式,將其更改為表面操作模式
·按X來移除互相重合的表面或者面
·換回Vertex操作模式
·選中每個對象的公共邊來合併對象,按F來創建新的面
·按F後,兩個對象會合二為一
你還可以用屬性面板來轉換對象,如果你的需求很具體,就可以利用這個方法。為了編輯你的對象的屬性,你需要:
·打開屬性面板
·點擊對象圖標
你可以通過在旋轉、位置和尺寸面板中改變屬性來轉換對象。
你需要進入對象模式來複制對象,然後:
·右鍵點擊想要複製的對象
·按shift+D來將其複製
·右鍵點擊對象來退出抓取模式,不改變其位置
·然後,按M來調取層移動菜單
·點擊你想移動到的層的按鈕
(27) Blender遊戲引擎(BGE)與Unity3D的區別
BGE與Unity3D的區別在於:
※企業想要成功,如何打造下一代IT安全團隊?
※DDoS攻擊大起底 深扒DDoS不為人知的二三事
※從智慧出行看AI,為啥說騰訊雲有決勝的基因?
※顛覆傳統列印業務 基於雲列印方案的這些應用你知道么?
※蘋果不過啦?開源iOS和OS X內核XNU
TAG:IT168企業級 |