Unity3D工程師高頻面試題,向著高薪進(jìn)發(fā)
來源:
奇酷教育 發(fā)表于:
想要應(yīng)聘一個(gè)高薪職位,第一關(guān)就是面試。那對(duì)于游戲開發(fā)的小伙伴來說,Unity3D游戲開發(fā)面試時(shí)要注意哪些問題呢?下面奇酷教育就總結(jié)了
想要應(yīng)聘一個(gè)高薪職位,第一關(guān)就是面試。那對(duì)于游戲開發(fā)的小伙伴來說,
Unity3D
游戲開發(fā)面試時(shí)要注意哪些問題呢?下面奇酷教育就總結(jié)了一些面試高頻題目,相信可以為大家?guī)硪恍椭?
請(qǐng)簡(jiǎn)述值類型與引用類型的區(qū)別
答:區(qū)別:
值類型存儲(chǔ)在內(nèi)存棧中,引用類型數(shù)據(jù)存儲(chǔ)在內(nèi)存堆中,而內(nèi)存單元中存放的是堆中存放的地址。
值類型存取快,引用類型存取慢。
值類型表示實(shí)際數(shù)據(jù),引用類型表示指向存儲(chǔ)在內(nèi)存堆中的數(shù)據(jù)的指針和引用。
棧的內(nèi)存是自動(dòng)釋放的,堆內(nèi)存是.NET中會(huì)由GC來自動(dòng)釋放。
值類型繼承自System.ValueType,引用類型繼承自System.Object。
C#中所有引用類型的基類是什么
答:引用類型的基類是System.Object 值類型的基類是System.ValueType,同時(shí),值類型也隱式繼承自
請(qǐng)簡(jiǎn)述ArrayList和List的主要區(qū)別
答:ArrayList存在不安全類型,(ArrayList會(huì)把所有插入其中的數(shù)據(jù)都當(dāng)做Object來處理)裝箱拆箱的操作(費(fèi)時(shí)),List是接口,ArrayList是一個(gè)實(shí)現(xiàn)了該接口的類,可以被實(shí)例化。
請(qǐng)簡(jiǎn)述GC(垃圾回收)產(chǎn)生的原因,并描述如何避免?
答:GC回收堆上的內(nèi)存,避免:
?。p少new產(chǎn)生對(duì)象的次數(shù)
)使用公用的對(duì)象(靜態(tài)成員)
?。tring換為
請(qǐng)描述Interface與抽象類之間的不同
答:抽象類表示該類中可能已經(jīng)有一些方法的具體定義,但接口就是只能定義各個(gè)方法的界面 ,不能具體的實(shí)現(xiàn)代碼在成員方法中。
類是子類用來繼承的,當(dāng)父類已經(jīng)有實(shí)際功能的方法時(shí)該方法在子類中可以不必實(shí)現(xiàn),直接引用父類的方法,子類也可以重寫該父類的方法。
實(shí)現(xiàn)接口的時(shí)候必須要實(shí)現(xiàn)接口中所有的方法,不能遺漏任何一個(gè)。
下列代碼在運(yùn)行中會(huì)產(chǎn)生幾個(gè)臨時(shí)對(duì)象?
答:其實(shí)在C#中第一行是會(huì)出錯(cuò)的(Java中倒是可行)。應(yīng)該這樣初始化:
下列代碼在運(yùn)行中會(huì)發(fā)生什么問題?如何避免?
答:會(huì)產(chǎn)生運(yùn)行時(shí)錯(cuò)誤,因?yàn)閒oreach是只讀的。不能一邊遍歷一邊修改。
請(qǐng)簡(jiǎn)述關(guān)鍵字Sealed用在類聲明和函數(shù)聲明時(shí)的作用
答:類聲明時(shí)可防止其他類繼承此類,在方法中聲明則可防止派生類重寫此方法。
請(qǐng)簡(jiǎn)述private,public,protected,internal的區(qū)別
答:
對(duì)任何類和成員都公開,無限制訪問
僅對(duì)該類公開
對(duì)該類和其派生類公開
只能在包含該類的程序集中訪問該類
簡(jiǎn)述unity3d支持的作為腳本的語(yǔ)言的名稱
答:Unity的腳本語(yǔ)言基于Mono的.Net平臺(tái)上運(yùn)行,可以使用.NET庫(kù),這也為XML、數(shù)據(jù)庫(kù)、正則表達(dá)式等問題提供了很好的解決方案。
里的腳本都會(huì)經(jīng)過編譯,他們的運(yùn)行速度也很快。這三種語(yǔ)言實(shí)際上的功能和運(yùn)行速度是一樣的,區(qū)別主要體現(xiàn)在語(yǔ)言特性上。
和網(wǎng)頁(yè)中常用的JavaScript不一樣,它編譯后的運(yùn)行速度很快,語(yǔ)法方面也會(huì)有不少區(qū)別。
類似于Java編程語(yǔ)言的變異型語(yǔ)言;
可以看做是Python語(yǔ)言的變種,又糅合了Ruby和C#的特性,它是靜態(tài)類型語(yǔ)言
Unity3D是否支持寫成多線程程序?如果支持的話需要注意什么?
答:
僅能從主線程中訪問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)訪問特定的對(duì)象
U3D中用于記錄節(jié)點(diǎn)空間幾何信息的組件名稱,及其父類名稱
答:Transform 父類是
矩陣相乘的意義及注意點(diǎn)
答:用于表示線性變換:旋轉(zhuǎn)、縮放、投影、平移、仿射注意矩陣的蠕變:誤差的積累
為何大家都在移動(dòng)設(shè)備上尋求U3D原生GUI的替代方案
答:不美觀,OnGUI很耗費(fèi)時(shí)間,使用不方便
為什么Unity3D中會(huì)發(fā)生在組件上出現(xiàn)數(shù)據(jù)丟失的情況?
答:組件上綁定的對(duì)象被刪除了