unity3d藍(lán)港面試題_第1頁(yè)
unity3d藍(lán)港面試題_第2頁(yè)
unity3d藍(lán)港面試題_第3頁(yè)
unity3d藍(lán)港面試題_第4頁(yè)
unity3d藍(lán)港面試題_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1. 請(qǐng)簡(jiǎn)述值類(lèi)型與引用類(lèi)型的區(qū)別答:區(qū)別:1.值類(lèi)型存儲(chǔ)在內(nèi)存棧中,引用類(lèi)型數(shù)據(jù)存儲(chǔ)在內(nèi)存堆中,而內(nèi)存單元中存放的是堆中存放的地址。2.值類(lèi)型存取快,引用類(lèi)型存取慢。3.值類(lèi)型表示實(shí)際數(shù)據(jù),引用類(lèi)型表示指向存儲(chǔ)在內(nèi)存堆中的數(shù)據(jù)的指針和引用。4.棧的內(nèi)存是自動(dòng)釋放的,堆內(nèi)存是.NET中會(huì)由GC來(lái)自動(dòng)釋放。5.值類(lèi)型繼承自System.ValueType,引用類(lèi)型繼承自System.Object??蓞⒖?#160;2.C#中所有引用類(lèi)型的基類(lèi)是什么答:引用類(lèi)型的基類(lèi)是System.Object 值類(lèi)型的基類(lèi)是System.ValueType同時(shí),值類(lèi)型也隱式繼承自System.Object

2、60;3.請(qǐng)簡(jiǎn)述ArrayList和List<Int>的主要區(qū)別答:ArrayList存在不安全類(lèi)型(ArrayList會(huì)把所有插入其中的數(shù)據(jù)都當(dāng)做Object來(lái)處理)裝箱拆箱的操作(費(fèi)時(shí))List是接口,ArrayList是一個(gè)實(shí)現(xiàn)了該接口的類(lèi),可以被實(shí)例化。 4.請(qǐng)簡(jiǎn)述GC(垃圾回收)產(chǎn)生的原因,并描述如何避免答:GC回收堆上的內(nèi)存避免:1)減少new產(chǎn)生對(duì)象的次數(shù)2)使用公用的對(duì)象(靜態(tài)成員)3)將String換為StringBuilder 5.請(qǐng)描述Interface與抽象類(lèi)之間的不同答:抽象類(lèi)表示該類(lèi)中可能已經(jīng)有一些方法的具體定義,但接口就是公公只能定

3、義各個(gè)方法的界面 ,不能具體的實(shí)現(xiàn)代碼在成員方法中。類(lèi)是子類(lèi)用來(lái)繼承的,當(dāng)父類(lèi)已經(jīng)有實(shí)際功能的方法時(shí)該方法在子類(lèi)中可以不必實(shí)現(xiàn),直接引用父類(lèi)的方法,子類(lèi)也可以重寫(xiě)該父類(lèi)的方法。實(shí)現(xiàn)接口的時(shí)候必須要實(shí)現(xiàn)接口中所有的方法,不能遺漏任何一個(gè)。參考6.下列代碼在運(yùn)行中會(huì)產(chǎn)生幾個(gè)臨時(shí)對(duì)象? string a = new string("abc"); a = (a.ToUpper() + "123").Substring(0, 2); 答:其實(shí)在C#中第一行是會(huì)出錯(cuò)的(Java中倒是可行)。應(yīng)該這樣初始化:string b = new string(new char

4、'a','b','c'); 7.下列代碼在運(yùn)行中會(huì)發(fā)生什么問(wèn)題?如何避免? List<int> ls = new List<int>(new int 1, 2, 3, 4, 5 ); foreach (int item in ls) Console.WriteLine(item * item); ls.Remove(item); 答:會(huì)產(chǎn)生運(yùn)行時(shí)錯(cuò)誤,因?yàn)閒oreach是只讀的。不能一邊遍歷一邊修改。8.請(qǐng)簡(jiǎn)述關(guān)鍵字Sealed用在類(lèi)聲明和函數(shù)聲明時(shí)的作用答:類(lèi)聲明時(shí)可防止其他類(lèi)繼承此類(lèi),在方法中聲明則可防止派生

5、類(lèi)重寫(xiě)此方法。 9.請(qǐng)簡(jiǎn)述private,public,protected,internal的區(qū)別答:public:對(duì)任何類(lèi)和成員都公開(kāi),無(wú)限制訪問(wèn)private:僅對(duì)該類(lèi)公開(kāi)protected:對(duì)該類(lèi)和其派生類(lèi)公開(kāi)internal:只能在包含該類(lèi)的程序集中訪問(wèn)該類(lèi)protected internal:protected + internal 10.反射的實(shí)現(xiàn)原理? 答:審查元數(shù)據(jù)并收集關(guān)于它的類(lèi)型信息的能力。參考反射個(gè)人認(rèn)為,就是得到程序集中的屬性和方法。實(shí)現(xiàn)步驟:1,導(dǎo)入using System.Reflection;2,Assembly.Load("

6、;程序集")加載程序集,返回類(lèi)型是一個(gè)Assembly3,   foreach (Type type in assembly.GetTypes()                            string t = type.Name;               得到程序集中所有類(lèi)的名稱(chēng)4,Type type = assembly.GetType(

7、"程序集.類(lèi)名");獲取當(dāng)前類(lèi)的類(lèi)型5,Activator.CreateInstance(type); 創(chuàng)建此類(lèi)型實(shí)例6,MethodInfo mInfo = type.GetMethod("方法名");獲取當(dāng)前方法7,mInfo.Invoke(null,方法參數(shù)); 11.Net與Mono的關(guān)系?答:Mono官網(wǎng)主頁(yè)Mono is a software platform designed to allow developers to easily create cross platform applications. Sponsor

8、ed by Xamarin, Mono is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime. mono是.net的一個(gè)開(kāi)源跨平臺(tái)工具,就類(lèi)似java虛擬機(jī),java本身不是跨平臺(tái)語(yǔ)言,但運(yùn)行在虛擬機(jī)上就能夠?qū)崿F(xiàn)了跨平臺(tái)。.net只能在windows下運(yùn)行,mono可以實(shí)現(xiàn)跨平臺(tái)跑,可以運(yùn)行于linux,

9、Unix,Mac OS等。12.簡(jiǎn)述Unity3D支持的作為腳本的語(yǔ)言的名稱(chēng)答:Unity的腳本語(yǔ)言基于Mono的.Net平臺(tái)上運(yùn)行,可以使用.NET庫(kù),這也為XML、數(shù)據(jù)庫(kù)、正則表達(dá)式等問(wèn)題提供了很好的解決方案。Unity里的腳本都會(huì)經(jīng)過(guò)編譯,他們的運(yùn)行速度也很快。這三種語(yǔ)言實(shí)際上的功能和運(yùn)行速度是一樣的,區(qū)別主要體現(xiàn)在語(yǔ)言特性上。JavaScript:和網(wǎng)頁(yè)中常用的JavaScript不一樣,它編譯后的運(yùn)行速度很快,語(yǔ)法方面也會(huì)有不少區(qū)別。C#Boo:可以看做是Python語(yǔ)言的變種,又糅合了Ruby和C#的特性,它是靜態(tài)類(lèi)型語(yǔ)言 13.Unity3D是否支持寫(xiě)成多線程程序?如果

10、支持的話需要注意什么?答:參考 僅能從主線程中訪問(wèn)Unity3D的組件,對(duì)象和Unity3D系統(tǒng)調(diào)用支持:如果同時(shí)你要處理很多事情或者與Unity的對(duì)象互動(dòng)小可以用thread,否則使用coroutine。注意:C#中有l(wèi)ock這個(gè)關(guān)鍵字,以確保只有一個(gè)線程可以在特定時(shí)間內(nèi)訪問(wèn)特定的對(duì)象 14.Unity3D的協(xié)程和C#線程之間的區(qū)別是什么?答:多線程程序同時(shí)運(yùn)行多個(gè)線程 ,而在任一指定時(shí)刻只有一個(gè)協(xié)程在運(yùn)行,并且這個(gè)正在運(yùn)行的協(xié)同程序只在必要時(shí)才被掛起。除主線程之外的線程無(wú)法訪問(wèn)Unity3D的對(duì)象、組件、方法。Unity3d沒(méi)有多線程的概念,不過(guò)unity也給

11、我們提供了StartCoroutine(協(xié)同程序)和LoadLevelAsync(異步加載關(guān)卡)后臺(tái)加載場(chǎng)景的方法。 StartCoroutine為什么叫協(xié)同程序呢,所謂協(xié)同,就是當(dāng)你在StartCoroutine的函數(shù)體里處理一段代碼時(shí),利用yield語(yǔ)句等待執(zhí)行結(jié)果,這期間不影響主程序的繼續(xù)執(zhí)行,可以協(xié)同工作。而LoadLevelAsync則允許你在后臺(tái)加載新資源和場(chǎng)景,所以再利用協(xié)同,你就可以前臺(tái)用loading條或動(dòng)畫(huà)提示玩家游戲未卡死,同時(shí)后臺(tái)協(xié)同處理加載的事宜asynchronouse s kr n s .synchronous同步。 15.U3D中用于記錄節(jié)點(diǎn)空間幾何信

12、息的組件名稱(chēng),及其父類(lèi)名稱(chēng)答:Transform 父類(lèi)是 Component 16.簡(jiǎn)述四元數(shù)的作用,四元數(shù)對(duì)歐拉角的優(yōu)點(diǎn)?答:四元數(shù)用于表示旋轉(zhuǎn)相對(duì)歐拉角的優(yōu)點(diǎn):1)能進(jìn)行增量旋轉(zhuǎn)2)避免萬(wàn)向鎖3)給定方位的表達(dá)方式有兩種,互為負(fù)(歐拉角有無(wú)數(shù)種表達(dá)方式)17.向量的點(diǎn)乘、叉乘以及歸一化的意義?1)點(diǎn)乘描述了兩個(gè)向量的相似程度,結(jié)果越大兩向量越相似,還可表示投影2)叉乘得到的向量垂直于原來(lái)的兩個(gè)向量3)標(biāo)準(zhǔn)化向量:用在只關(guān)系方向,不關(guān)心大小的時(shí)候 18.矩陣相乘的意義及注意點(diǎn)用于表示線性變換:旋轉(zhuǎn)、縮放、投影、平移、仿射注意矩陣的蠕變:誤差的積累 19.為何大家

13、都在移動(dòng)設(shè)備上尋求U3D原生GUI的替代方案不美觀,OnGUI很耗費(fèi)時(shí)間,使用不方便  20.請(qǐng)簡(jiǎn)述如何在不同分辨率下保持UI的一致性NGUI很好的解決了這一點(diǎn),屏幕分辨率的自適應(yīng)性,原理就是計(jì)算出屏幕的寬高比跟原來(lái)的預(yù)設(shè)的屏幕分辨率求出一個(gè)對(duì)比值,然后修改攝像機(jī)的size。原生GUI NGUI  21.為什么dynamic font在unicode環(huán)境下優(yōu)于static fontUnicode是國(guó)際組織制定的可以容納世界上所有文字和符號(hào)的字符編碼方案。使用動(dòng)態(tài)字體時(shí),Unity將不會(huì)預(yù)先生成一個(gè)與所有字體的字符紋理。當(dāng)需要支持亞洲語(yǔ)言或者較大

14、的字體的時(shí)候,若使用正常紋理,則字體的紋理將非常大。 22.Render的作用?描述MeshRender和SkinnedMeshRender的關(guān)系與不同A renderer is what makes an object appear on the screen。 23.簡(jiǎn)述SkinnedMesh的實(shí)現(xiàn)原理 24.在場(chǎng)景中放置多個(gè)Camera并同時(shí)處于活動(dòng)狀態(tài)會(huì)發(fā)生什么答:游戲界面可以看到很多攝像機(jī)的混合 25.Prefab的作用?如何在移動(dòng)環(huán)境的設(shè)備下恰當(dāng)?shù)厥褂盟??答:Prefab在實(shí)例化的時(shí)候用到,主要用于經(jīng)常會(huì)用到的物體,屬性方便修改 2

15、6.如何銷(xiāo)毀一個(gè)UnityEngine.Object及其子類(lèi)答:Destory 27.為什么Unity3D中會(huì)發(fā)生在組件上出現(xiàn)數(shù)據(jù)丟失的情況?答:組件上綁定的對(duì)象被刪除了 28.如何安全的在不同工程間安全地遷移asset數(shù)據(jù)?三種答:將Assets目錄和Library目錄一起遷移導(dǎo)出包用unity自帶的assets Server功能 29.MeshCollider和其他Collider的一個(gè)主要不同點(diǎn)?答:Convex? 30.當(dāng)一個(gè)細(xì)小的高速物體撞向另一個(gè)較大的物體時(shí),會(huì)出現(xiàn)什么情況?如何避免?穿透(碰撞檢測(cè)失敗)31.OnEnable、Awake、Start運(yùn)行時(shí)的發(fā)生順序?哪些可能在同一個(gè)對(duì)象周期中反復(fù)的發(fā)生?答Awake -OnEnable-StartOnEnable在同一周期中可以反復(fù)地發(fā)生 32.請(qǐng)簡(jiǎn)述OnBecameVisible及OnBecameInvisible的發(fā)生時(shí)機(jī),以及這一對(duì)回調(diào)函數(shù)的意義?答當(dāng)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論