C#面试知识点
?
理論部分
1、解釋.net、.netFrameWork、C#、Vs2005、ADO.NET
回答:.net:支持跨語言的開發平臺
.netframework:.net下一個重要的組件,是開發環境
C#:是一種語言
VS:開發工具
ADO.Net:是操作數據庫的一種技術.
?
2、為什么.NET程序第二次運行比第一次的效率高?
???? 回答:因為第一次需要編譯兩次,第一次是通過C#編譯器編譯成微軟中間語言(MSIL),它是獨立于CPU,不能被機器識別,第二次編譯是通過即時編譯器,編譯成二進制文件。第二次運行時,用哪編譯那。
?
3、解釋CLR、CTS、CLS?(或者是簡述NET框架體系的結構組成)
回答:.net框架運行于操作系統之上,它包含兩個重要組件:CLR(公共語言運行時)和FCL(.Net Frawork 類庫)
CLR分為:
CTS: 通用類型系統, 用于解決不同類型的轉化
CLS: 公共語言規范,用于制定以.net平臺為目標的最少特征的語言規范
?
4、什么是多態?多態分幾種?并分別解釋
???? 回答:多態就是多種形態. 也就是說多個對象在調用同一個方法時會有不同的結果。
多態分兩種一種是重載,一種是重寫
重載:在一個類中定義多個方法,方法名一樣,但是參數類型或參數個數不一樣,在方法調用的時候總能找到正確的方法,但是返回值類型不同不能構成重載的條件。
重寫.:當子類繼承父類時,子類把父類的一些屬性和方法繼承過來,一些方法不適合自己用的,就重寫。如果父類中的方法在子類中被重寫,調用的是被重寫的方法。父類方法不能隨便被重寫,只有父類的方法使用 virtual,override,abstract修飾才能重寫,并且子類在重寫的時候要使用Override關鍵字。
?
5、什么是構造方法,構造方法有什么特征
???? 回答:構造方法:1.名字與類名相同
2.沒有返回值,不是void,而是什么都沒有
3.只能用new關鍵字調用
4.實例化一個對象時會自動去調用相應的方法。
5、構造方法不能被繼承
注意:對于父類有參的構造方法,只能手動調用,用base關鍵字,如果一個類沒有構造方法,系統會提供一個默認的。
?
6、什么叫裝箱、什么叫拆箱
回答:裝箱:把值類型轉換成引用類型,拆箱:把引用類型轉換成值類型。
?
7、什么是值類型、什么是引用類型,他們有哪些區別?
回答:值類型包括:
基本數據類型(int,long,float,char,bool)
枚舉(enum)
結構(struct)
??????? ?引用類型包括:system.Object,string,class,接口(interface),數組
?
值類型:每一個值類型對象都有一個獨立的內存區域保存這個對象,若對象的值改變就會在內存中保存這個值,也就是再開辟塊空間。
引用類型:兩個不同的對象引用同一個值,它們會指向同一個物理地址。
?
值類型傳的是值,引用類型傳的是引用,它們在內存當中的存儲方式不同。
?
8、C#中常量用哪個關鍵字定義、使用時候注意什么?
???? 回答:C#中常量用const修飾
使用時注意:1.在使用時不會發生改變(不能重新賦值)
2.在程序中反復使用
?
9、用一個例子說明枚舉,枚舉是值類型還是引用類型?
枚舉使用關鍵字enum定義? 用它來定義一組有限的值,如性別
???? 回答:public enum Genders?? //定義枚舉
{
Male,Female
}
枚舉是值類型
?
10、什么是繼承?使用繼承需要注意哪些事項
???? 回答:繼承就是子類繼承父類的屬性和方法,拿過來變成自己的。
注意:
1.構造方法和私有的不能被繼承,但是可以調用父類的構造方法。
對于有參的構造方法需使用base關鍵字調用
???? ????2.繼承有傳遞性。
??????? ?3.C#中繼承有單根性,一個類不能同時繼承多個父類。
??????? ?4.實例化一個子類的時候,會自動去調用父類的構造方法
?
11、什么叫密封類
???? ? 回答:被sealed關鍵字修飾的類稱為密封類,密封類不能被繼承
?
12、什么是抽象類,什么是接口?他們有什么區別?使用抽象類需要注意哪些事項
回答:
抽象類:對具體對象的最高抽象,這個對象擁有自己的最基本特征,它只有方法的定義沒有方法的具體實現,用abstract修飾
接口:接口是某類行為或功能的抽象,是一種規范或者標準,用interface修飾?????????
?相同點:
1、都不能實例化
???? 2、都包含未實現的方法
???? 3、子類必須實現未實現的方法
???? 不同點:
1、抽象類用abstract定義,接口用interface定義
2、抽象類只能繼承一個類,而接口可以實現多個繼承一個類,但類必須在最前面
3、非抽象派生類必須實現抽象方法,實現接口的類必須實現所有成員,
如果是繼承一個接口可以不用實現接口中的方法
4、需要override實現抽象方法,接口是直接實現
5、抽象類中可以沒有抽象方法 但抽象方法中必須包含抽象類,
?
13、C#中有哪些訪問修飾符?他們的作用范圍是什么?
???? 回答:
1、private:私有的 只有自己可以訪問(在哪定義,在哪用,其類中無法訪問)
???? 2、public:共有的,誰都可以訪問,即只要你有權利訪問定義的類,都可以訪問
???? 3、internal;只有在同一個程序集下才可以訪問
????? 4、protected:自己可以訪問,子類可以訪問
?
14、字段默認的是什么修飾符號?類默認的是什么修飾符號?
???? 回答:字段默認是private,類默認是internal
?
15、談談你對面向對象思想的理解
???? 回答:萬物皆對象
面向對象思想有三大特性,具體為,
1,封裝:保證對象自身數據的完整性和安全性。
2,繼承:建立類之間的關系,實現代碼復用,方便系統的擴展。
3、多態:相同的方法調用可實現不同的實現方式。
有利于代碼重用
?
16、結構和類有什么區別?
回答:
相同點:
1、都可以包含字段,方法
2、都可以實現接口
不同點:
1、結構是值類型(不改變),類是引用類型(改變)
2、結構(值)存放在棧(堆棧)中,類(引用)存放在堆中
3、結構不能被繼承,而類可以被繼承
4、結構不能包含顯示的無參數的構造方法,類可以
5、類使用時必須用new關鍵字,而結構可以使用也可以不使用new關鍵字
6、結構中不能給字段賦值,而類中可以
?? 7、在結構的構造方法中必須給所以的字段賦值,既有幾個參數就賦幾個值類不需要????????
? 結構-->值類型-->傳值且不改變-->指向兩塊空間
? 類-->引用類型-->傳引用改變-->指向同一塊空間
?
17、列舉出ASP.NET頁面之間傳遞值的幾種方式?各有何優缺點
回答:
1、???????? Application
2、???????? 使用QueryString,通過Request獲取
3、???????? 使用Session變量
4、???????? 使用Server.Transsfer,在第二個頁面上通過PreviousPage.FindControl()到第一個頁面找控件
5、???????? 在第一個頁面上把按鈕的postbackUrl設置成第二個頁面,即把第一個頁面的數據提交到第二個頁面去處理,然后在第二個頁面上通過PreviousPage.FindControl()到第一個頁面找控件
?
ASP.NET 頁面之間傳遞值的幾種方式
?
使用變量?
是一種非常簡單的傳值方式,他可以將傳送的值顯示在瀏覽器的地址欄中。如果是傳遞一個或多個安全性要求不高或是結構簡單的數值時,可以使用這個方法。但是對于傳遞數組或對象的話,就不能用這個方法了。下面是一個例子:?
的代碼?
?
?
?
?
?
?
?
?
中代碼?
?
?
?
?
?
?
使用對象變量?
對象的作用范圍是整個全局,也就是說對所有用戶都有效。其常用的方法用和。?
的代碼?
?
?
?
?
?
?
?
中代碼?
?
?
?
?
?
?
?
?
?
使用變量?
想必這個肯定是大家使用中最常見的用法了,其操作與類似,作用于用戶個人,所以,過量的存儲會導致服務器內存資源的耗盡。?
的代碼?
?
?
?
?
?
?
中代碼?
?
?
?
?
?
?
?
使用對象變量?
這個也是大家常使用的方法,與一樣,其是什對每一個用戶而言的,但是有個本質的區別,即是存放在客戶端的,而是存放在服務器端的。而且的使用要配合內置對象來使用。?
?
?
的代碼?
?
?
?
?
?
?
?
?
?
中代碼?
?
?
?
?
?
?
?
使用方法?
這個才可以說是面象對象開發所使用的方法,其使用方法把流程從當前頁面引導到另一個頁面中,新的頁面使用前一個頁面的應答流,所以這個方法是完全面象對象的,簡潔有效。?
的代碼?
?
?
?
?
?
?
?
?
?
?
中代碼?
?
?
實例窗體?
?
?
?
?
18、.NET當中有幾種頁面跳轉技術,有何區別?
回答:有四種
1、???????? 使用<a>標記,效率最高
2、???????? Response.Redirect(),有一個回發的過程
3、???????? Server.Transfer()控制權不會回來
4、???????? Server.Execute() 執行完頁面后控制權會回來再執行本頁面
1和2可以跳到任何有效的路徑 ,3和4必須在同一個站點下,并且是aspx頁面才可以跳
轉載于:https://blog.51cto.com/arenzhj/537531
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
- 上一篇: linux系统性能测试之虚拟内存管理篇
- 下一篇: 开发者应如何看待iOS平台和Androi