下面是我收集的一些題目以及答案(答案可能有些包含我自己的見解,如有錯誤請指出)。
1.面向對象的三大特性
封裝、繼承、多態
2.裝箱和拆箱
裝箱:值類型轉換為引用類型
拆箱:引用類型轉換為值類型
.NET中,數據類型劃分為值類型和引用(不等同於C++的指針)類型,與此對應,內存分配被分成了兩種方式,一為棧,二為堆,注意:是托管堆。
值類型只會在棧中分配。
引用類型分配內存與托管堆。
托管堆對應於垃圾回收。
3.C#可否對內存進行直接的操作?
可以,通過加一個unsafe關鍵字實現。
4.C#中結構和類的區別
機構和類具有大體的語法,結構受到的限制比類要多。結構不能聲明構造函數。結構是值類型,類是引用類型。結構的實例化可以不使用new關鍵字。類可以實現接口,結構不可以。
5.接口可否繼承接口?抽象類可否實現接口?抽象類可否繼承實體類?
(1)接口可以繼承接口
(2)抽象類可以實現接口
(3)抽象類可以繼承實體類,但是有個條件,實體類必須有明確的構造方法。
6.構造器Constructor是否可以被繼承?是否可以被重寫(Override)?
構造器不可以被繼承,因此不能被重寫,但可以被重載(overload)。
7.Error和Exception的區別
error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況; exception 表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況。
8.說說你對C#中的委托的理解
委托是一個類,它定義了方法的類型,使得可以將方法當作另一個方法的參數來進行傳遞,這種將方法動態地賦給參數的做法,可以避免在程序中大量使用If-Else(Switch)語句,同時使得程序具有更好的可擴展性。事件是一種消息機制,是一種委托,委托不帶方法體。
9.簡述反射與序列化
反射:其實就對程序集的動態操作,程序集包括了模塊,而模塊裡面包含類型,類型又包含成員。反射提供了封裝程序集,模塊和類型的對象。
我們可以使用反射動態的創建類型的實例,將類型綁定到現有的對象,或者從現有對象中獲取類型,然後就可以調用類型的方法或訪問字段和屬性了。
序列化:簡單理解成把對象轉換為容易傳輸的格式的過程。比如,可以序列化一個對象,然後使用HTTP通過Internet在客戶端和服務器端之間傳輸該對象。
在另一端可以使用反序列化從該流重新構造對象。
10.C#中值類型和引用類型的區別
(1)值類型的數據存儲在內存的棧中;引用類型的數據存儲在內存的堆中,而內存單元中只存放堆中對象的地址。
(2)值類型存取速度快,引用類型存取速度慢。
(3)值類型表示實際數據,引用類型表示指向存儲在內存堆中的數據的指針或引用
(4)值類型繼承自System.ValueType,引用類型繼承自System.Object
(5)棧的內存分配是自動釋放;而堆在.NET中會有GC來釋放
(6)值類型的變量直接存放實際的數據,而引用類型的變量存放的則是數據的地址,即對象的引用。
歡迎補充……
11.談談你對三層架構的認識
(1)DAL:數據訪問層,直接對數據庫進行增刪改查。
(2)BLL:業務邏輯層,對數據業務的處理。
(3)UI:表現層,對處理過的數據展現給用戶。
優點:體現面向對象編程的思想:高內聚低耦合,提高擴展性。
12. ado.net使用到哪些類?
SqlConnection、SqlDataAdaptor、DataSet、SqlCommand、SqlDataReader
13.SQL語句實現分頁:在表T中(有自增子段ID)查詢第31-40條記錄
select * from (select ROW_NUMBER() over (order by ID) as rowNum,* from T) as t where rowNum between 31 and 40
歡迎各位補充,希望這些對需要的人有點用。