1.在類(lèi)的構(gòu)造函數(shù)前加上static會(huì)報(bào)什么錯(cuò)?為什么?
答:在構(gòu)造函數(shù)如果有public修飾的靜態(tài)構(gòu)造函數(shù)時(shí)會(huì)報(bào):“靜態(tài)構(gòu)造函數(shù)中不允許出現(xiàn)訪問(wèn)修飾符”,如果什么修飾符都不加的話不會(huì)報(bào)錯(cuò),靜態(tài)構(gòu)造函數(shù)一般是起初始化作用。?
StringBuilder類(lèi)型比string類(lèi)型的優(yōu)勢(shì)是什么?
答:StringBuilde的優(yōu)勢(shì)在于拼接,string的優(yōu)勢(shì)在于對(duì)字符串做一些處理,在使用過(guò)程中看具體的需求。
3.C#函數(shù)Func(string
a, string b)用Lambda表達(dá)式怎么寫(xiě)?
答:(a,b)=>{}
4.數(shù)列1,1,2,3,5,8,13...第n位數(shù)是多少?用C#遞歸算法實(shí)現(xiàn)

5.請(qǐng)簡(jiǎn)述值類(lèi)型與引用類(lèi)型的區(qū)別
答:區(qū)別:
1.值類(lèi)型存儲(chǔ)在內(nèi)存棧中,引用類(lèi)型數(shù)據(jù)存儲(chǔ)在內(nèi)存堆中,而內(nèi)存單元中存放的是堆中
存放的地址。
2.值類(lèi)型存取快,引用類(lèi)型存取慢。
3.值類(lèi)型表示實(shí)際數(shù)據(jù),引用類(lèi)型表示指向存儲(chǔ)在內(nèi)存堆中的數(shù)據(jù)的指針和引用。
4.棧的內(nèi)存是自動(dòng)釋放的,堆內(nèi)存是.NET中會(huì)由GC來(lái)自動(dòng)釋放。
5.值類(lèi)型繼承自System.ValueType,引用類(lèi)型繼承自System.Object。
6.請(qǐng)簡(jiǎn)述ArrayList和List<>的主要區(qū)別
答:ArrayList是非泛型列表,存儲(chǔ)數(shù)據(jù)時(shí)把所有的數(shù)據(jù)都當(dāng)成object類(lèi)型存儲(chǔ),存在裝箱問(wèn)題,取出來(lái)使用的時(shí)候存在拆箱問(wèn)題,裝箱拆箱會(huì)使性能變差,而且存在數(shù)據(jù)安全問(wèn)題,但是優(yōu)點(diǎn)在于可以讓值類(lèi)型和引用類(lèi)型互相轉(zhuǎn)換。
List是泛型列表,在使用的時(shí)候才去定義數(shù)據(jù)類(lèi)型,泛型避免了拆箱裝箱的問(wèn)題,存入讀取速度較快,類(lèi)型也更安全。
7.請(qǐng)簡(jiǎn)述GC(垃圾回收)產(chǎn)生的原因,并描述如何避免?
答:GC回收堆上的內(nèi)存避免:
1)減少new產(chǎn)生對(duì)象的次數(shù)
2)使用公用的對(duì)象(靜態(tài)成員)
3)如果字符串拼接多的將String換為StringBuilder
8.請(qǐng)描述Interface與抽象類(lèi)之間的不同
答:語(yǔ)法不同處:
1.抽象類(lèi)中可以有字段,接口沒(méi)有。
2.抽象類(lèi)中可以有實(shí)現(xiàn)成員,接口只能包含抽象成員。
3.抽象類(lèi)中所有成員修飾符都可以使用,接口中所有的成員都是對(duì)外的,所以不需要修飾符修飾。
用法不同處:
1.抽象類(lèi)是概念的抽象,接口關(guān)注于行為。
2.抽象類(lèi)的子類(lèi)與父類(lèi)的關(guān)系是泛化關(guān)系,耦合度較高,而實(shí)現(xiàn)類(lèi)和接口之間是實(shí)現(xiàn)的關(guān)系,耦合度比泛化低。
3.一個(gè)類(lèi)只能繼承一個(gè)類(lèi),但是可以實(shí)現(xiàn)多個(gè)接口。
11.請(qǐng)簡(jiǎn)述關(guān)鍵字Sealed用在類(lèi)聲明和函數(shù)聲明時(shí)的作用
答:Sealed訪問(wèn)修飾符用于類(lèi)時(shí),該類(lèi)是密封類(lèi),可防止其他類(lèi)繼承此類(lèi)。
在方法中使用時(shí)則可防止派生類(lèi)重寫(xiě)此方法。
13.反射的實(shí)現(xiàn)原理?
答:審查元數(shù)據(jù)并收集關(guān)于它的類(lèi)型信息的能力。
14.Net與Mono的關(guān)系?
答:mono是.net的一個(gè)開(kāi)源跨平臺(tái)工具。.net只能在windows下運(yùn)行,mono可以實(shí)現(xiàn)跨平臺(tái),可以運(yùn)行于linux,Unix,Mac OS等。
15.請(qǐng)說(shuō)出4種面向?qū)ο蟮脑O(shè)計(jì)原則,并分別簡(jiǎn)述它們的含義。
答:1)單一職責(zé)原則:一個(gè)類(lèi),最好只做一件事,只有一個(gè)引起它的變化.
2)開(kāi)放-封閉原則:對(duì)于擴(kuò)展是開(kāi)放的,對(duì)于更改是封閉的
3)里氏替換原則:子類(lèi)必須能夠替換其基類(lèi)
4)依賴(lài)倒置原則:依賴(lài)于抽象
5)接口隔離原則:使用多個(gè)小的專(zhuān)門(mén)的接口,而不要使用一個(gè)大的總接口。
16.Hashtable是無(wú)序的嗎?
答:電腦沒(méi)有絕對(duì)的無(wú)序,hashtable是通過(guò)哈希碼讓開(kāi)發(fā)者感覺(jué)無(wú)序。