日韩午夜福利a无码,三级亚洲中文字幕,免费高清av一区二区三区,国产精品白丝祙喷水视频

您現(xiàn)在所在的位置:首頁 >學(xué)員就業(yè) > 就業(yè)寶典 > 奇酷教育帶你挑戰(zhàn)高難度Unity3D試題,為面試打牢基礎(chǔ)(一)

奇酷教育帶你挑戰(zhàn)高難度Unity3D試題,為面試打牢基礎(chǔ)(一)

來源:奇酷教育 發(fā)表于:

想要得到高薪職位,第一關(guān)就是面試。那對于Unity3D開發(fā)的小伙伴來說,面試時往往更注重對技術(shù)方面的考察,今天奇酷教育總結(jié)了一些面試時的技

想要得到高薪職位,第一關(guān)就是面試。那對于Unity3D開發(fā)的小伙伴來說,面試時往往更注重對技術(shù)方面的考察,今天奇酷教育總結(jié)了一些面試時的技術(shù)性高頻題目,相信可以為大家?guī)硪恍椭?/span>
1. 請簡述值類型與引用類型的區(qū)別
 
答:區(qū)別:
1.值類型存儲在內(nèi)存棧中,引用類型數(shù)據(jù)存儲在內(nèi)存堆中,而內(nèi)存單元中存放的是堆中存放的地址。
2.值類型存取快,引用類型存取慢。
3.值類型表示實(shí)際數(shù)據(jù),引用類型表示指向存儲在內(nèi)存堆中的數(shù)據(jù)的指針和引用。
4.棧的內(nèi)存是自動釋放的,堆內(nèi)存是.NET中會由GC來自動釋放。
5.值類型繼承自System.ValueType,引用類型繼承自System.Object。
 
2.C#中所有引用類型的基類是什么
 
答:引用類型的基類是System.Object 值類型的基類是System.ValueType
 
同時,值類型也隱式繼承自System.Object
 
 
3.請簡述ArrayList和List<Int>的主要區(qū)別
 
答:ArrayList存在不安全類型‘(ArrayList會把所有插入其中的數(shù)據(jù)都當(dāng)做Object來處理)
 
裝箱拆箱的操作(費(fèi)時)
 
List是接口,ArrayList是一個實(shí)現(xiàn)了該接口的類,可以被實(shí)例化。
 
 
4.請簡述GC(垃圾回收)產(chǎn)生的原因,并描述如何避免?
 
答:GC回收堆上的內(nèi)存
 
避免:1)減少new產(chǎn)生對象的次數(shù)
 
2)使用公用的對象(靜態(tài)成員)
 
3)將String換為StringBuilder
 
5.請描述Interface與抽象類之間的不同
 
答:抽象類表示該類中可能已經(jīng)有一些方法的具體定義,但接口就是公公只能定義各個方法的界面 ,不能具體的實(shí)現(xiàn)代碼在成員方法中。
類是子類用來繼承的,當(dāng)父類已經(jīng)有實(shí)際功能的方法時該方法在子類中可以不必實(shí)現(xiàn),直接引用父類的方法,子類也可以重寫該父類的方法。
實(shí)現(xiàn)接口的時候必須要實(shí)現(xiàn)接口中所有的方法,不能遺漏任何一個。
 
6.下列代碼在運(yùn)行中會產(chǎn)生幾個臨時對象?
string a = new string("abc");
            a = (a.ToUpper() + "123").Substring(0, 2);   
復(fù)制代碼
答:其實(shí)在C#中第一行是會出錯的(Java中倒是可行)。應(yīng)該這樣初始化:
string b = new string(new char[]{'a','b','c'});
復(fù)制代碼
 
7.下列代碼在運(yùn)行中會發(fā)生什么問題?如何避免?
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);
            }   
復(fù)制代碼
答:會產(chǎn)生運(yùn)行時錯誤,因?yàn)閒oreach是只讀的。不能一邊遍歷一邊修改。
 
8.請簡述關(guān)鍵字Sealed用在類聲明和函數(shù)聲明時的作用
 
答:類聲明時可防止其他類繼承此類,在方法中聲明則可防止派生類重寫此方法。
 
 
9.請簡述private,public,protected,internal的區(qū)別
 
答:
 
public:對任何類和成員都公開,無限制訪問
 
private:僅對該類公開
 
protected:對該類和其派生類公開
 
internal:只能在包含該類的程序集中訪問該類
 
protected internal:protected + internal
 
10.反射的實(shí)現(xiàn)原理?
 
答:審查元數(shù)據(jù)并收集關(guān)于它的類型信息的能力。
反射個人認(rèn)為,就是得到程序集中的屬性和方法。
實(shí)現(xiàn)步驟:
1,導(dǎo)入using System.Reflection;
2,Assembly.Load("程序集")加載程序集,返回類型是一個Assembly
3,   foreach (Type type in assembly.GetTypes())
            {
                string t = type.Name;
            }
   得到程序集中所有類的名稱
4,Type type = assembly.GetType("程序集.類名");獲取當(dāng)前類的類型
5,Activator.CreateInstance(type); 創(chuàng)建此類型實(shí)例
6,MethodInfo mInfo = type.GetMethod("方法名");獲取當(dāng)前方法
7,mInfo.Invoke(null,方法參數(shù));
 
11. .Net與Mono的關(guān)系?
 
答:Mono官網(wǎng)主頁
 
Mono is a software platform designed to allow developers to easily create 
cross platform applications. Sponsored 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的一個開源跨平臺工具,就類似java虛擬機(jī),java本身不是跨平臺語言,但運(yùn)行在虛擬機(jī)上就能夠?qū)崿F(xiàn)了跨平臺。.net只能在windows下運(yùn)行,mono可以實(shí)現(xiàn)跨平臺跑,
可以運(yùn)行于linux,Unix,Mac OS等。
 
 
12.簡述Unity3D支持的作為腳本的語言的名稱
 
答:Unity的腳本語言基于Mono的.Net平臺上運(yùn)行,可以使用.NET庫,這也為XML、數(shù)據(jù)庫、正則表達(dá)式等問題提供了很好的解決方案。
 
Unity里的腳本都會經(jīng)過編譯,他們的運(yùn)行速度也很快。這三種語言實(shí)際上的功能和運(yùn)行速度是一樣的,區(qū)別主要體現(xiàn)在語言特性上。
 
JavaScript:和網(wǎng)頁中常用的JavaScript不一樣,它編譯后的運(yùn)行速度很快,語法方面也會有不少區(qū)別。
 
C#
 
Boo:可以看做是Python語言的變種,又糅合了Ruby和C#的特性,它是靜態(tài)類型語言
 
 
13.Unity3D是否支持寫成多線程程序?如果支持的話需要注意什么?
 
答:參考http://www.unitymanual.com/3821.html
 
僅能從主線程中訪問Unity3D的組件,對象和Unity3D系統(tǒng)調(diào)用
 
支持:如果同時你要處理很多事情或者與Unity的對象互動小可以用thread,否則使用coroutine。
 
注意:C#中有l(wèi)ock這個關(guān)鍵字,以確保只有一個線程可以在特定時間內(nèi)訪問特定的對象
 
 
14.Unity3D的協(xié)程和C#線程之間的區(qū)別是什么?
 
答:多線程程序同時運(yùn)行多個線程 ,而在任一指定時刻只有一個協(xié)程在運(yùn)行,并且這個正在運(yùn)行的協(xié)同程序只在必要時才被掛起。
 
除主線程之外的線程無法訪問Unity3D的對象、組件、方法。
 
Unity3d沒有多線程的概念,不過unity也給我們提供了StartCoroutine(協(xié)同程序)和LoadLevelAsync(異步加載關(guān)卡)后臺加載場景的方法。 StartCoroutine為什么叫協(xié)同程序呢,所謂協(xié)同,就是當(dāng)你在StartCoroutine的函數(shù)體里處理一段代碼時,利用yield語句等待執(zhí)行結(jié)果,這期間不影響主程序的繼續(xù)執(zhí)行,可以協(xié)同工作。而LoadLevelAsync則允許你在后臺加載新資源和場景,所以再利用協(xié)同,你就可以前臺用loading條或動畫提示玩家游戲未卡死,同時后臺協(xié)同處理加載的事宜asynchronous[e ?? s ?? kr ? n ? s] .synchronous同步。 
 
 
15.U3D中用于記錄節(jié)點(diǎn)空間幾何信息的組件名稱,及其父類名稱
 
答:Transform 父類是 Component
 
 
16.簡述四元數(shù)的作用,四元數(shù)對歐拉角的優(yōu)點(diǎn)?
 
答:四元數(shù)用于表示旋轉(zhuǎn)
 
相對歐拉角的優(yōu)點(diǎn):
 
1)能進(jìn)行增量旋轉(zhuǎn)
 
2)避免萬向鎖
 
3)給定方位的表達(dá)方式有兩種,互為負(fù)(歐拉角有無數(shù)種表達(dá)方式)
 
 
17.向量的點(diǎn)乘、叉乘以及歸一化的意義?
 
1)點(diǎn)乘描述了兩個向量的相似程度,結(jié)果越大兩向量越相似,還可表示投影
 
2)叉乘得到的向量垂直于原來的兩個向量
 
3)標(biāo)準(zhǔn)化向量:用在只關(guān)系方向,不關(guān)心大小的時候
 
 
18.矩陣相乘的意義及注意點(diǎn)
 
用于表示線性變換:旋轉(zhuǎn)、縮放、投影、平移、仿射
 
注意矩陣的蠕變:誤差的積累
 
 
19.為何大家都在移動設(shè)備上尋求U3D原生GUI的替代方案
 
不美觀,OnGUI很耗費(fèi)時間,使用不方便