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