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