去藍港在線面試Unity3D的筆試題。難嗎?知道答案的在評論里寫出來分享


前一陣子去藍港面試unity3d程序,在前台登記以后被領到一個吧台前面填2張個人信息表,之后有人送來筆試題,做了1個小時,感覺挺難的。之后被帶到下面面試,面試的是一個年齡稍大的(可能是項目經理或者技術總監),和另一個較為年輕的unity主程,人都比較隨和,面試過程沒有感覺壓抑,想說什么就說什么。除了問一些技術問題,就是下面面試題的一個拓展,還問了有沒有玩過藍港的游戲,看我的手機是windowsphone的,就問了我之前有沒有把自己做的東西發布到自己wp手機上。雖然自己技術還很欠缺,但是去藍港面試一回還是很有收獲的。下面是這次的筆試題,拿出來分享,希望大家遇到自己會的能把答案在評論里貼出來,和大家一起分享探討

 

1、請簡述值類型與引用類型的區別。

值類型傳遞的是值本身,引用類型傳遞的是地址。


2、C#中所有引用類型的基類是什么?

object


3、請簡述ArrayList和List<int>之間的主要區別。

 LIST是接口類,ArrayList類實現了這個接口,可以這樣用:List a=new ArrayList();


4、請簡述GC(垃圾收集)產生的原因,並描述如何避免。

      GC一般是回收在堆上的內存,所以一般new的話 只new在棧上就好了 ,適當的做些objectpool,也會減輕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工作。*^◎^*

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM