1.在類的構(gòu)造函數(shù)前加上static會報什么錯?為什么?
答:在構(gòu)造函數(shù)如果有public修飾的靜態(tài)構(gòu)造函數(shù)時會報:“靜態(tài)構(gòu)造函數(shù)中不允許出現(xiàn)訪問修飾符”,如果什么修飾符都不加的話不會報錯翁都,靜態(tài)構(gòu)造函數(shù)一般是起初始化作用。?
StringBuilder類型比string類型的優(yōu)勢是什么胶滋?
答:StringBuilde的優(yōu)勢在于拼接绒北,string的優(yōu)勢在于對字符串做一些處理,在使用過程中看具體的需求。
3.C#函數(shù)Func(string
a, string b)用Lambda表達(dá)式怎么寫?
答:(a,b)=>{}
4.數(shù)列1,1,2,3,5,8,13...第n位數(shù)是多少?用C#遞歸算法實現(xiàn)
5.請簡述值類型與引用類型的區(qū)別
答:區(qū)別:
1.值類型存儲在內(nèi)存棧中滓侍,引用類型數(shù)據(jù)存儲在內(nèi)存堆中狈醉,而內(nèi)存單元中存放的是堆中
存放的地址廉油。
2.值類型存取快,引用類型存取慢苗傅。
3.值類型表示實際數(shù)據(jù)抒线,引用類型表示指向存儲在內(nèi)存堆中的數(shù)據(jù)的指針和引用。
4.棧的內(nèi)存是自動釋放的渣慕,堆內(nèi)存是.NET中會由GC來自動釋放嘶炭。
5.值類型繼承自System.ValueType,引用類型繼承自System.Object。
6.請簡述ArrayList和List<>的主要區(qū)別
答:ArrayList是非泛型列表逊桦,存儲數(shù)據(jù)時把所有的數(shù)據(jù)都當(dāng)成object類型存儲眨猎,存在裝箱問題,取出來使用的時候存在拆箱問題强经,裝箱拆箱會使性能變差睡陪,而且存在數(shù)據(jù)安全問題,但是優(yōu)點(diǎn)在于可以讓值類型和引用類型互相轉(zhuǎn)換匿情。
List是泛型列表兰迫,在使用的時候才去定義數(shù)據(jù)類型,泛型避免了拆箱裝箱的問題码秉,存入讀取速度較快逮矛,類型也更安全。
7.請簡述GC(垃圾回收)產(chǎn)生的原因转砖,并描述如何避免须鼎?
答:GC回收堆上的內(nèi)存避免:
1)減少new產(chǎn)生對象的次數(shù)
2)使用公用的對象(靜態(tài)成員)
3)如果字符串拼接多的將String換為StringBuilder
8.請描述Interface與抽象類之間的不同
答:語法不同處:
1.抽象類中可以有字段鲸伴,接口沒有。
2.抽象類中可以有實現(xiàn)成員晋控,接口只能包含抽象成員汞窗。
3.抽象類中所有成員修飾符都可以使用,接口中所有的成員都是對外的赡译,所以不需要修飾符修飾仲吏。
用法不同處:
1.抽象類是概念的抽象,接口關(guān)注于行為蝌焚。
2.抽象類的子類與父類的關(guān)系是泛化關(guān)系裹唆,耦合度較高,而實現(xiàn)類和接口之間是實現(xiàn)的關(guān)系只洒,耦合度比泛化低许帐。
3.一個類只能繼承一個類,但是可以實現(xiàn)多個接口毕谴。
11.請簡述關(guān)鍵字Sealed用在類聲明和函數(shù)聲明時的作用
答:Sealed訪問修飾符用于類時成畦,該類是密封類,可防止其他類繼承此類涝开。
在方法中使用時則可防止派生類重寫此方法循帐。
13.反射的實現(xiàn)原理?
答:審查元數(shù)據(jù)并收集關(guān)于它的類型信息的能力舀武。
14.Net與Mono的關(guān)系拄养?
答:mono是.net的一個開源跨平臺工具。.net只能在windows下運(yùn)行奕剃,mono可以實現(xiàn)跨平臺衷旅,可以運(yùn)行于linux,Unix纵朋,Mac OS等。
15.請說出4種面向?qū)ο蟮脑O(shè)計原則茄袖,并分別簡述它們的含義操软。
答:1)單一職責(zé)原則:一個類,最好只做一件事宪祥,只有一個引起它的變化.
2)開放-封閉原則:對于擴(kuò)展是開放的聂薪,對于更改是封閉的
3)里氏替換原則:子類必須能夠替換其基類
4)依賴倒置原則:依賴于抽象
5)接口隔離原則:使用多個小的專門的接口,而不要使用一個大的總接口蝗羊。
16.Hashtable是無序的嗎藏澳?
答:電腦沒有絕對的無序,hashtable是通過哈希碼讓開發(fā)者感覺無序耀找。