unity,C#,遊戲面試筆試真題

最開始的兩家公司筆試面試題目

一家公司是學校聘請研究教育方面VR課件的公司,面試沒幾天,就收到了面試經過的消息,後面由於經過了另外一家遊戲公司而拒絕了。html

另外一家公司是一家遊戲外企,在春熙路,當時筆試還能夠,面試被問及到不少圖形學的知識,不行被刷面試

C#知識

1.值類型,引用類型;裝箱和拆箱:
2.接口和類的繼承。
3.String , StringBuilder區別。 
4.C#與C++結構體的區別
5.sealed,const 和onlyread的區別; ""與null的區別
6.委託,delate :三種泛型委託
7.協程和多線程的區別?結構體和類的區別?
8.命名空間?unity 的命名空間-unityEngne
 9.實現計時器的方法? Time eltatine:協程

計算機圖形學

1.期末成績,學了什麼。算法

2.光照模型有哪些,公式?蘭伯特 半蘭伯特等
3.3維模型組成?  Mesh
4.如向將文理貼在模型上? uv座標
5. 圖片向格式有那些?

數據結構

數據結構有哪些?最熟悉什麼?編程

Unity

1.碰撞器,觸發器的區別。物體發生碰撞的幾個過程?
2.Mesh下面有哪些字段(熟悉組件不的字段)頂點座標,法線,紋理座標,三角形繪製序列等
3.如何實現資源複用? 對象池
4.U3D腳本的生命週期? Awake一Start—— Update- FixedUpdate一LateUpdate -0nGUI一Reset一OnDisable一OnDestoy
5.如何實現UI界面的層級?圖集的建立?圖集的做用?
6.座標空間有哪些?順序?世界座標系一屏幕座標系--- GUI界面一視口..canvas

 

天府四街某科技有限公司

公司主要是作棋牌類的帶有賭博性質的遊戲,當時公司成立沒多久,很幸運的進去了。設計模式

當時筆試主要是針對lua和shader方面,大概記得幾個:數組

1.lua實現類的繼承微信

2.lua遍歷查找某個數數據結構

3.shader實現半透明效果多線程

4.優化

反正全是編程題和簡答題。當時優化寫了有對象池,面試就被問到了對象池

簇橋附近某科技有限公司

一家修馬路的公司,公司很大,環境很好。當時面試感受還能夠,就是不少優化方面的不太懂,因此沒過。

1.向量的加減

2.ngui和ugui的區別
3.用過的數據結構有哪些,優缺點
4.優化

5.字典和List的區別

還有一些想不起來了。。。

東郊記憶附近某科技有限公司

這個公司主要是作休閒小遊戲的,聽說兩三個星期就能完成一款小遊戲。當時談得挺好的,說後面聯繫我,就再也沒有聯繫了。

1.當時主要問了下爲何想跳槽

2.在原來公司的主要工做

3.當一款遊戲改動後,如何作升級工做,用什麼方法。

高新附近某科技有限公司

目前有三個項目組,有一個是二次元偏女性的。

1.UI用的是什麼框架?UGUI
2.代碼用的是什麼框架?MVC
3.說說你在公司作的項目
4.代碼:單鏈表的增刪查
5.只須要說出思路: 有一條一次可跑6只小豬的賽道,如今有38只,用最少的次數測出跑得最快的前三隻
6.申請內存的方式:new
7.canvas的做用:
Canvas畫布負責UI組件的佈局以及渲染,全部的UI組建元素必須做爲Canvas的子節點。
8.單鏈表和數組的區別

環球中心某科技有限公司

這個公司主要是作格鬥,RPG類型的遊戲,地點在環球中心,地理位置是真的不錯,高大上,環境也很好。去應聘的時候公司正在招H5微信小遊戲的。當時端午快到了,看到公司每一個人都發了一盒糉子,一桶菜籽油,一袋米,恩,感受福利不錯,上班時間9:30-18:30.

基礎

1.面向對象和麪向過程的區別及其優缺點?
區別:
面向過程就是分析出解決問題的步驟,而後一步一步實現,在使用的時候分步調用便可;
面向對象就是把問題事務分解成各個對象,創建對象的目的不是爲了完成一個步驟,而是描述某個事物在整個解決問題步驟中的行爲。
面向過程
優勢:性能高
缺點:沒有面向對象易維護、易複用、易擴展
面向對象
優勢:易維護、易複用、易擴展,因爲面向對象有封裝、繼承、多態性的特性,能夠設計出低耦合的系統,使系統更加靈活、更加易於維護 。
缺點:性能低,類調用時須要實例化,開銷比較大,比較消耗資源。
2.面向對象程序有何特色,如何實現?
(1)封裝:C#對方法的封裝只須要改變方法的訪問級別,好比設爲public,private等。
(2)繼承:使用符號「:」實現繼承,繼承可使子類或者說派生類得到父類或者說基類的全部可被繼承的內容。
(3)多態:體如今函數重載和虛方法使用上,編譯時多態利用函數重載實現,運行時多態經過覆寫虛方法實現。
3.解釋時間複雜度和空間複雜度,並指出在評估算法質量是應選擇哪一個指標?
時間複雜度:程序運行過程當中所用的時間,與算法中語句的執行次數成正比例。
空間複雜度:算法須要消耗的內存空間
在評估算法質量是應選擇時間複雜度做爲主要標準。
4.求下面二叉樹的前序遍歷,中序遍歷的輸出結果。

前序遍歷:根左右6423517

中序遍歷:左根右3246157

後序遍歷:左右根3241756

5.選着你熟悉的一種排序算法編寫代碼實現方法Sort(int[])對一個數組進行排序。

當時作題選擇的是最簡單的排序:冒泡法。還有更過的排序方法請見:十大經典排序算法

6.編寫一個函數,當已知一個三角形邊長a,b,c時,求其對應的三個夾角。

這個題應該算是很簡單的,只要你瞭解三角形邊與角之間的公式,直接變換公式就能寫成程序。此題還須要調用反函數

C++部分

7.const *int a和const int *a,const int* const a有何區別?

後面那一塊很懵逼,看不懂。C++裏面的指針什麼的真的很煩人,當時也沒怎麼學懂,須要瞭解的本身百度吧,推薦一個答案:const int *a與int *const a,const int *const a的區別

8.假設x=9999,如下函數的輸出是多少?

1 int fun(int x) 2 { 3 int count=0; 4 while(x) 5  { 6 ++count; 7 x=x&(x-1); 8  } 9 }

恩,這個題也是醉了,沒有輸出語句,我怎麼知道輸出的是什麼變量,恩,可是呢,又不能直接那樣寫,因而當時寫的答案「輸出語句呢,若是要輸出count的值,輸出結果應該是4」

9.編寫一個函數模板,實現將輸入的數組逆序,並存儲到目標數組中,函數輸入參數src,原函數組dst,目標數組int len數組長度。

大體說下思路:將原數組逆序取出,順序存入目標數組

1 for(int i=len;i>=0;i--) 2 { 3 for (int j=0;j<len;j++) 4  { 5 dst[j]=src[i]; 6  } 7 }

 C#部分

10.ref和out有何區別?

(1)ref傳進去的參數必須在調用前初始化,out沒必要,即:

1 int i; 2 SomeMethod( ref i );//語法錯誤 3 SomeMethod( out i );//經過

(2)ref傳進去的參數在函數內部能夠直接使用,而out不可:

1 public void SomeMethod(ref int i) 2 { 3 int j=i;//經過 4 //... 5 } 6 public void SomeMethod(out int i) 7 { 8 int j=i;//語法錯誤 9 }

(3)ref傳進去的參數在函數內部能夠不被修改,但out必須在離開函數體前進行賦值。
ref在參數傳遞以前必須初始化;而out則在傳遞前沒必要初始化,且在 ... 值類型與引用類型之間的轉換過程稱爲裝箱與拆箱。

11.閱讀如下代碼,程序輸出是什麼?

1 private class A 2 { 3 private int m_a; 4 public A(int _a) { m_a = _a;} 5 public virtual int GetA() 6 { 7 return m_a; 8 } 9 public int GetAA() 10 { 11 return m_a; 12 } 13 } 14 public class B : A 15 { 16 private int m_a; 17 public B(int _a) : base(_a) { m_a+=_a-1;} 18 public override int GetA() 19 { 20 return m_a; 21 } 22 } 23 var b = new B(12); 24 var a = b as A; 25 Console.WriteLine("GetA={0},GetAA={1}",b.GetAA(),a.GetA());

12.編寫一個函數,輸入指定長度,輸出一個包含數字,大寫字母,小寫字母的隨機字符串。要求:字符串的內容可選,便可以選擇是否包含數字/大寫字母/小寫字母,且可選內容是否重複。

 擴展

這兩個擴展題,真的是,個人能力有限,沒有思路。第一個題還能看懂題,後面一個題越看越懵逼,忘大佬解答。

13.選擇你熟悉的一門語言,或者使用僞代碼,實現如下功能:

一個矩形Rectangle包含左上角座標(x1,y1),右下角座標(x2,y2),width,height(寬,高)四個屬性

bool intersect(Rectangle b) 判斷是否與矩形B相交

bool contain(Rectangle b)  判斷矩形b是否被包含在當前矩形中

可選:Rectangle Rotate(p,angle) 將矩形按照點p旋轉angle角度,並返回旋轉後的矩形。

14.假設現有M我的,分散在N各QQ羣中,任何人能夠屬於一個或多個羣,如今須要將M我的按照如下要求從新分紅K個組:

從新分組後:

(1)每組成員是互斥的,即任意兩個新組之間的交集是空的

(2)任意兩組組成的冰機不是分組錢任意QQ羣的子集。

(3)任意一組成員至少是1個分組的QQ羣的子集。

(4)任意一組成員與任意其餘QQ羣的交集只能爲空或等於該新分組自身。

選擇你熟悉的一門語言或僞代碼完成以上功能。

 軟件園E5某公司

1.怎樣引用全局變量
2.局部靜態變量和局部通常變量的區別
3.實現一個函數中的構造函數(有兩個),析構函數,賦值函數等方法
4.#define A(x) x+x
b=5*A,問b的值
5.分別使用bool,int,float,指針與"零"作比較
6.寫出下面程序的輸出結果,並說出有什麼問題

A(){ A(){ print("a"); } ~A(){ print("~a"); } } B():A{ B(){ print("b"); } ~B(){ print("~b"); } } main(){ A *pa=new B(); delete(*pa); }

7.矩陣運算
8.說你玩過的5個遊戲及心得
9.說出你最熟悉的設計模式,並舉例說明
10.寫一個函數,實如今字符串n中查找子串M,並返回查找到的第一個下標
11.人,羊,菜,狼過河問題
12.寫一個函數,查找任意一個數n,的連續幾個數之和也爲n.
筆試題暫時只記得這些了,下面說說面試吧
面試幾乎全考的簡歷上的內容
1.說說你數學建模擔任的角色,怎麼建的模等
2.C++學了那些,針對你說的考
3.計算機圖形學學了那些?,怎麼畫直線,裁剪算法有哪些,並說明怎麼實現,渲染管道,矩陣的逆運算,在圖形學中的意義
4.數據結構學了那些,隊列和棧的區別,如何實現用兩個棧實現隊列的功能。
5.如何洗牌?
6.說說在原來公司的項目,好友列表怎麼實現,無盡列表怎麼實現?
7.編輯器擴展怎麼實現?
8.lua怎麼實現繼承?
9.shader的光照模型知道那些

10.人工智能學過什麼,說一說蟻羣算法,蟻羣算法怎麼實現信息傳遞。蟻羣算法在遊戲中的應用:加入屏幕上有成千上萬的子彈,如何判斷子彈是否與玩家相撞(你不可能循環每一個子彈判斷)

相關文章
相關標籤/搜索