.net筆試題

1.簡述一下Application對象的作用。

答案註釋:Application用於保存所有用戶的公共的數據信息,如果使用Application對象,一個需要考慮的問題是任何寫操作都要在 Application_OnStart事件(global.asax)中完成.儘管使用Application.Lock和 Applicaiton.Unlock方法來避免寫操作的同步,但是它串行化了對Application對象的請求,當網站訪問量大的時候會產生嚴重的性 能瓶頸.因此最好不要用此對象保存大的數據集合。

 

2.簡述一下Session對象的作用。

答案註釋:Session用於保存每個用戶的專用信息.她的生存期是用戶持續請求時間再加上一段時間(一般是20分鐘左右).Session中的信息保存在 Web服務器內容中,保存的數據量可大可小.Session超時或被關閉時將自動釋放保存的數據信息.由於用戶停止使用應用程序後它仍然在內存中保持一 段時間,因此使用Session對象使保存用戶數據的方法效率很低.對於小量的數據,使用Session對象保存還

 

3.簡述一下ApplicationSession狀態的區別

答案註釋:簡單的說,Application是應用程序級別的狀態存儲,Session是會話級別的狀態存儲。

另外作用域不同,Application對象針對所有用戶都生效Session對象則相反,每個用戶都有自己的Session對象,它的生命週期起始於服 務器產生對用戶請求頁面的響應,終止於用戶斷開與服務器的連接。由於ApplicationSession狀態都存儲在內存中,但是當服務器重新啓動 時,保留的狀態就會消失了,爲了保留其狀態,就必須將狀態保存到數據庫。

 

4.簡述一下Cookie對象及其作用。

答案註釋:Cookie是存儲在客戶端文件系統的文本文件中或客戶端瀏覽器對話的內存中的少量數據,它主要用來跟蹤數據設置。

Cookie用於保存客戶瀏覽器請求服務器頁面的請求信息,程序員也可以用它存放非敏感性的用戶信息,信息保存的時間可以根據需要設置.如果沒有設 置Cookie失效日期,它們僅保存到關閉瀏覽器程序爲止.如果將Cookie對象的Expires屬性設置爲Minvalue,則表示Cookie永遠 不會過期.Cookie存儲的數據量很受限制,大多數瀏覽器支持最大容量爲4096,因此不要用來保存數據集及其他大量數據.由於並非所有的瀏覽器都支持 Cookie,並且數據信息是以明文文本的形式保存在客戶端的計算機中,因此最好不要保存敏感的,未加密的數據,否則會影響網站的安全性。

 

5.簡述一下ViewState的特點以及作用。

答案註釋:ViewState 常用於保存單個用戶的狀態信息,有效期等於頁面的生存期。ViewState容器可以保持大量的數據,但是必須謹慎使用,因爲過多使用會影響應用程序的性 能。所有Web服務器控件都使用ViewState在頁面回發期音保存自己的狀態信息。如果某個控件不需要在回發期間保存狀態信息,最好關閉該對象的 ViewState,避免不必要的資源浪費。通過給@Page指令添加“EnableViewState=false”屬性可以禁止整個頁面的 ViewState

 

6.簡述一下什麼隱藏域。

答案註釋:Hidden控件是屬於HTML類型的服務器控件,使用此控件可以實現隱藏域的功能。其實此控件和其它服務器控件的使用沒有太大區別,只是它不會在 用戶端的瀏覽器中顯示,始終處於隱藏狀態。但是每次頁面提交的時候,此控件和其它服務器控件一同提交到服務器端,因此在服務器端可以使用Value屬性獲 取或保存一些數據信息。

 

7.簡述一下什麼是查詢字符串,以及其特點。

答案註釋:查詢字符串的方式是將要傳遞的值連接在URL後面,然後通過Response.Redirect方法實現客戶端的重定向。這種方式可以實現在兩個頁面之間傳遞信息。由於URL的長度有一定的限制,因此不能傳遞太大的信息,加外安全性也不是很好。

 

8.簡述一下Cache對象的特點。

答案註釋:Cache對象用於在HTTP請求間保存頁面或數據。該對象的使用可以極大地提高整個應用程序的效率。它允許將頻繁訪問的大量服務器資源存儲在內存 中,當用戶發出相同的請求後服務器不再次處理而是將Cache中保存的信息返回給用戶,節省了服務器處理請求的時間。此對象的實例是每個應用程序專用的, 其生存期依賴於該應用程序的生存期。當重新啓動應用程序時,將重新創建其Cache對象的實例。

 

9.結構和類有什麼相似處和區別

答案註釋:結構是值類型,而類是引用類型。

向方法傳遞結構時,結構是通過傳值方式傳遞的,而類是作爲引用傳遞的

與類不同,結構的實例化可以不使用 new 運算符

結構可以聲明構造函數,但它們必須帶參數

一個結構不能從另一個結構或類繼承,而且不能作爲一個類的基。所有結構都直接繼承自 System.ValueType,後者繼承自 System.Object

不能在結構中初始化實例字段

 

10. 定義結構體類型的格式爲:

答案註釋:struct <結構體類型名>

{

<成員類型1> <成員名1>;

<成員類型2> <成員名2>;

<成員類型n> <成員名n>;

};

11.什麼是枚舉?

答案註釋:枚舉是一個指定的常數,是一組已命名的數值常量。枚舉是值類型的一種特殊形式。枚舉從System.Enum繼承而來

12.ContinueBreak的區別是什麼?

答案註釋:Continue是中斷本次循環,進入一下次的循環

Break是中斷整個循環

13.while dowhile循環的區別?

答案註釋:While循環先判斷條件是否滿足再執行,而dowhile先執行然後判斷條件是否成立。

14.方法的簽名是指 ?

答案註釋:方法名和該方法的參數列表,類型,大小,位置。

15.請簡述C#中結構與類的區別?

答案註釋:數據類型不同:結構是值類型,值類型在堆棧上分配地址,所有的基類型都是結構類型,類是引用類型,引用類型在堆上分配地址。

繼承性:結構不能從另外一個結構或者類繼承,本身也不能被繼承,類完全可擴展的,除非顯示的聲明 sealed,否則類可以繼承其他類和接口,自身也能被繼承,雖然結構不能被繼承 可是結構能夠繼承接口,方法和類繼承接口一樣

內部結構:結構沒有默認的構造函數,但是可以添加構造函數 ,沒有析構函數,沒有 abstract 和 sealed(因爲不能繼承,不能有 protected 修飾符,可以不使用 new 初始化 ,在結構中初始化實例字段是錯誤的。類有默認的構造函數 ,有析構函數,可以使用 abstract 和 sealed,有 protected 修飾符,必須使用 new 初始化。

16.靜態成員和非靜態成員的區別?

答案註釋:靜態成員用static修飾符聲明,在類被實例化時,通過類進行訪問,不帶有static修飾符聲明的變量稱做非靜態變量,在對象被實例化時創建,通過對象進行訪問一個類的所有實例的同一靜態變量都是一個值,同一個類的不同實例的同一非靜態變量可以是不同的值。

17.C#訪問修飾符有哪些,分別有什麼作用?

答案註釋:public:訪問不受限制。

protected:訪問僅限於包含類或從包含類派生的類型。

Internal:訪問僅限於當前程序集。

protected internal:訪問僅限於當前程序集或從包含類派生的類型。

private:訪問僅限於包含類型。

18.C#中類可以實現多繼承嗎?通過什麼方式實現呢?

答案註釋:C#中類不能夠多繼承,必須通過接口實現。

19.繼承是面向對象編程的一個重要的概念.請簡述繼承的概念和優點.

答案註釋:繼承:一個類可以有能力直接從另一個類獲得其代碼和數據,派生類從基類那裏獲得其所有成員。

優點:使用繼承無需從頭開始創建新類,便可以在現有類的基礎上添加新方法、屬性和事件(事件是對用戶操作)的響應。,既省時又省力。

20.說明base關鍵字、new關鍵字和override關鍵字各自的作用。

答案註釋:關鍵字base,用於派生類的構造函數顯示調用基類構造函數。

new訪問修飾符用於顯示隱藏繼承自基類的成員,即如果派生的類成員的名稱與基類成員名稱相同,new關鍵字會將派生類成員識別爲一個全新的成員。

關鍵字override用於修改方法,具有override關鍵字修飾的方法是對基類中同名方法的新實現,

1.Sealed修飾符是幹什麼的?

答案註釋:表示密封類,用於類時表明該類不能被繼承,不能和abstract同時使用,因爲這兩個修飾符在含義上互相排斥,用於方法和屬性時,表示該方法 或屬性不能再被繼承,必須和override關鍵字一起使用,因爲使用sealed修飾符的方法或屬性肯定是基類中相應的虛成員

21.簡述抽象類的定義以及在C#編程語言中,抽象類的作用是什麼?

答案註釋:有時,我們只需要繼承某個特定類,但不需要實例化該類的對象。這樣的類成爲抽象基類。C#允許通過在類中添加abstract關鍵字來創建抽象基類。

   作用在抽象基類中,可以指定一個方法而不指定其代碼主體。這意味着抽象基類保存着方法的定義,而方法的實際實現則寫在派生類中

22.聲明抽象方法注意一下幾點?

答案註釋:1.抽象基類除了抽象方法外,還可以包含已實現的方法。 2.操作需要用abstract關鍵字來標識。  3.操作的定義始終已分號結束。

23.簡述屬性的定義及其作用?

答案註釋:屬性是一種用於訪問對象或類的特性的成員,停供了數據的封裝性和安全

性。

24.簡述索引器的定義及其作用?

答案註釋:索引器是C#的簡單組件,使用索引器,可以用索引數組的方式來索引對象,

索引器提供了與數組訪問相類似的類成員訪問方式。

25.簡述索引器和屬性之間的區別?

答案註釋:屬性通過名稱標識。索引器通過簽名標識。

屬性通過簡單名稱或成員訪問來訪問。索引器通過元素訪問來訪問。

屬性可以爲靜態成員或實例成員。索引器必須爲實例成員。

屬性的get 訪問器沒有參數。 索引器的 get 訪問器具有與索引器相同的形參

表。屬性的 set 訪問器包含隱式 value 參數。除了 value 參數外,索引器的 set

訪問器還具有與索引器相同的形參表。

26.什麼是迭代器,運用迭代器有什麼好處。

答案註釋:迭代器是 C# 2.0 中的新功能。迭代器是方法、get 訪問器或運算符,它使

能夠在類或結構中支持 foreach 迭代,而不必實現整個 IEnumerable 接口。只

需提供一個迭代器,即可遍歷類中的數據結構,它的優點就是可以是實現容器

類和自定義集合的循環。

27.定義一個多路委託有幾個步驟

答案註釋:定義一個委託類型

編寫具有相同簽名方法作爲委託

創建委託對象,將它綁定到需要通過委託調用的第一個方法

創建另一個委託對象,綁定到下一個需要調用的方法

可用+,-,+=或-=操作符,合併成一個集成的多播委託

28.簡述創建事件的過程

答案註釋:定義事件

   給對象預訂該事件

   將該事件(當它發生時)通知訂戶

29.什麼是多播委託?

答案註釋:多播委託也是一個委託,它可以調用多個方法,只要這些方法的簽名與委託的定義相同。多播委託的概念是委託和事件編程之間的門檻,多播委託是通過 對方法的委託進行組合而創建的。組合多個委託,可用+,-,+=或-=操作符。要讓一個委託調用多個方法,可以用+或+=操作符爲該委託增加方法。要減少 一個多播委託持有的方法,可以使用-或-=操作符。

30.數組包括哪些種類?

答案註釋:一維、多維、交錯。

 

31.二維數組的Length得到的是?

答案註釋:成員個數

 

32.二維數組與交錯數組有什麼區別?

答案註釋:二維數組的每一行成員數相同,交錯數組的每一行成員數有可能不同。

 

33.簡述常見的數組聲明及賦值的方法

答案註釋:方法一:

int[] arr1 = new int[3];

arr1[0]=1;

arr1[2] = 2;

arr1[1] = 3;

 

方法二:

int arr2 = new int[3] { 1, 2, 3 };

 

方法三:

int aar3 = new int[] { 1, 2, 3 };

34.StringStringBuilder有什麼區別

答案註釋:在.NETString是不可改變對象,一旦創建了一個String對象併爲它賦值,它就不可能再改變,也就是你不可能改變一個字符串的值

String類型在做字符串的連接操作時,效率是相當低的,並且由於每做一個連接操作,都會在內存中創建一個新的對象,佔用了大量的內存空間。這樣 就引出StringBuilder對象,StringBuilder對象在做字符串連接操作時是在原來的字符串上進行修改,改善了性能。

35.字符串的比較有幾種?分別舉例說明

答案註釋:String 類有四種方法:Compare( )CompareTo( )CompareOrdinal( )Equals( )

Compare( )方法是CompareTo( )方法的靜態版本。只要使用“=”運算符,就能使用Equals( )方法,CompareOrdinal( )方法對兩個字符串比較不考本地語言與文件。

36.string s = abcdeabcdeabcde;

string[] sArray = s.Split(c);

foreach (string i in sArray)

Console.WriteLine(i.ToString());

輸出的結果是:

答案註釋:ab

deab

deab

de

 

37.請說明foreach的用法

答案註釋:foreach 語句爲數組或對象集合中的每個元素重複一個嵌入語句組。foreach 語句用於循環訪問集合以獲取所需信息,但不應用於更改集合內容以避免產生不可預知的副作用。此語句的形式如下:

foreach (type identifier in expression) statement

若要循環訪問集合,集合必須滿足特定的要求。集合類型:

必須是 interfaceclass 或 struct

必須包括返回類型的名爲 GetEnumerator 的實例方法

 

38.請編程實現一個冒泡排序算法?

答案註釋:

int [] array = new int [*] ;

int temp = 0 ;

for (int i = 0 ; i < array.Length – 1 ; i++)

{

for (int j = i + 1 ; j < array.Length ; j++)

{

if (array[j] < array[i])

{

temp = array[i] ;

array[i] = array[j] ;

array[j] = temp ;

}

}

}

1.C#中,string str = null 與 string str =””,請儘量用文字說明區別。

答案註釋:string str =””初始化對象分配空間而string str=null初始化對象

39.什麼是集合?

答案註釋:NET Framework 提供了用於數據存儲和檢索的專用類。這些類提供對堆棧、隊列、列表和哈希表的支持。大多數集合類實現相同的接口,可繼承這些接口來創建適應更爲專業的數據存儲需要的新集合類

40.可以創建自已的異常嗎?

答案註釋:可以,要創建自定義的異常類型,編寫派生自Exception的類即可。

41.什麼是異常處理?爲什麼需要異常處理?

答案註釋:一個良好且強大的程序的標誌是爲意外情況作好準備並在出現意外情況時能夠恢復。在程序編譯或執行的任何時候都有可能發生錯誤碼。執行有問題的代碼時,會“產生異常“,導致應用程序的崩潰,所以必須在程序中處理可能產生的各種異常。只有這樣,才能保證開發出健壯的應用程序。

42.net的錯誤處理機制是什麼

答案註釋:.net錯誤處理機制採用try->catch->finally結構,發生錯誤時,層層上拋,直到找到匹配的Catch爲止。

43.try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,什麼時候被執行,在return前還是後?

答案註釋:會執行,在return前執行

44.以下代碼段中能否編譯通過?請給出理由。

try

            {

            }

            catch (IOException e3)

            {

         }

答案註釋:不能,IOException不在System名稱空間,而在System.IO名稱空間


由“.net筆試題庫”收集整理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章