學(xué)習(xí)啦>創(chuàng)業(yè)指南>職場>筆試題>

C#筆試題CSDN

時間: 護(hù)托1061 分享

  C#所開發(fā)的程序源代碼并不是編譯成能夠直接在操作系統(tǒng)上執(zhí)行的二進(jìn)制本地代碼。下面就由學(xué)習(xí)啦小編為大家介紹一下的C#筆試題CSDN文章,歡迎閱讀。

  C#筆試題CSDN篇1

  1.什么是中間語言(IL)?它的作用?

  中間語言代替了COM的調(diào)用約定和內(nèi)存管理標(biāo)準(zhǔn),所有其他的NET語言都將編譯為這種語言,結(jié)果就是程序員不必來確保他們的代碼將與一種確定的二進(jìn)制標(biāo)準(zhǔn)進(jìn)行互操作,而是由不同.NET語言編譯器將代碼編譯到IL中來確保這種互操作性.

  2.C#中與基類通信的關(guān)鍵字什么?作用是什么?

  C#允許通過BASE關(guān)鍵字訪問最近的基類成員

  3.什么是元數(shù)據(jù)?

  描述程序集的內(nèi)容,通過將元數(shù)據(jù)嵌入每個程序集中,任何程序集都可以實(shí)現(xiàn)完全的自我描述, 從而簡化了發(fā)布使用較舊技術(shù)的組件時所需要的工作.

  4.ASP.NET和ASP的主要優(yōu)勢?

  1.ASP.NET具有面向?qū)ο笮?2.ASP.NET使用ADO.NET,使對數(shù)據(jù)庫操作更快速更強(qiáng)大. 3.ASP.NET支持多種語言,擺脫了ASP只能使用非結(jié)構(gòu)語言(VBSCRIPT,JSCRIPT)編寫的限制. 4.ASP.NET具有代碼綁定技術(shù),使頁面代碼和功能代碼的編寫完全分離,具有更好的重用性.

  5.Override與重載有什么區(qū)別?

  Override用來重寫父類的方法,重載使用相同名的方法或操作符擁有不同類型的參數(shù)

  6.SQL SERVER 中的觸發(fā)器的理解?

  觸發(fā)器是一種特殊的存儲過程,當(dāng)用戶修改指定表或視圖中的數(shù)據(jù)時,觸發(fā)器將自動執(zhí)行.

  8.大概描述下ASP.NET中服務(wù)器控件的生命周期?

  大概描述下ASP.NET中服務(wù)器控件的生命周期?

  9.什么是強(qiáng)類型系統(tǒng)?

  中間語言一個重要方面是建立在非常強(qiáng)的類型化功能上.所有的變量都清晰地標(biāo)記為屬于某個特定數(shù)據(jù)類型,特別是如果給定的引用表示某個數(shù)據(jù)類型比較模糊的,那么中間語言一般不允許對它執(zhí)行任何操作.

  10.觸發(fā)器分為事前觸發(fā)和事后觸發(fā),有何區(qū)別?

  事前觸發(fā)器就是在語句執(zhí)行之前激活的觸發(fā)器,而后觸發(fā)器就是在語句執(zhí)行后激活的觸發(fā)器.

  C#筆試題CSDN篇2

  1.談?wù)刦inal, finally, finalize的區(qū)別.

  final 修飾符用于指定類不能擴(kuò)展或者方法或?qū)傩圆荒苤貙?它將防止其他類通過重寫重要的函數(shù)來更改該類的行為.帶有 final 修飾符的方法可以由派生類中的方法來隱藏或重載.

  finally 塊用于清除在 try 塊中分配的任何資源.控制總是傳遞給 finally 塊,與 try 塊的存在方式無關(guān).

  finalize允許 Object 在“垃圾回收”回收 Object 之前嘗試釋放資源并執(zhí)行其他清理操作.

  2.在.net(C# or vb.net)中,Appplication.Exit 還是 Form.Close有什么不同?

  一個是退出整個應(yīng)用程序,一個是關(guān)閉其中一個form.

  3.C#中的委托是什么?事件是不是一種委托?

  委托是一個可以對方法進(jìn)行引用的類.與其他的類不同,委托類具有一個簽名,并且它只能對與其簽名匹配的方法進(jìn)行引用.這樣,委托就等效于一個類型安全函數(shù)指針或一個回調(diào).事件是一種委托.

  4.值類型和引用類型的區(qū)別?

  值類型的變量總是一個值,當(dāng)聲明時編譯器分配與此類型相關(guān)聯(lián)的字節(jié)數(shù),而且你將直接操

  已經(jīng)分配的內(nèi)存,另外在傳遞值類型的變量時,是在傳遞變量的值而不是它的底層對象的引用.

  而聲明一個引用類型的變量時,是在操作對此對象的引用,而不是象值類型那樣直接操作數(shù)據(jù).主要的引用類型有:類,數(shù)組,接口,委托.

  5.解釋下C#中的方法的重載?

  C#中允許在一個類中定義方法的不同版本,編譯器會自動根據(jù)提供的參數(shù)選擇最合適的版本.

  6.分析類和結(jié)構(gòu)的異同?

  1.結(jié)構(gòu)可以繼承接口,但不允許繼承類和其他結(jié)構(gòu); 2.結(jié)構(gòu)是值類型,類是引用類型 3.結(jié)構(gòu)不允許聲明析構(gòu)函數(shù) 4,結(jié)構(gòu)是從堆棧分配內(nèi)存,而類是從堆上分配內(nèi)存

  7. &和&&的區(qū)別.

  &是位運(yùn)算符.&&是布爾邏輯運(yùn)算符

  8.描述怎樣區(qū)分ExcuteNonQuery 和ExcuteScalar方法?

  ExecuteNonQuery;用于查詢不返回結(jié)果集或者不返回除了所影響的行數(shù)之外的任何值.

  ExecuteScalar:用于執(zhí)行返回一個值的命令.

  9.解釋文件系統(tǒng)為什么會存在數(shù)據(jù)冗余?這種數(shù)據(jù)冗余會導(dǎo)致哪兩類典型的問題?

  由于文件系統(tǒng)難于實(shí)現(xiàn)數(shù)據(jù)共享,因此,相同的數(shù)據(jù)可能會在多個文件中重復(fù)出現(xiàn),即產(chǎn)生數(shù)據(jù)冗余.數(shù)據(jù)冗余會導(dǎo)致數(shù)據(jù)(或更新)異常和數(shù)據(jù)不一致性.

  10.什么是WEBSERVICE ?

  從表面上看,Web Service就是一個應(yīng)用程序,它向外界暴露出一個能夠通過Web進(jìn)行調(diào)用的API.這就是說,你能夠用編程的方法通過Web調(diào)用來實(shí)現(xiàn)某個功能的應(yīng)用程序.從深層次上看,Web Service是一種新的Web應(yīng)用程序分支,它們是自包含、自描述、模塊化的應(yīng)用,可以在網(wǎng)絡(luò)(通常為Web)中被描述、發(fā)布、查找以及通過Web來調(diào)用.

  C#筆試題CSDN篇3

  1.接口和抽象類有什么區(qū)別?

  聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽象類(abstract class),它用于要創(chuàng)建一個體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該類的情況.不能創(chuàng)建abstract 類的實(shí)例.然而可以創(chuàng)建一個變量,其類型是一個抽象類,并讓它指向具體子類的一個實(shí)例.不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法.Abstract 類的子類為它們父類中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類為.取而代之,在子類中實(shí)現(xiàn)該方法.知道其行為的其它類可以在類中實(shí)現(xiàn)這些方法.

  接口(interface)是抽象類的變體.在接口中,所有方法都是抽象的.多繼承性可通過實(shí)現(xiàn)這樣的接口而獲得.接口中的所有方法都是抽象的,沒有一個有程序體.接口只可以定義static final成員變量.接口的實(shí)現(xiàn)與子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為.當(dāng)類實(shí)現(xiàn)特殊接口時,它定義(即將程序體給予)所有這種接口的方法.然后,它可以在實(shí)現(xiàn)了該接口的類的任何對象上調(diào)用接口的方法.由于有抽象類,它允許使用接口名作為引用變量的類型.通常的動態(tài)聯(lián)編將生效.引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來決定某對象的類是否實(shí)現(xiàn)了接口.

  2.描述類中的構(gòu)造函數(shù)和析構(gòu)函數(shù)?

  構(gòu)造函數(shù)用于在使用對象之前,對對象中的成員數(shù)據(jù)進(jìn)行初始化.一般與類同名.

  析構(gòu)函數(shù)用在撤消對象時,承擔(dān)善后處理工作,比如收回對象中的成員數(shù)據(jù)所占有的存儲空間.

  3.解釋下C#中的程序集?

  用于代替DLL和可執(zhí)行文件(EXE)概念的自我描述.程序集由中間語言和元數(shù)據(jù)組成

  4.try {}里有一個return語句,那么緊跟在這個try后的finally {}里的code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后?

  會執(zhí)行, 在return前執(zhí)行

  5.SQL SERVER的兩種索引是何形式?索引的作用?索引的優(yōu)缺點(diǎn)?

  SQL SERVER 提供了兩中索引形式:簇集索引和非簇集索引.索引是SQL SERVER在列上建立的一種數(shù)據(jù)庫對象.它對表中的數(shù)據(jù)提供邏輯排序,可以提高數(shù)據(jù)的訪問速度.建立索引也有缺點(diǎn),它可以提高查詢速度,但過多的建立索引會占據(jù)大量的磁盤空間.

  6.談?wù)凜/S和B/S的特點(diǎn)

  1.C/S結(jié)構(gòu) 是客戶端和服務(wù)器機(jī)構(gòu) ;B/S是瀏覽器和服務(wù)器結(jié)構(gòu) 2.C/S結(jié)構(gòu)應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較輕,數(shù)據(jù)存儲管理較為透明,C/S架構(gòu)的劣勢是高昂的維護(hù)成本. 3.B/S結(jié)構(gòu)維護(hù)和升級方式簡單,成本降低,選擇很多,應(yīng)用服務(wù)器運(yùn)行數(shù)據(jù)負(fù)荷較輕 4.C/S多建立在局域網(wǎng)基礎(chǔ)上,B/S是建立在廣域網(wǎng)基礎(chǔ)上.

  1.描述下C#中的程序集?程序集是有哪兩部分組成?

  用于代替DLL和可執(zhí)行文件(EXE)概念的自我描述.程序集由中間語言和元數(shù)據(jù)組成

  2.什么是元數(shù)據(jù)?

  描述程序集的內(nèi)容,通過將元數(shù)據(jù)嵌入每個程序集中,任何程序集都可以實(shí)現(xiàn)完全的自我描述,

  從而簡化了發(fā)布使用較舊技術(shù)的組件時所需要的工作.

  3.請寫出 BOOL flag 與“零值”比較的 if 語句?請寫出 char p 與“零值”比較的 if 語句?

  if(flag) if(flag==null)

  4.說出下面幾個函數(shù)的區(qū)別:

  private void test(string str){…}

  private void test(ref string str){…}

  private void test(out string str){…}

  被調(diào)用函數(shù)不更新參數(shù)的值,因?yàn)閭鬟f的是參數(shù)的副本

  關(guān)鍵字REF用來引用傳遞參數(shù),從而使得被調(diào)用方法能夠更新參數(shù)的值.

  OUT修飾參數(shù),是該方法會把一個值從自身回傳給調(diào)用函數(shù).

  5.什么是強(qiáng)類型系統(tǒng)?

  中間語言一個重要方面是建立在非常強(qiáng)的類型化功能上.所有的變量都清晰地標(biāo)記為屬于某個特定數(shù)據(jù)類型,特別是如果給定的引用表示某個數(shù)據(jù)類型比較模糊的,那么中間語言一般不允許對它執(zhí)行任何操作.

  6.值類型和引用類型的區(qū)別?

  值類型的變量總是一個值,當(dāng)聲明時編譯器分配與此類型相關(guān)聯(lián)的字節(jié)數(shù),而且你將直接操

  已經(jīng)分配的內(nèi)存,另外在傳遞值類型的變量時,是在傳遞變量的值而不是它的底層對象的引用.

  而聲明一個引用類型的變量時,是在操作對此對象的引用,而不是象值類型那樣直接操作數(shù)據(jù).主要的引用類型有:類,數(shù)組,接口,委托.

  7.如何理解委托?

  委托是一個可以對方法進(jìn)行引用的類.與其他的類不同,委托類具有一個簽名,并且它只能對與其簽名匹配的方法進(jìn)行引用.這樣,委托就等效于一個類型安全函數(shù)指針或一個回調(diào).事件是一種委托.

  8. 事務(wù)是什么?

  事務(wù)的所有操作必須完成,否則事務(wù)將被撤消.也就是說,事務(wù)是作為一個整體的單位處理,不可以被分割,事務(wù)中操作失敗回滾,處理成功時提交.

  9. 解釋重載函數(shù)、虛擬函數(shù)的概念?

  重載:

  重載分為函數(shù)重載和運(yùn)算符重載.通過使用重載機(jī)制,可以對一個函數(shù)名(或運(yùn)算符)定義多個函數(shù)(或運(yùn)算功能),只不過要求這些函數(shù)的參數(shù)(或參加運(yùn)算的操作數(shù))的類型有所不同.

  函數(shù)重載:指一組功能類似但函數(shù)參數(shù)類型(個數(shù))不同的函數(shù)可以共用一個函數(shù)名.當(dāng)編譯器遇到重載函數(shù)的調(diào)用語句時,它能夠根據(jù)不同的參數(shù)類型或不同的參數(shù)個數(shù)選擇一個合適的函數(shù).

  運(yùn)算符重載:指對于不同數(shù)據(jù)類型的操作數(shù),同一個運(yùn)算符所代表的運(yùn)算功能可以不同.

  虛函數(shù):

  虛函數(shù)是用于實(shí)現(xiàn)多態(tài)的機(jī)制.就是通過基類訪問派生類定義的函數(shù).虛函數(shù)一般是在派生類中使用同基類相同的函數(shù)的時候用的,為了正確的區(qū)分你要調(diào)用的函數(shù)是基類的還是派生類的函數(shù).若在派生類中聲明了一個虛函數(shù),則調(diào)用的是派生類中的函數(shù),而非基類中的函數(shù).

  11.描述描述怎樣區(qū)分ExcuteNonQuery ,ExcuteDataReader和ExcuteScalar方法?

  ExecuteNonQuery;用于查詢不返回結(jié)果集或者不返回除了所影響的行數(shù)之外的任何值.

  ExecuteScalar:用于執(zhí)行返回一個值的命令.

  ExecuteReader:用于執(zhí)行命令,并將結(jié)果集作為DataReader對象返回.

  12. 列出ADO.NET中讀寫數(shù)據(jù)庫的主要的幾個類?它們的作用?

  SqlConnection OleDbConnection ---連接數(shù)據(jù)庫

  SqlCommand OleDbCommand----SQL語句的包裝或存儲過程的調(diào)用

  SqlDataAdapter OleDbDataAdapter---用于存儲選擇,插入,更新和刪除語句的類,填充DataSet

  SqlDataReader OleDbDataReader---只向前的連接數(shù)據(jù)庫讀取器

  DataSet----用于數(shù)據(jù)庫操作的數(shù)據(jù)集.

  13. 什么是中間語言(IL)?它的作用?

  中間語言代替了COM的調(diào)用約定和內(nèi)存管理標(biāo)準(zhǔn),所有其他的NET語言都將編譯為這種語言,結(jié)果就是程序員不必來確保他們的代碼將與一種確定的二進(jìn)制標(biāo)準(zhǔn)進(jìn)行互操作,而是由不同.NET語言編譯器將代碼編譯到IL中來確保這種互操作性.

  14. 在SQL SERVER2000中存儲過程和觸發(fā)器的區(qū)別?

  1.存儲過程是一段預(yù)先編譯好的T-SQL代碼,可以被重復(fù)調(diào)用,觸發(fā)器是在進(jìn)行表更改操作時才執(zhí)行功能.

  2.觸發(fā)器執(zhí)行的時間較長,性能較低;存儲過程重用性好,執(zhí)行性能較高.

  3.觸發(fā)器多用在完善表的數(shù)據(jù)完整性和約束;存儲過程多用在方便重復(fù)使用數(shù)據(jù)庫操作.

  15.在ASP.NET中頁面之間傳遞值的方式?(盡可能敘述)

  Session;Cookie;Server.Transfer;QueryString

  16.分析類和結(jié)構(gòu)的異同?

  1.結(jié)構(gòu)可以繼承接口,但不允許繼承類和其他結(jié)構(gòu);

  2.結(jié)構(gòu)是值類型,類是引用類型

  3.結(jié)構(gòu)不允許聲明析構(gòu)函數(shù)

  4,結(jié)構(gòu)是從棧分配內(nèi)存,而類是從堆上分配內(nèi)存

  17.short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?

  short s1 = 1; s1 = s1 + 1;有錯,s1是short型,s1+1是int型,不能顯式轉(zhuǎn)化為short型.可修改為s1 =(short)(s1 + 1) .short s1 = 1; s1 += 1正確

  18.敘述ASP.NET中的equiredFieldValidator和RegularExpressionValitor驗(yàn)證控件及作用?

  RequiredFieldValidator 如果指定的文本控件空白,產(chǎn)生錯誤

  RegularExpressionValitor 文本域的值與使用常規(guī)表達(dá)式指定的模式不匹配是,產(chǎn)生錯誤

  19.敘述下Using 的用法?

  Using語句用來確保即使發(fā)生異常,也會調(diào)用DISPOSE方法,來釋放系統(tǒng)空閑的資源

  20.C#中接口和類有什么異同?

  接口類似于類,但它們有區(qū)別:

  .接口中的方法沒有訪問限制符

  .在接口中不執(zhí)行任何方法

  .接口中的方法不能如抽象方法那樣定義為虛擬和顯式的,由實(shí)現(xiàn)接口的類來決定如何實(shí)現(xiàn)方法

  .接口不能示例化,沒有構(gòu)造函數(shù),也沒有字段,在接口中不允許進(jìn)行操作符的重載.

  21.什么是裝箱和拆箱?

  裝箱是將值類型轉(zhuǎn)換為引用類型的過程,相反的過程(即將引用類型轉(zhuǎn)換為值類型)被稱為拆箱.在裝箱是不需要顯示的類型轉(zhuǎn)換,但在拆箱是需要類型轉(zhuǎn)換,這是因?yàn)樵诓鹣涫菍ο罂梢员晦D(zhuǎn)換為任何類型.

  22.什么是WEBSERVICE ?

  從表面上看,Web Service就是一個應(yīng)用程序,它向外界暴露出一個能夠通過Web進(jìn)行調(diào)用的API.這就是說,你能夠用編程的方法通過Web調(diào)用來實(shí)現(xiàn)某個功能的應(yīng)用程序.從深層次上看,Web Service是一種新的Web應(yīng)用程序分支,它們是自包含、自描述、模塊化的應(yīng)用,可以在網(wǎng)絡(luò)(通常為Web)中被描述、發(fā)布、查找以及通過Web來調(diào)用.

  23.軟件開發(fā)過程一般有幾個階段?

  系統(tǒng)需求分析,系統(tǒng)概要設(shè)計(jì),系統(tǒng)詳細(xì)設(shè)計(jì),編碼,系統(tǒng)測試,安裝調(diào)試

  24.在ASP.NET中自定義控件是什么?

  用戶控件是用ASP.NET代碼所創(chuàng)建的控件,它的創(chuàng)建如同在標(biāo)準(zhǔn)的ASP.NET WEB頁中創(chuàng)建控件一樣,不同之處在于一旦創(chuàng)建了用戶控件,就可以在多個ASP.NET頁面中重復(fù)使用他們.

  25.ASP.NET的Application、Session、Cookie、ViewState和Cache等變量的區(qū)別是什么?

  property和attribute漢語都稱之為屬性.不過property是指類向外提供的數(shù)據(jù)區(qū)域.而attribute則是描述對象在編譯時或運(yùn)行時屬性的.這兩者是有本質(zhì)區(qū)別的.

  26.解釋下在ASP.NET中Response的作用?

  與Request獲取客戶端HTTP信息相反, Response用來控制發(fā)送給用戶的信息,包括直接發(fā)送信息給瀏覽器,重定向到另一個ULR或設(shè)置COOKIE值

  27.解釋下在ASP.NET中Request的作用?

  Request訪問任何基于HTTP請求傳遞的所有信息,包括從HTML表格用POST方法和GET方法傳遞的參數(shù),COOKIE和用戶人證.

  28. C#中能夠使用指針嗎?如果不能使用說明理由,如果能使用說出使用方法?

  C#中能夠使用指針,因?yàn)樵?NET框架內(nèi)使用無用單元回收器,隱藏了內(nèi)存的管理工作.所以C#只允許在特定的代碼塊內(nèi)使用指針,標(biāo)記所用的關(guān)鍵字是UNSAFE

3170517