1. 請簡述值類型與引用類型的區(qū)別
我是想簡述下為什么第一個問題總是這個,因為所有出題的面試官都不走心的,
實(shí)際項目肯定是引用類型+值類型混用,難道你沒寫過? int currLevel =Game.Instance.LevelCount;
值類型包括:數(shù)值類型,結(jié)構(gòu)體,bool型,用戶定義的結(jié)構(gòu)體,枚舉,可空類型。
引用類型包括:數(shù)組,用戶定義的類、接口、委托,object,字符串,null類型,類。
2.C#中所有引用類型的基類是什么
C#基類Object 包名System
3.請簡述ArrayList和List的主要區(qū)別
Unity3d游戲開發(fā)過程中很少見ArrayList,都是用的List<>和[]多,
ArrayList這是老C#人才會用的變量,也可能是從JAVA借鑒過來,JAVA有Hashset做數(shù)組變量,
哥一開始學(xué)C#1.0對ArrayList的框架很不能理解,ArrayList繼承List覺得很多余的?
還有問這個問題的百度一查大把,真心沒幾個能從歷史,當(dāng)前流行項目,未來趨勢等各個方面分析出原因,不過分析出來也沒什么亂用,面試官出題的能不能別那么懶?
ArrayList 是一個數(shù)組,繼承實(shí)現(xiàn)了List基類,是比較傳統(tǒng)使用的程序數(shù)組變量
List是調(diào)用List,用了C#的泛型特性
4.請簡述GC(垃圾回收)產(chǎn)生的原因,并描述如何避免?
下面是標(biāo)準(zhǔn)答案,其實(shí)我倒想問問,你寫游戲用String??還用到StringBuilder??
CLR:公共運(yùn)行時環(huán)境,管理托管堆。
CTR:設(shè)置引用類型,值類型。
GC:只負(fù)責(zé)回收托管對象,不負(fù)責(zé)回收非托管對象。
避免:1)減少new產(chǎn)生對象的次數(shù)
2)使用公用的對象(靜態(tài)成員)
3)將String換為StringBuilder
5.請描述Interface與抽象類之間的不同
抽象類表示該類已經(jīng)有一些具體的實(shí)現(xiàn),而接口只是定義各方法,并沒有具提實(shí)現(xiàn),子類繼承抽象父類,可以只是繼承部分方法或直接引用父類的方法。類實(shí)現(xiàn)接口必須實(shí)現(xiàn)該接口所有方法
6.下列代碼在運(yùn)行中會產(chǎn)生幾個臨時對象?
先不論代碼書寫是否有錯,或者命名的,每個new都會產(chǎn)生臨時對象,()括號等同于new,那么應(yīng)該是6
*假如我問面試官,這2年要如何優(yōu)化,他不看標(biāo)準(zhǔn)答案,能答出來嗎?(其實(shí)你的思路可能比他還清晰,因為他工作多年,幾年來都不會見到這種代碼,那他為什么要出這個題?別為難面試官,人家從百度抄題目下來也是不容易的)
更多關(guān)于“unity培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。