前一陣子去藍港面試unity3d程序,在前台登記以后被領到一個吧台前面填2張個人信息表,之后有人送來筆試題,做了1個小時,感覺挺難的。之后被帶到下面面試,面試的是一個年齡稍大的(可能是項目經理或者技術總監),和另一個較為年輕的unity主程,人都比較隨和,面試過程沒有感覺壓抑,想說什么就說什么。除了問一些技術問題,就是下面面試題的一個拓展,還問了有沒有玩過藍港的游戲,看我的手機是windowsphone的,就問了我之前有沒有把自己做的東西發布到自己wp手機上。雖然自己技術還很欠缺,但是去藍港面試一回還是很有收獲的。下面是這次的筆試題,拿出來分享,希望大家遇到自己會的能把答案在評論里貼出來,和大家一起分享探討。
1、請簡述值類型與引用類型的區別。
值類型傳遞的是值本身,引用類型傳遞的是地址。
2、C#中所有引用類型的基類是什么?
object
3、請簡述ArrayList和List<int>之間的主要區別。
LIST是接口類,ArrayList類實現了這個接口,可以這樣用:List a=new ArrayList();
4、請簡述GC(垃圾收集)產生的原因,並描述如何避免。
5、請描述interface和抽象類之間的不同。
網上很多
6、下列代碼在運行中,會產生幾個臨時對象?
string a=new string(“abc”); a=(a.ToUpperCase()+“123”).SubString(0,2);
7、下列代碼在運行中會發生什么問題?如何避免?
List<int> Is=new List<int>(new int[]{1,2,3,4,5}); foreach(int n in Is) { Debug.Log(n*n); Is.Remove(n); }
foreach會產生大量臨時對象 直接 Is.Clear()多好
8、請簡述sealed關鍵字用在類聲明時與函數聲明時的作用。
作為類別的時候 不能有子類 作為函數的修飾符的時候 在子類里不能重寫函數
9、請簡述private,public,protected,internal的區別。
private:私有成員,在類的內部才可以訪問。
public:公共成員,完全公開,沒有訪問限制。
protected:保護成員,該類內部和繼承中可以訪問。
internal:當前程序集內可以訪問。
10、請簡述反射的實現原理。
11、請簡述.Net與Mono之間的關系。
mono是.net的一個工具,.net只能在windows平台下跑,mono可以跨平台,可以運行於Linux,FreeBSD,Unix,OS X和Solaris
12、請簡述Unity3D支持的3種腳本語言的名稱。
C#、JS、BOO
13、Unity3D是否支持寫成多線程程序?如果支持的話要注意什么?
支持:如果同時你要處理很多事情或者與Unity的對象互動小可以用thread,否則使用coroutine。
注意:C#中有lock這個關鍵字,以確保只有一個線程可以在特定時間內訪問特定的對象
14、Unity3D中的協程(coroutine)和C#線程之間的區別是什么?
Unity3d沒有多線程的概念,不過unity也給我們提供了StartCoroutine(協同程序)和LoadLevelAsync(異步加載關卡)后台加載場景的方法。 StartCoroutine為什么叫協同程序呢,所謂協同,就是當你在StartCoroutine的函數體里處理一段代碼時,利用yield語句等待執行結果,這期間不影響主程序的繼續執行,可以協同工作。而LoadLevelAsync則允許你在后台加載新資源和場景,所以再利用協同,你就可以前台用loading條或動畫提示玩家游戲未卡死,同時后台協同處理加載的事宜asynchronous[e ɪˈ s ɪŋ kr ə n ə s] .synchronous同步。
15、請說出Unity3D中勇於記錄節點空間幾何信息的組件名稱,及其父類名稱。
transform,父類component
16、請簡述四元數的作用以及四元數相對歐拉角的優點。
17、請簡述向量的點乘,向量的叉乘以及向量歸一化的意義。
18、請簡述矩陣相乘的意義以及注意點。
19、請簡述為何大家都在移動設備上尋求Unity3D的原生GUI系統的替代方案。
20、請簡述如何在不同分辨率下保持UI的一致性。
21、請簡述為什么dynamic font在unicode環境下優於static font。
22、請簡述Renderer的作用,並描述MeshRenderer與SkinnedMeshRenderer之間的關系
與不同。
23、請簡述SkinnedMesh的實現原理。
24、在場景中Prefab的作用,並描述如何在移動設備環境下恰當的使用它。
26、如何銷毀一個UnityEngine.Object及其子類。
27、請簡述為什么Unity3D中會發生在組建上出現數據丟失的情況(missing)。
28、請簡述Unity3D下如何安全的在不同工程間遷移asset數據,請舉出三種方法。
1.可以把assets目錄和Library目錄一起遷移
2.導出包
3.用Unity帶的assets Server功能
29、請簡述MeshCollider和其他Collider的一個主要不同點。
30、當一個細小的高速運動的物體(如子彈)撞向另一個較大的物體時,可能出現什么
情況?如何避免?
31、請簡述OnEnable,Aawake和Start在運行時的發生順序。哪些可能在同一個對象的生
命期中發生。
32、請簡述OnBecameVisible及OnBecameInvisible的發生時機,以及這一對回調方法的
意義。
當renderer(渲染器)在任何相機上都不可見時調用:OnBecameInvisible
當renderer(渲染器)在任何相機上可見時調用:OnBecameVisible
33、請簡述Unity3D如何獲知場景中需要加載的數據。
34、請簡述MeshRenderer中material和sharedmaterial的區別。
認認真真一字一句看到這里,點“推薦”、評論的都能找到一份滿意的高薪unity3d工作。*^◎^*