Net面試問(wèn)答大匯總.docx_第1頁(yè)
Net面試問(wèn)答大匯總.docx_第2頁(yè)
Net面試問(wèn)答大匯總.docx_第3頁(yè)
Net面試問(wèn)答大匯總.docx_第4頁(yè)
Net面試問(wèn)答大匯總.docx_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

用.net做B/S結(jié)構(gòu)的系統(tǒng),您是用幾層結(jié)構(gòu)來(lái)開(kāi)發(fā),每一層之間的關(guān)系以及為什么要這樣分層?答:從下至上分別為:數(shù)據(jù)訪(fǎng)問(wèn)層、業(yè)務(wù)邏輯層(又或成為領(lǐng)域?qū)樱?、表示層?shù)據(jù)訪(fǎng)問(wèn)層:有時(shí)候也稱(chēng)為是持久層,其功能主要是負(fù)責(zé)數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)業(yè)務(wù)邏輯層:是整個(gè)系統(tǒng)的核心,它與這個(gè)系統(tǒng)的業(yè)務(wù)(領(lǐng)域)有關(guān)表示層:是系統(tǒng)的UI部分,負(fù)責(zé)使用者與整個(gè)系統(tǒng)的交互。優(yōu)點(diǎn): 分工明確,條理清晰,易于調(diào)試,而且具有可擴(kuò)展性。缺點(diǎn): 增加成本。分層式結(jié)構(gòu)究竟其優(yōu)勢(shì)何在?1、開(kāi)發(fā)人員可以只關(guān)注整個(gè)結(jié)構(gòu)中的其中某一層;2、可以很容易的用新的實(shí)現(xiàn)來(lái)替換原有層次的實(shí)現(xiàn);3、可以降低層與層之間的依賴(lài);4、有利于標(biāo)準(zhǔn)化;5、利于各層邏輯的復(fù)用。概括來(lái)說(shuō),分層式設(shè)計(jì)可以達(dá)至如下目的:分散關(guān)注、松散耦合、邏輯復(fù)用、標(biāo)準(zhǔn)定義。分層式結(jié)構(gòu)也不可避免具有一些缺陷:1、降低了系統(tǒng)的性能。這是不言而喻的。如果不采用分層式結(jié)構(gòu),很多業(yè)務(wù)可以直接造訪(fǎng)數(shù)據(jù)庫(kù),以此獲取相應(yīng)的數(shù)據(jù),如今卻必須通過(guò)中間層來(lái)完成。2、有時(shí)會(huì)導(dǎo)致級(jí)聯(lián)的修改。這種修改尤其體現(xiàn)在自上而下的方向。如果在表示層中需要增加一個(gè)功能,為保證其設(shè)計(jì)符合分層式結(jié)構(gòu),可能需要在相應(yīng)的業(yè)務(wù)邏輯層和數(shù)據(jù)訪(fǎng)問(wèn)層中都增加相應(yīng)的代碼。MVC模式MVC(Model-View-Controller)把交互系統(tǒng)的組成分解成模型、視圖、控制器三種部件mvc的優(yōu)點(diǎn):1.通過(guò)把項(xiàng)目分成model view和controller,使得復(fù)雜項(xiàng)目更加容易維護(hù)。2.沒(méi)有使用view state和服務(wù)器表單控件,可以更方便的控制應(yīng)用程序的行為3.應(yīng)用程序通過(guò)controller來(lái)控制程序請(qǐng)求,可以提供豐富的url重寫(xiě)。4.對(duì)單元測(cè)試的支持更加出色5.在團(tuán)隊(duì)開(kāi)發(fā)模式下表現(xiàn)更出眾MVC的不足:(1)增加了系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)的復(fù)雜性。對(duì)于簡(jiǎn)單的界面,嚴(yán)格遵循MVC,使模型、視圖與控制器分離,會(huì)增加結(jié)構(gòu)的復(fù)雜性,并可能產(chǎn)生過(guò)多的更新操作,降低運(yùn)行效率。(2)視圖與控制器間的過(guò)于緊密的連接。視圖與控制器是相互分離,但確實(shí)聯(lián)系緊密的部件,視圖沒(méi)有控制器的存在,其應(yīng)用是很有限的,反之亦然,這樣就妨礙了他們的獨(dú)立重用。(3)視圖對(duì)模型數(shù)據(jù)的低效率訪(fǎng)問(wèn)。依據(jù)模型操作接口的不同,視圖可能需要多次調(diào)用才能獲得足夠的顯示數(shù)據(jù)。對(duì)未變化數(shù)據(jù)的不必要的頻繁訪(fǎng)問(wèn),也將損害操作性能。如何實(shí)現(xiàn)MVC模式,舉例說(shuō)明!web/business/dataaccess列舉ASP.NET 頁(yè)面之間傳遞值的幾種方式。1.使用QueryString, 如.?id=1; response. Redirect().2.使用Session變量3.使用Server.Transfer請(qǐng)說(shuō)明在.net中常用的幾種頁(yè)面間傳遞參數(shù)的方法,并說(shuō)出他們的優(yōu)缺點(diǎn)。QueryString 傳遞一個(gè)或多個(gè)安全性要求不高或是結(jié)構(gòu)簡(jiǎn)單的數(shù)值。但是對(duì)于傳遞數(shù)組或?qū)ο蟮脑?huà),就不能用這個(gè)方法了session(viewstate) 簡(jiǎn)單,但易丟失 作用于用戶(hù)個(gè)人,過(guò)量的存儲(chǔ)會(huì)導(dǎo)致服務(wù)器內(nèi)存資源的耗盡。application 對(duì)象的作用范圍是整個(gè)全局,也就是說(shuō)對(duì)所有用戶(hù)都有效。其常用的方法用Lock和UnLockcookie 簡(jiǎn)單,但可能不支持,可能被偽造 Cookie是存放在客戶(hù)端的,而session是存放在服務(wù)器端的。而且Cookie的使用要配合ASP.NET內(nèi)置對(duì)象Request來(lái)使用input ttype=hidden 簡(jiǎn)單,可能被偽造url參數(shù)簡(jiǎn)單,顯示于地址欄,長(zhǎng)度有限Server.Transfer 把流程從當(dāng)前頁(yè)面引導(dǎo)到另一個(gè)頁(yè)面中,新的頁(yè)面使用前一個(gè)頁(yè)面的應(yīng)答流數(shù)據(jù)庫(kù)穩(wěn)定,安全,但性能相對(duì)弱什么是Viewstate?它有什么作用?ViewState用來(lái)保存頁(yè)面狀態(tài),就是說(shuō)提交之后我們還可以看到文本框里面的內(nèi)容就是ViewState保存的功勞。ViewState只維護(hù)當(dāng)前頁(yè)面的狀態(tài),不同頁(yè)面之間不能共享,Session可以。ViewState你可以理解為一個(gè)隱藏控件。ASP.Net頁(yè)面生命周期每個(gè)頁(yè)面的生命周期為用戶(hù)的每一次訪(fǎng)問(wèn),也就是說(shuō)每一次客戶(hù)端與服務(wù)器之間的一個(gè)往返過(guò)程.全局變量的生命周期在此之間.1. Page_Init();2. Load ViewState and Postback data;3. Page_Load();4. Handle control events;5. Page_PreRender();6. Page_Render();7. Unload event;8. Dispose method called;ADO.net中常用的對(duì)象有哪些?分別描述一下。答:Connection 打開(kāi)數(shù)據(jù)庫(kù)連接Command 執(zhí)行數(shù)據(jù)庫(kù)命令DataAdapter 連接數(shù)據(jù),執(zhí)行數(shù)據(jù)庫(kù)命令,填充DataSetDataSet 數(shù)據(jù)在內(nèi)存中的緩存,數(shù)據(jù)結(jié)構(gòu)DataReader 只讀向前的讀取數(shù)據(jù)庫(kù)DataReader和DataSet的異同DataReader使用時(shí)始終占用SqlConnection,在線(xiàn)操作數(shù)據(jù)庫(kù).任何對(duì)SqlConnection的操作都會(huì)引發(fā)DataReader的異常.因?yàn)镈ataReader每次只在內(nèi)存中加載一條數(shù)據(jù),所以占用的內(nèi)存是很小的.因?yàn)镈ataReader的特殊性和高性能.所以DataReader是只進(jìn)的.你讀了第一條后就不能再去讀取第一條了.DataSet則是將數(shù)據(jù)一次性加載在內(nèi)存中.拋棄數(shù)據(jù)庫(kù)連接.讀取完畢即放棄數(shù)據(jù)庫(kù)連接.因?yàn)镈ataSet將數(shù)據(jù)全部加載在內(nèi)存中.所以比較消耗內(nèi)存.但是確比DataReader要靈活.可以動(dòng)態(tài)的添加行,列,數(shù)據(jù).對(duì)數(shù)據(jù)庫(kù)進(jìn)行回傳更新操作.存儲(chǔ)過(guò)程和sql語(yǔ)句的優(yōu)缺點(diǎn)優(yōu)點(diǎn):1.提高性能,減少網(wǎng)絡(luò)傳輸,節(jié)約時(shí)間。2.減少網(wǎng)絡(luò)流量 存儲(chǔ)過(guò)程位于服務(wù)器上,調(diào)用的時(shí)候只須傳遞存儲(chǔ)過(guò)程的名稱(chēng)以及參數(shù),不用每次訪(fǎng)問(wèn)都傳遞很長(zhǎng)的sql 語(yǔ)句。4.安全性 減少sql 注入式攻擊。5.可維護(hù)性高 更新存儲(chǔ)過(guò)程通常比更改、測(cè)試以及重新部署程序集需要較少的時(shí)間和精力。缺點(diǎn):1.交互性差。2.可移植性差說(shuō)出你所了解的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件(例如ADO,至少4種)答:ADO,ADO.Net,MDAC(Microsoft Data Access Components),Microsoft SQL Server OLE DB Provider,Microsoft Jet OLE DB Provider,Desktop Database Drivers ODBC Driver,Visual FoxPro ODBC Driver什么是面向?qū)ο笕f(wàn)物都是對(duì)象,其主要特征:封裝、繼承、多態(tài)怎樣實(shí)現(xiàn)多態(tài)1.通過(guò)對(duì)象直接調(diào)用成員函數(shù)時(shí),始終默認(rèn)使用該對(duì)象的類(lèi)的成員函數(shù)(除非用:顯示指定類(lèi)名)。2.通過(guò)指向?qū)ο蟮闹羔樆蛞谜{(diào)用成員函數(shù)時(shí):如果該函數(shù)是實(shí)函數(shù),則調(diào)用該指針或引用的類(lèi)的成員函數(shù);如果該函數(shù)是虛函數(shù),則調(diào)用該指針或引用指向的對(duì)象的類(lèi)的成員函數(shù)。面向?qū)ο蟮乃枷胫饕ㄊ裁??答:任何事物都可以理解為?duì)象,其主要特征: 繼承。封裝。多態(tài)。特點(diǎn):代碼好維護(hù),安全,隱藏信息什么是裝箱和拆箱?答:從值類(lèi)型接口轉(zhuǎn)換到引用類(lèi)型裝箱。從引用類(lèi)型轉(zhuǎn)換到值類(lèi)型拆箱。裝箱(boxing)是將值類(lèi)型的數(shù)據(jù)轉(zhuǎn)化成引用類(lèi)型,int i=3; object o = i ;便是裝箱過(guò)程,而拆箱(unboxing)是將飲用類(lèi)型數(shù)據(jù)轉(zhuǎn)換值類(lèi)型,比如int j = (int)o;屬于拆箱什么是Interface?它與Abstract Class有什么區(qū)別?接口(Interface)是用來(lái)定義行為規(guī)范的,不會(huì)有具體實(shí)現(xiàn),而抽象類(lèi)除定義行為規(guī)范外,可以有部分實(shí)現(xiàn),但一個(gè)類(lèi)能實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)父類(lèi)什么時(shí)候使用抽象類(lèi),什么時(shí)候用接口接口用于規(guī)范,抽象類(lèi)用于共性。接口中只能聲明方法,屬性,事件,索引器。而抽象類(lèi)中可以有方法的實(shí)現(xiàn),也可以定義非靜態(tài)的類(lèi)變量。抽象類(lèi)是類(lèi),所以只能被單繼承,但是接口卻可以一次實(shí)現(xiàn)多個(gè)。抽象類(lèi)可以提供某些方法的部分實(shí)現(xiàn),接口不可以.抽象類(lèi)的實(shí)例是它的子類(lèi)給出的。接口的實(shí)例是實(shí)現(xiàn)接口的類(lèi)給出的。再抽象類(lèi)中加入一個(gè)方法,那么它的子類(lèi)就同時(shí)有了這個(gè)方法。而在接口中加入新的方法,那么實(shí)現(xiàn)它的類(lèi)就要重新編寫(xiě)(這就是為什么說(shuō)接口是一個(gè)類(lèi)的規(guī)范了)。接口成員被定義為公共的,但抽象類(lèi)的成員也可以是私有的、受保護(hù)的、內(nèi)部的或受保護(hù)的內(nèi)部成員(其中受保護(hù)的內(nèi)部成員只能在應(yīng)用程序的代碼或派生類(lèi)中訪(fǎng)問(wèn))。此外接口不能包含字段、構(gòu)造函數(shù)、析構(gòu)函數(shù)、靜態(tài)成員或常量。什么是抽象類(lèi)(abstract class)?一種不可以被實(shí)例化的類(lèi)。抽象類(lèi)中一般含有抽象方法,當(dāng)然也可有具體實(shí)現(xiàn)。繼承類(lèi)只有實(shí)現(xiàn)過(guò)所有抽象類(lèi)的抽象方法后才能被實(shí)例化。何時(shí)必須聲明一個(gè)類(lèi)為抽象類(lèi)?當(dāng)這個(gè)類(lèi)中包含抽象方法時(shí),或是該類(lèi)并沒(méi)有完全實(shí)現(xiàn)父類(lèi)的抽象方法時(shí)。接口(interface)是什么?只含有共有抽象方法(public abstract method)的類(lèi)。這些方法必須在子類(lèi)中被實(shí)現(xiàn)。為什么不能指定接口中方法的修飾符?接口中的方法用來(lái)定義對(duì)象之間通信的契約,指定接口中的方法為私有或保護(hù)沒(méi)有意義。他們默認(rèn)為公有方法。可以繼承多個(gè)接口么?當(dāng)然。那么如果這些接口中有重復(fù)的方法名稱(chēng)呢?這種情況中你可以決定如何實(shí)現(xiàn)。當(dāng)然需要特別得小心。但是在編譯環(huán)節(jié)是沒(méi)有問(wèn)題的。接口和抽象類(lèi)的區(qū)別是什么?接口中所有方法必須是抽象的,并且不能指定方法的訪(fǎng)問(wèn)修飾符。抽象類(lèi)中可以有方法的實(shí)現(xiàn),也可以指定方法的訪(fǎng)問(wèn)修飾符。詳述.NET里class和struct的異同!類(lèi)是引用類(lèi)型,可以繼承類(lèi)、接口和被繼承,有默認(rèn)的構(gòu)造函數(shù),有析構(gòu)函數(shù),可以使用abstract和sealed,有protected修飾符,必須使用new初始化。結(jié)構(gòu)是值類(lèi)型,只能繼承接口,不能被繼承,沒(méi)有默認(rèn)的構(gòu)造函數(shù),可以創(chuàng)建,沒(méi)有析構(gòu)函數(shù),不可以用abstract和sealed,沒(méi)有protected修飾符,可以不用new初始化。如何選擇結(jié)構(gòu)還是類(lèi)1 堆棧的空間有限,對(duì)于大量的邏輯的對(duì)象,創(chuàng)建類(lèi)要比創(chuàng)建結(jié)構(gòu)好一些2 結(jié)構(gòu)表示如點(diǎn)、矩形和顏色這樣的輕量對(duì)象例如,如果聲明一個(gè)含有 1000 個(gè)點(diǎn)對(duì)象的數(shù)組,則將為引用每個(gè)對(duì)象分配附加的內(nèi)存。在此情況下,結(jié)構(gòu)的成本較低。3 在表現(xiàn)抽象和多級(jí)別的對(duì)象層次時(shí),類(lèi)是最好的選擇4 大多數(shù)情況下該類(lèi)型只是一些數(shù)據(jù)時(shí),結(jié)構(gòu)時(shí)最佳的選擇C#中的接口和類(lèi)有什么異同。異:不能直接實(shí)例化接口。接口不包含方法的實(shí)現(xiàn)。接口、類(lèi)和結(jié)構(gòu)可從多個(gè)接口繼承。但是C# 只支持單繼承:類(lèi)只能從一個(gè)基類(lèi)繼承實(shí)現(xiàn)。類(lèi)定義可在不同的源文件之間進(jìn)行拆分。同:接口、類(lèi)和結(jié)構(gòu)可從多個(gè)接口繼承。接口類(lèi)似于抽象基類(lèi):繼承接口的任何非抽象類(lèi)型都必須實(shí)現(xiàn)接口的所有成員。接口可以包含事件、索引器、方法和屬性。一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口。const和readonly有什么區(qū)別?const關(guān)鍵字用來(lái)聲明編譯時(shí)常量,readonly用來(lái)聲明運(yùn)行時(shí)常量。用sealed修飾的類(lèi)有什么特點(diǎn)sealed 修飾符用于防止從所修飾的類(lèi)派生出其它類(lèi)。如果一個(gè)密封類(lèi)被指定為其他類(lèi)的基類(lèi),則會(huì)發(fā)生編譯時(shí)錯(cuò)誤。密封類(lèi)不能同時(shí)為抽象類(lèi)。sealed 修飾符主要用于防止非有意的派生,但是它還能促使某些運(yùn)行時(shí)優(yōu)化。具體說(shuō)來(lái),由于密封類(lèi)永遠(yuǎn)不會(huì)有任何派生類(lèi),所以對(duì)密封類(lèi)的實(shí)例的虛擬函數(shù)成員的調(diào)用可以轉(zhuǎn)換為非虛擬調(diào)用來(lái)處理。虛函數(shù)的用法答:1)virtual指明一成員函數(shù)為虛函數(shù),而virtual僅用于類(lèi)的定義里,在類(lèi)外可不加此關(guān)鍵字.2)一個(gè)類(lèi)的成員函數(shù)被定義為虛函數(shù)時(shí),子類(lèi)該函數(shù)仍保持虛函數(shù)特征.3)子類(lèi)覆蓋此函數(shù)時(shí),定義里可不加virtual關(guān)鍵字,但函數(shù)聲明要和基類(lèi)的完全一致!且此聲明是必須的.4)不是純虛函數(shù)時(shí),父類(lèi)的虛函數(shù)必須要實(shí)現(xiàn); 而若將父類(lèi)的虛函數(shù)設(shè)定為純虛函數(shù)時(shí),子類(lèi)必需要覆蓋之而且必須要實(shí)現(xiàn)之!解釋virtual、sealed、override和abstract的區(qū)別virtual申明虛方法的關(guān)鍵字,說(shuō)明該方法可以被重寫(xiě)sealed說(shuō)明該類(lèi)不可被繼承override重寫(xiě)基類(lèi)的方法abstract申明抽象類(lèi)和抽象方法的關(guān)鍵字,抽象方法不提供實(shí)現(xiàn),由子類(lèi)實(shí)現(xiàn),抽象類(lèi)不可實(shí)例化。重載和覆寫(xiě)有什么區(qū)別?答:重載是方法的名稱(chēng)相同,不同的參數(shù)類(lèi)型,不同的參數(shù)個(gè)數(shù),不同的參數(shù)順序。覆寫(xiě)提供了子類(lèi)中改變父類(lèi)方法行為的實(shí)現(xiàn)(是進(jìn)行基類(lèi)中函數(shù)的重寫(xiě))。在方法定義中,virtual有什么含義?答:被virtual修飾的方法可以被子類(lèi)覆寫(xiě)能夠?qū)⒎庆o態(tài)的方法覆寫(xiě)成靜態(tài)方法嗎?答:不能,覆寫(xiě)方法的簽名必須與被覆寫(xiě)方法的簽名保持一致,除了將virtual改為override??梢愿矊?xiě)私有的虛方法嗎?答:不可以,甚至子類(lèi)中無(wú)法訪(fǎng)問(wèn)父類(lèi)中的私有方法能夠阻止某一個(gè)類(lèi)被其他類(lèi)繼承嗎?答:可以,使用關(guān)鍵字sealed能夠?qū)崿F(xiàn)允許某個(gè)類(lèi)別繼承,但不允許其中的某個(gè)方法被覆寫(xiě)嗎?答:可以,標(biāo)記這個(gè)類(lèi)為public,并標(biāo)記這個(gè)方法為sealed。如何區(qū)別重載方法?不同的參數(shù)類(lèi)型,不同的參數(shù)個(gè)數(shù),不同的參數(shù)順序c#繼承: base 表示當(dāng)前對(duì)象基類(lèi)的實(shí)例(使用base關(guān)鍵字可以調(diào)用基類(lèi)的成員)this表示當(dāng)前類(lèi)的實(shí)例 在靜態(tài)方法中不可以使用base和this關(guān)鍵字 派生類(lèi)會(huì)繼承基類(lèi)所有的成員但是構(gòu)造函數(shù)和析構(gòu)函數(shù)不會(huì)被繼承 注意如果派生類(lèi)的方法和基類(lèi)的方法同名則基類(lèi)中的方法將會(huì)被隱藏如果需要隱藏則可以使用關(guān)鍵字new來(lái)隱藏如果不寫(xiě)new關(guān)鍵字默認(rèn)處理為隱藏雖然基類(lèi)中同名的方法被隱藏了但是還是可以通過(guò)base關(guān)鍵字來(lái)調(diào)用 /如果子類(lèi)方法的方法名和基類(lèi)的方法名相同時(shí),系統(tǒng)將隱藏基類(lèi)同名方法,自動(dòng)調(diào)用子類(lèi)的同名方法 /派生類(lèi)會(huì)繼承基類(lèi)所有的成員,但是不能顯示調(diào)用基類(lèi)的是有成員 /在派生類(lèi)中不可以調(diào)用基類(lèi)的是有成員,如num1,num2,但是可以實(shí)現(xiàn)調(diào)用基類(lèi)方法 virtual 用在基類(lèi)中指定一個(gè)虛方法屬性表示這個(gè)方法屬性可以重寫(xiě) override 用在派生類(lèi)中表示對(duì)基類(lèi)虛方法屬性的重寫(xiě) 不能重寫(xiě)非虛方法或靜態(tài)方法重寫(xiě)的基方法必須是 virtualabstract 或 override 的為什么 override 也可以重寫(xiě)呢因?yàn)榛?lèi)中的 override 實(shí)際上是對(duì)基類(lèi)的基類(lèi)進(jìn)行的重寫(xiě)由于繼承可傳遞所以也可以對(duì)基類(lèi)中 override 的方法進(jìn)行重寫(xiě) override 聲明不能更改 virtual 方法的可訪(fǎng)問(wèn)性override 方法和 virtual 方法必須具有相同的訪(fǎng)問(wèn)級(jí)別修飾符 不能使用修飾符 newstaticvirtual 或 abstract 來(lái)修改 override 方法 重寫(xiě)屬性聲明必須指定與繼承屬性完全相同的訪(fǎng)問(wèn)修飾符類(lèi)型和名稱(chēng)并且被重寫(xiě)的屬性必須是 virtualabstract 或 override 的 標(biāo)記允許被重寫(xiě)修飾靜態(tài)方法中不允許使用virtual關(guān)鍵字成員變量允許使用virtual關(guān)鍵字 屬性可以被聲明為虛屬性(使用virtual關(guān)鍵字) 重寫(xiě)基類(lèi)的方法(重寫(xiě)同名的方法中有virtual關(guān)鍵字的方法) 重寫(xiě)和隱藏的區(qū)別隱藏(new關(guān)鍵字)是給子類(lèi)的同名方法分配新的內(nèi)存空間重寫(xiě)(override關(guān)鍵字)是子類(lèi)的同名方法放在基類(lèi)同名方法的原來(lái)所在位置基類(lèi)的同名方法位置向后移 屬性也可以重寫(xiě) virtual關(guān)鍵字和override關(guān)鍵字是成對(duì)出現(xiàn)的否則是語(yǔ)法錯(cuò)誤 派生類(lèi)可以通過(guò)將重寫(xiě)聲明為 sealed 來(lái)停止虛擬繼承這需要在類(lèi)成員聲明中的 override 關(guān)鍵字前面放置 sealed 關(guān)鍵字 在子類(lèi)中重寫(xiě)基類(lèi)中的虛方法時(shí)可以使用base關(guān)鍵字調(diào)用基類(lèi)中的虛方法 /使用base關(guān)鍵可以在子類(lèi)中訪(fǎng)問(wèn)基類(lèi)同名的方法 /父類(lèi)的引用指向子類(lèi)的實(shí)例 Test ts = new Test2(); 父類(lèi)的引用指向子類(lèi)的實(shí)例(調(diào)用的是子類(lèi)的方法) 父類(lèi)的引用只認(rèn)識(shí)父類(lèi)的方法不認(rèn)識(shí)子類(lèi)的新方法可以用來(lái)調(diào)用被子類(lèi)覆蓋的父類(lèi)的方法 父類(lèi)的引用依然到父類(lèi)方法位置去調(diào)用如果基類(lèi)方法被聲明為virtual并且在子類(lèi)中被override結(jié)果訪(fǎng)問(wèn)到的是被子類(lèi)override的方法 C#中的委托是什么?事件是不是一種委托?委托可以把一個(gè)方法作為參數(shù)代入另一個(gè)方法。委托可以理解為指向一個(gè)函數(shù)的引用。是,是一種特殊的委托C#中的堆和棧棧(Stack)由系統(tǒng)管理生存期,存儲(chǔ)代碼執(zhí)行和調(diào)用路徑,執(zhí)行或調(diào)用完畢即從棧中清除;堆(Heap)中保存值和對(duì)象,調(diào)用完畢之后依然存在,由垃圾回收器查找棧中有無(wú)指向該值或?qū)ο蟮囊?,無(wú)則從堆中刪除C# ref與out區(qū)別:1、使用ref型參數(shù)時(shí),傳入的參數(shù)必須先被初始化。對(duì)out而言,必須在方法中對(duì)其完成初始化。2、使用ref和out時(shí),在方法的參數(shù)和執(zhí)行方法時(shí),都要加Ref或Out關(guān)鍵字。以滿(mǎn)足匹配。3、out適合用在需要retrun多個(gè)返回值的地方,而ref則用在需要被調(diào)用的方法修改調(diào)用者的引用的時(shí)候。你對(duì)泛型了解嗎?簡(jiǎn)單說(shuō)明一下泛型的有什么好處?泛型:通過(guò)參數(shù)化類(lèi)型來(lái)實(shí)現(xiàn)在同一份代碼上操作多種數(shù)據(jù)類(lèi)型。利用“參數(shù)化類(lèi)型”將類(lèi)型抽象化,從而實(shí)現(xiàn)靈活的復(fù)用好處是類(lèi)型安全和減少裝箱、拆箱。提高性能、類(lèi)型安全和質(zhì)量,減少重復(fù)性的編程任務(wù)C#中所有對(duì)象共同的基類(lèi)是什么?System.Object.如何在C#中實(shí)現(xiàn)繼承?在類(lèi)名后加上一個(gè)冒號(hào),再加上基類(lèi)的名稱(chēng)。C#支持多重繼承嗎?不支持。可以用接口來(lái)實(shí)現(xiàn)。被protected修飾的屬性/方法在何處可以訪(fǎng)問(wèn)?在繼承或間接繼承與這個(gè)類(lèi)的子類(lèi)中可以訪(fǎng)問(wèn)。私有成員會(huì)被繼承么?會(huì),但是不能被訪(fǎng)問(wèn)。所以看上去他們似乎是不能被繼承的,但實(shí)際上確實(shí)被繼承了。C#提供一個(gè)默認(rèn)的無(wú)參構(gòu)造函數(shù),當(dāng)我實(shí)現(xiàn)了另外一個(gè)有一個(gè)參數(shù)的構(gòu)造函數(shù)時(shí),還想保留這個(gè)無(wú)參數(shù)的構(gòu)造函數(shù)。這樣我應(yīng)該寫(xiě)幾個(gè)構(gòu)造函數(shù)?答:兩個(gè),一旦你實(shí)現(xiàn)了一個(gè)構(gòu)造函數(shù),C#就不會(huì)再提供默認(rèn)的構(gòu)造函數(shù)了,所以需要手動(dòng)實(shí)現(xiàn)那個(gè)無(wú)參構(gòu)造函數(shù)。簡(jiǎn)述 private、 protected、 public、 internal 修飾符的訪(fǎng)問(wèn)權(quán)限。private : 私有成員, 在類(lèi)的內(nèi)部才可以訪(fǎng)問(wèn)。protected : 保護(hù)成員,該類(lèi)內(nèi)部和繼承類(lèi)中可以訪(fǎng)問(wèn)。public : 公共成員,完全公開(kāi),沒(méi)有訪(fǎng)問(wèn)限制。internal: 在同一命名空間內(nèi)可以訪(fǎng)問(wèn)。new的兩種用法答:實(shí)例話(huà)對(duì)象,隱藏基類(lèi)方法。.new有幾種用法第一種:new Class();第二種:覆蓋方法public new XXXX()第三種:new 約束指定泛型類(lèi)聲明中的任何類(lèi)型參數(shù)都必須有公共的無(wú)參數(shù)構(gòu)造函數(shù)。3.datagrid.datasouse可以連接什么數(shù)據(jù)源 dataset,datatable,dataviewdataset,datatable,dataview , IList類(lèi)成員有( )種可訪(fǎng)問(wèn)形式可訪(fǎng)問(wèn)性:public ,protected ,private,internal委托與事件的用法答:public delegate void handels();/返回值是void,沒(méi)有參數(shù)public event handels eventHandels;his.eventHandels = new handels(fun);public void fun() 傳入某個(gè)屬性的SET方法的隱含參數(shù)的名稱(chēng)是什么?答:value,它的類(lèi)型和屬性所聲明的類(lèi)型相同。string是值類(lèi)型還是引用類(lèi)型?引用類(lèi)型String類(lèi)與StringBuilder類(lèi)有什么區(qū)別?為什么在.Net類(lèi)庫(kù)中要同時(shí)存在這2個(gè)類(lèi)?(簡(jiǎn)答)stringBuilder比string更節(jié)約內(nèi)存,所以stringBuilder更快String 對(duì)象是不可改變的。每次使用 System.String 類(lèi)中的方法之一或進(jìn)行運(yùn)算時(shí)(如賦值、拼接等)時(shí),都要在內(nèi)存中創(chuàng)建一個(gè)新的字符串對(duì)象,這就需要為該新對(duì)象分配新的空間。而 StringBuilder 則不會(huì)。在需要對(duì)字符串執(zhí)行重復(fù)修改的情況下,與創(chuàng)建新的 String 對(duì)象相關(guān)的系統(tǒng)開(kāi)銷(xiāo)可能會(huì)非常昂貴。如果要修改字符串而不創(chuàng)建新的對(duì)象,則可以使用 System.Text.StringBuilder 類(lèi)。例如,當(dāng)在一個(gè)循環(huán)中將許多字符串連接在一起時(shí),使用 StringBuilder 類(lèi)可以提升性能。在C中,string str = null 與 string str = “” 請(qǐng)盡量使用文字或圖象說(shuō)明其中的區(qū)別。答:string str = null 是不給他分配內(nèi)存空間,而string str = 給它分配長(zhǎng)度為空字符串的內(nèi)存空間。ASP.net的身份驗(yàn)證方式有哪些?分別是什么原理?答:Windwos(默認(rèn)) 用IIS.From(窗體) 用帳戶(hù).Passport(密鑰)Session有什么重大BUG,微軟提出了什么方法加以解決?答:是iis中由于有進(jìn)程回收機(jī)制,系統(tǒng)繁忙的話(huà)Session會(huì)丟失,可以用Sate server或SQL Server數(shù)據(jù)庫(kù)的方式存儲(chǔ)Session不過(guò)這種方式比較慢,而且無(wú)法捕獲Session的END事件c#中的三元運(yùn)算符是?:.能用foreach遍歷訪(fǎng)問(wèn)的對(duì)象需要實(shí)現(xiàn)()接口或聲明 (GetEnumerator)方法的類(lèi)型。. 和 有什么區(qū)別?表示綁定的數(shù)據(jù)源是服務(wù)器端代碼塊 常量在.net(C# or )中如何獲得當(dāng)前窗體或控件的句柄,特別是控件本身的句柄(請(qǐng)列舉)this(C#) Me().C#可否對(duì)內(nèi)存進(jìn)行直接的操作?在.net下,.net引用了垃圾回收(GC)功能,它替代了程序員 不過(guò)在C#中,不能直接實(shí)現(xiàn)Finalize方法,而是在析構(gòu)函數(shù)中調(diào)用基類(lèi)的Finalize()方法DateTime是否可以為null?不能,因?yàn)槠錇镾truct類(lèi)型,而結(jié)構(gòu)屬于值類(lèi)型,值類(lèi)型不能為null,只有引用類(lèi)型才能被賦值nullDateTime.Parse(myString); 這行代碼有什么問(wèn)題?有問(wèn)題,當(dāng)myString不能滿(mǎn)足時(shí)間格式要求的時(shí)候,會(huì)引發(fā)異常,建議使用DateTime.TryParse()net的錯(cuò)誤處理機(jī)制是:采用try-catch-finally結(jié)構(gòu),為什么不提倡catch(Exception)try.catch在出現(xiàn)異常的時(shí)候影響性能; 應(yīng)該捕獲更具體得異常,比如IOExeception,OutOfMemoryException等catch(Exception e)throw e;和catch(Exception e)throw;的區(qū)別將發(fā)生的異常對(duì)象拋出,另一個(gè)只是拋出異常,并沒(méi)有拋出原異常對(duì)象)error和exception區(qū)別:error表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問(wèn)題。比如說(shuō)內(nèi)存溢出。不可能指望程序能處理這樣的情況。exception表示一種設(shè)計(jì)或?qū)崿F(xiàn)問(wèn)題。也就是說(shuō),它表示如果程序運(yùn)行正常,從不會(huì)發(fā)生的情況。GET與POST的區(qū)別在FORM提交的時(shí)候,如果不指定Method,則默認(rèn)為GET請(qǐng)求,F(xiàn)orm中提交的數(shù)據(jù)將會(huì)附加在url之后,以?分開(kāi)與url分開(kāi)。字母數(shù)字字符原樣發(fā)送,但空格轉(zhuǎn)換為“+“號(hào),其它符號(hào)轉(zhuǎn)換為%XX,其中XX為該符號(hào)以16進(jìn)制表示的ASCII(或ISO Latin-1)值。GET請(qǐng)求請(qǐng)?zhí)峤坏臄?shù)據(jù)放置在HTTP請(qǐng)求協(xié)議頭中,而POST提交的數(shù)據(jù)則放在實(shí)體數(shù)據(jù)中;在使用 POST 方法的情況下,傳輸數(shù)據(jù)時(shí)不會(huì)將數(shù)據(jù)作為 URL 的一部分;它們會(huì)作為一個(gè)獨(dú)立的實(shí)體來(lái)傳輸。因此,POST 方法更安全,你也可以用這個(gè)方法傳輸更多的數(shù)據(jù)。而且用 POST 傳輸?shù)臄?shù)據(jù)不一定要是文本,用 GET 方法傳輸?shù)膮s一定要是文本。(1)get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器傳送數(shù)據(jù)。(1)在客戶(hù)端,Get方式在通過(guò)URL提交數(shù)據(jù),數(shù)據(jù)在URL中可以看到;POST方式,數(shù)據(jù)放置在HTML HEADER內(nèi)提交。(2)對(duì)于get方式,服務(wù)器端用Request.QueryString獲取變量的值,對(duì)于post方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。(2)GET方式提交的數(shù)據(jù)最多只能有1024字節(jié),而POST則沒(méi)有此限制。(3)安全性問(wèn)題。正如在(1)中提到,使用 Get 的時(shí)候,參數(shù)會(huì)顯示在地址欄上,而 Post 不會(huì)。所以,如果這些數(shù)據(jù)是中文數(shù)據(jù)而且是非敏感數(shù)據(jù),那么使用 get;如果用戶(hù)輸入的數(shù)據(jù)不是中文字符而且包含敏感數(shù)據(jù),那么還是使用 post為好。Bind和Eval函數(shù)的區(qū)別 綁定表達(dá)式 1 Eval 單向綁定:數(shù)據(jù)是只讀的 Bind 雙向綁定:數(shù)據(jù)可以更改,并返回服務(wù)器端,服務(wù)器可以處理更改后的數(shù)據(jù),如存入數(shù)據(jù)庫(kù).2.當(dāng)對(duì)次表達(dá)式操作時(shí)候,必須用Eval 如3 綁定控件的屬性時(shí)要用Bind,而Eval則是其它一些。 例如:asp:TextBox ID=First RunAt=Server Text= / 例如:Response.Redirect和Server.Transfer請(qǐng)求的過(guò)程:1)瀏覽器aspx文件請(qǐng)求-服務(wù)器執(zhí)行-遇到Response.Redirect語(yǔ)句-服務(wù)器發(fā)送Response.Redirect后面的地址給客戶(hù)機(jī)端的瀏覽器-瀏覽器請(qǐng)求執(zhí)行新的地址2)瀏覽器aspx文件請(qǐng)求-服務(wù)器執(zhí)行-遇到Server.Transfer語(yǔ)句-服務(wù)器轉(zhuǎn)向新的文件可以見(jiàn)Server.Transfer比Response.Redirect少了一次服務(wù)器發(fā)送回來(lái)和客戶(hù)端再請(qǐng)求的過(guò)程.跳轉(zhuǎn)對(duì)象:1)Response.Redirect可以切換到任何存在的網(wǎng)頁(yè)。2)Server.Transfer只能切換到同目錄或者子目錄的網(wǎng)頁(yè).數(shù)據(jù)保密:1、Response.Redirect后地址會(huì)變成跳轉(zhuǎn)后的頁(yè)面地址。2、Server.Transfer后地址不變,隱藏了新網(wǎng)頁(yè)的地址及附帶在地址后邊的參數(shù)值。具有數(shù)據(jù)保密功能。傳遞的數(shù)據(jù)量(網(wǎng)址后附帶的參數(shù)):1、Response.Redirect能夠傳遞的數(shù)據(jù)以2KB(也就是地址欄中地址的最大的長(zhǎng)度)為限。2、傳遞的數(shù)據(jù)超過(guò)2KB時(shí),務(wù)必使用Server.Transfer。Server.UrlEncode、HttpUtility.UrlDecode的區(qū)別Server.UrlEncode的編碼方式是按照本地程序設(shè)置的編碼方式進(jìn)行編碼的,而HttpUtility.UrlEncode是默認(rèn)的按照.net的utf-8格式進(jìn)行編碼的。Static 和 非Static的區(qū)別:一、用Static聲明的方法和變量,不需要實(shí)例化該類(lèi)就調(diào)用;二、Static的,就一定要用實(shí)例化的對(duì)象來(lái)調(diào)用,即用new來(lái)實(shí)例化。舉例說(shuō):如果有一個(gè)類(lèi)People,有一個(gè)Static的方法MiaoShu(), 調(diào)用方法就是 People.MisoShu()有一個(gè)非Static的方法getName(), 調(diào)用方法就是 People p= new People(); p.getName();如何實(shí)現(xiàn)連接池確保你每一次的連接使用相同的連接字符串(和連接池相同);只有連接字符串相同時(shí)連接池才會(huì)工作。如果連接字符串不相同,應(yīng)用程序就不會(huì)使用連接池而是創(chuàng)建一個(gè)新的連接。優(yōu)點(diǎn)使用連接池的最主要的優(yōu)點(diǎn)是性能。創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)連接所耗費(fèi)的時(shí)間主要取決于網(wǎng)絡(luò)的速度以及應(yīng)用程序和數(shù)據(jù)庫(kù)服務(wù)器的(網(wǎng)絡(luò))距離,而且這個(gè)過(guò)程通常是一個(gè)很耗時(shí)的過(guò)程。而采用數(shù)據(jù)庫(kù)連接池后,數(shù)據(jù)庫(kù)連接請(qǐng)求可以直接通過(guò)連接池滿(mǎn)足而不需要為該請(qǐng)求重新連接、認(rèn)證到數(shù)據(jù)庫(kù)服務(wù)器,這樣就節(jié)省了時(shí)間。缺點(diǎn)數(shù)據(jù)庫(kù)連接池中可能存在著多個(gè)沒(méi)有被使用的連接一直連接著數(shù)據(jù)庫(kù)(這意味著資源的浪費(fèi))。技巧和提示1 當(dāng)你需要數(shù)據(jù)庫(kù)連接時(shí)才去創(chuàng)建連接池,而不是提前建立。一旦你使用完連接立即關(guān)閉它,不要等到垃圾收集器來(lái)處理它。2 在關(guān)閉數(shù)據(jù)庫(kù)連接前確保關(guān)閉了所有用戶(hù)定義的事務(wù)。3 不要關(guān)閉數(shù)據(jù)庫(kù)中所有的連接,至少保證連接池中有一個(gè)連接可用。如果內(nèi)存和其他資源是你必須首先考慮的問(wèn)題,可以關(guān)閉所有的連接,然后在下一個(gè)請(qǐng)求到來(lái)時(shí)創(chuàng)建連接池。連接池FAQ1何時(shí)創(chuàng)建連接池?當(dāng)?shù)谝粋€(gè)連接請(qǐng)求到來(lái)時(shí)創(chuàng)建連接池;連接池的建立由數(shù)據(jù)庫(kù)連接的連接字符創(chuàng)來(lái)決定。每一個(gè)連接池都與一個(gè)不同的連接字符串相關(guān)。當(dāng)一個(gè)新的連接請(qǐng)求到來(lái)時(shí)如果連接字符串和連接池使用的字符串相同,就從連接池取出一個(gè)連接;如果不相同,就新建一個(gè)連接池。2何時(shí)關(guān)閉連接池?當(dāng)連接池中的所有連接都已經(jīng)關(guān)閉時(shí)關(guān)閉連接池。3當(dāng)連接池中的連接都已經(jīng)用完,而有新的連接請(qǐng)求到來(lái)時(shí)會(huì)發(fā)生什么?當(dāng)連接池已經(jīng)達(dá)到它的最大連接數(shù)目時(shí),有新的連接請(qǐng)求到來(lái)時(shí),新的連接請(qǐng)求將放置到連接隊(duì)列中。當(dāng)有連接釋放給連接池時(shí),連接池將新釋放的連接分配給在隊(duì)列中排隊(duì)的連接請(qǐng)求。你可以調(diào)用close和dispose將連接歸還給連接池。4我應(yīng)該如何允許連接池?對(duì)于.NET應(yīng)用程序而言,默認(rèn)為允許連接池。(這意味著你可以不必為這件事情做任何的事情)當(dāng)然,如果你可以在SQLConnection對(duì)象的連接字符串中加進(jìn)Pooling=true;確保你的應(yīng)用程序允許連接池的使用。5我應(yīng)該如何禁止連接池?ADO.NET默認(rèn)為允許數(shù)據(jù)庫(kù)連接池,如果你希望禁止連接池,可以使用如下的方式:1) 使用SQLConnection對(duì)象時(shí),往連接字符串加入如下內(nèi)容:Pooling=False;2) 使用OLEDBConnection對(duì)象時(shí),往連接字符串加入如下內(nèi)容:OLE DB Services=-4;提高.NET的性能1 使用異步方式調(diào)用Web服務(wù)和遠(yuǎn)程對(duì)象只要有可能就要避免在請(qǐng)求的處理過(guò)程中對(duì)Web服務(wù)和遠(yuǎn)程對(duì)象的同步調(diào)用,因?yàn)樗加玫氖堑腁SP.NET 線(xiàn)程池中的工作線(xiàn)程,這將直接影響Web服務(wù)器響應(yīng)其它請(qǐng)求的能力。2 使用適當(dāng)?shù)腃aching策略來(lái)提高性能3 判斷字符串,不要用比較。/避免if(strABC!=null & strABC!=)/推薦if(!strABC.IsNullOrEmpty)4 頁(yè)面優(yōu)化5 用完馬上關(guān)閉數(shù)據(jù)庫(kù)連接6 盡量使用存儲(chǔ)過(guò)程,并優(yōu)化查詢(xún)語(yǔ)句7 只讀數(shù)據(jù)訪(fǎng)問(wèn)用SqlDataReader,不要使用DataSet.UDP連接和TCP連接的異同答:前者只管傳,不管數(shù)據(jù)到不到,無(wú)須建立連接.后者保證傳輸?shù)臄?shù)據(jù)準(zhǔn)確,須要連結(jié).請(qǐng)解釋轉(zhuǎn)發(fā)與跳轉(zhuǎn)的區(qū)別轉(zhuǎn)發(fā)就是服務(wù)端的跳轉(zhuǎn)A頁(yè)面提交數(shù)據(jù)到B頁(yè)面,B頁(yè)面進(jìn)行處理然后從服務(wù)端跳轉(zhuǎn)到其它頁(yè)面跳轉(zhuǎn)就是指客戶(hù)端的跳轉(zhuǎn)簡(jiǎn)述你對(duì)XML Web Service的原理的認(rèn)識(shí)?答:利用SOAP(簡(jiǎn)單對(duì)象訪(fǎng)問(wèn)協(xié)議)在http上執(zhí)行遠(yuǎn)程方法的調(diào)用,也可以使用WSDL(Web服務(wù)描述語(yǔ)言)來(lái)完成完整的描述Web服務(wù),然后用UDDI注冊(cè)各個(gè)服務(wù)提供商提供的服務(wù),以便共享他們。什么叫應(yīng)用程序域?答:應(yīng)用程序域可以理解為一種輕量級(jí)進(jìn)程。起到安全的作用。占用資源小。CTS、CLS、CLR分別作何解釋?zhuān)看穑篊TS:通用語(yǔ)言系統(tǒng)。CLS:通用語(yǔ)言規(guī)范。CLR:公共語(yǔ)言運(yùn)行庫(kù)。什么是受管制的代碼?答:unsafe:非托管代碼。不經(jīng)過(guò)CLR運(yùn)行。什么是強(qiáng)類(lèi)型系統(tǒng)?答:RTTI:類(lèi)型識(shí)別系統(tǒng)。什么是code-behind技術(shù)codebehind是指代碼和用戶(hù)界面分開(kāi)aspx and cs在.net中,配件的意思是?答:程序集。(中間語(yǔ)言,源數(shù)據(jù),資源,裝配清單)常用的調(diào)用WebService的方法有哪些?答:1.使用WSDL.exe命令行工具。 2.使用VS.NET中的Add Web Reference菜單選項(xiàng)net Remoting 的工作原理是什么?答:服務(wù)器端向客戶(hù)端發(fā)送一個(gè)進(jìn)程編號(hào),一個(gè)程序域編號(hào),以確定對(duì)象的位置。O/R Mapping 的原理答:利用反射,配置將對(duì)象和數(shù)據(jù)庫(kù)表映射remoting和webservice兩項(xiàng)技術(shù)的理解以及實(shí)際中的應(yīng)用。答:WS主要是可利用HTTP,穿透防火墻。而Remoting可以利用TCP/IP,二進(jìn)制傳送提高效率。out保留字怎么使用,什么時(shí)候使用答:有時(shí)為了從一個(gè)函數(shù)中返回多個(gè)值,我們需要使用out關(guān)鍵字,把輸出值賦給通過(guò)引用傳遞給方法的變量(也就是參數(shù))。但C#要求變量再被引用的前必須初始化。在調(diào)用該方法時(shí),還需要添加out關(guān)鍵字PDB是什么東西? 在調(diào)試中它應(yīng)該放在哪里?PDB是用于保存調(diào)試和項(xiàng)目狀態(tài)信息的文件,在debug的時(shí)候?qū)a(chǎn)生pdb文件,調(diào)試的時(shí)候應(yīng)該放在和對(duì)應(yīng)應(yīng)用程序集相同目錄。使用ASMX的XML Web服務(wù)與使用SOAP的.NET Remoting的區(qū)別?Web服務(wù)使用的消息機(jī)制,而Remoting采用的RPC. Web Service能用于不同平臺(tái),不同語(yǔ)言,Remoting只適用于.Net。效率上Remoting高于Xml Web Service類(lèi)型系統(tǒng)是由XMLSchema表示的嗎?CLS是XMLSchema表示的嗎?不清楚從概念上闡述前期綁定(early-binding)和后期綁定(late-binding)的區(qū)別?這個(gè)就像是強(qiáng)弱類(lèi)型的比較相似,前期綁定是在編譯的時(shí)候就確定了要綁定的數(shù)據(jù),而后期綁定是在運(yùn)行的時(shí)候才填充數(shù)據(jù)。所以前期綁定如果失敗,會(huì)在編譯時(shí)報(bào)編譯錯(cuò)誤,而后期綁定失敗只有在運(yùn)行時(shí)的時(shí)候才發(fā)生調(diào)用Assembly.Load算靜態(tài)引用還是動(dòng)態(tài)引用?動(dòng)態(tài)列舉一下你所了解的XML技術(shù)及其應(yīng)用答:保存配置,站與站之間的交流,WEB SERVICE。以及與數(shù)據(jù)庫(kù)的數(shù)據(jù)交互等地方都要用它.7.如何理解委托?答:相當(dāng)于函數(shù)指針,定義了委托就可以在不調(diào)用原方法名稱(chēng)的情況下調(diào)用那個(gè)方法.委托具有以下特點(diǎn):委托類(lèi)似于 C+ 函數(shù)指針,但它是類(lèi)型安全的。委托允許將方法作為參數(shù)進(jìn)行傳遞。委托可用于定義回調(diào)方法。委托可以鏈接在一起;例如,可以對(duì)一個(gè)事件調(diào)用多個(gè)方法。方法不需要與委托簽名精確匹配。有關(guān)更多信息,請(qǐng)參見(jiàn)協(xié)變和逆變。C# 2.0 版引入了匿名方法的概念,此類(lèi)方法允許將代碼塊作為參數(shù)傳遞,以代替單獨(dú)定義的方法。概述反射和序列化反射:程序集包含模塊,而模塊包含類(lèi)型,類(lèi)型又包含成員。反射則提供了封裝程序集、模塊和類(lèi)型的對(duì)象。您可以使用反射動(dòng)態(tài)地創(chuàng)建類(lèi)型的實(shí)例,將類(lèi)型綁定到現(xiàn)有對(duì)象,或從現(xiàn)有對(duì)象中獲取類(lèi)型。然后,可以調(diào)用類(lèi)型的方法或訪(fǎng)問(wèn)其字段和屬性序列化:序列化是將對(duì)象轉(zhuǎn)換為容易傳輸?shù)母袷降倪^(guò)程。例如,可以序列化一個(gè)對(duì)象,然后使用 HTTP 通過(guò) Internet 在客戶(hù)端和服務(wù)器之間傳輸該對(duì)象。在另一端,反序列化將從該流重新構(gòu)造對(duì)象。11) XmlSerializer是如何工作的?使用這個(gè)類(lèi)的進(jìn)程需要什么ACL權(quán)限?我只知道XmlSerializer是將對(duì)象的屬性和字段進(jìn)行序列化和反序列化的,序列化成為xml數(shù)據(jù),反序列化再將xml轉(zhuǎn)換成對(duì)象。應(yīng)該至少需要ACL權(quán)限中的讀權(quán)限.23)XmlSerializer使用的針對(duì)屬性的模式有什么好處?解決了什么問(wèn)題?只序列化有用的數(shù)據(jù),而不是序列化整個(gè)對(duì)象。實(shí)現(xiàn)沒(méi)必要的數(shù)據(jù)冗余,和提升序列化時(shí)的性能。26.根據(jù)委托(delegate)的知識(shí),請(qǐng)完成以下用戶(hù)控件中代碼片段的填寫(xiě):namespace testpublic delegate void OnDBOperate();public class UserControlBase : System.Windows.Forms.UserControlpublic event OnDBOperate OnNew;privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)if(e.Button.Equals(BtnNew)/請(qǐng)?jiān)谝韵卵a(bǔ)齊代碼用來(lái)調(diào)用OnDBOperate委托簽名的OnNew事件。答:if( OnNew != null ) OnNew( this, e );27.分析以下代碼,完成填空string strTmp = abcdefg某某某;int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;int j= strTmp.Length;以上代碼執(zhí)行完后,i= j=答:i=13,j=1028.SQLSERVER服務(wù)器中,給定表 table1 中有兩個(gè)字段 ID、LastUpdateDate,ID表示更新的事務(wù)號(hào),LastUpdateDate表示更新時(shí)的服務(wù)器時(shí)間,請(qǐng)使用一句SQL語(yǔ)句獲得最后更新的事務(wù)號(hào)答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)29.根據(jù)線(xiàn)程安全的相關(guān)知識(shí),分析以下代碼,當(dāng)調(diào)用test方法時(shí)i10時(shí)是否會(huì)引起死鎖?并簡(jiǎn)要說(shuō)明理由。public void test(int i) lock(this) if (i10) i-; test(i); 答:不會(huì)發(fā)生死鎖,(但有一點(diǎn)int是按值傳遞的,所以每次改變的都只是一個(gè)副本,因此不會(huì)出現(xiàn)死鎖。但如果把int換做一個(gè)object,那么死鎖會(huì)發(fā)生)3) 什么叫圈復(fù)雜度(cyclomatic complexity)?為什么它很重要?不知道,望指教 ?4) 寫(xiě)一個(gè)標(biāo)準(zhǔn)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論