2023年面試問答大匯總_第1頁
2023年面試問答大匯總_第2頁
2023年面試問答大匯總_第3頁
2023年面試問答大匯總_第4頁
2023年面試問答大匯總_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

HYPERLINK"".net面試問答(大匯總)用.net做B/S結(jié)構(gòu)的系統(tǒng),您是用幾層結(jié)構(gòu)來開發(fā),每一層之間的關(guān)系以及為什么要這樣分層??答:從下至上分別為:數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層(又或成為領(lǐng)域?qū)?、表達層

數(shù)據(jù)訪問層:有時候也稱為是持久層,其功能重要是負責(zé)數(shù)據(jù)庫的訪問

業(yè)務(wù)邏輯層:是整個系統(tǒng)的核心,它與這個系統(tǒng)的業(yè)務(wù)(領(lǐng)域)有關(guān)

表達層:是系統(tǒng)的UI部分,負責(zé)使用者與整個系統(tǒng)的交互。

優(yōu)點:

分工明確,條理清楚,易于調(diào)試,并且具有可擴展性。

缺陷:

增長成本。分層式結(jié)構(gòu)究竟其優(yōu)勢何在??1、開發(fā)人員可以只關(guān)注整個結(jié)構(gòu)中的其中某一層;

2、可以很容易的用新的實現(xiàn)來替換原有層次的實現(xiàn);

3、可以減少層與層之間的依賴;

4、有助于標(biāo)準(zhǔn)化;

5、利于各層邏輯的復(fù)用。

概括來說,分層式設(shè)計可以達至如下目的:分散關(guān)注、松散耦合、邏輯復(fù)用、標(biāo)準(zhǔn)定義。分層式結(jié)構(gòu)也不可避免具有一些缺陷:

1、減少了系統(tǒng)的性能。這是不言而喻的。假如不采用分層式結(jié)構(gòu),很多業(yè)務(wù)可以直接造訪數(shù)據(jù)庫,以此獲取相應(yīng)的數(shù)據(jù),如今卻必須通過中間層來完畢。

2、有時會導(dǎo)致級聯(lián)的修改。這種修改特別體現(xiàn)在自上而下的方向。假如在表達層中需要增長一個功能,為保證其設(shè)計符合分層式結(jié)構(gòu),也許需要在相應(yīng)的業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層中都增長相應(yīng)的代碼。MVC模式MVC(Model-View-Controller)把交互系統(tǒng)的組成分解成模型、視圖、控制器三種部件mvc的優(yōu)點:1.通過把項目提成modelview和controller,使得復(fù)雜項目更加容易維護。2.沒有使用viewstat(yī)e和服務(wù)器表單控件,可以更方便的控制應(yīng)用程序的行為3.應(yīng)用程序通過controller來控制程序請求,可以提供豐富的url重寫。4.對單元測試的支持更加杰出5.在團隊開發(fā)模式下表現(xiàn)更杰出MVC的局限性:

(1)增長了系統(tǒng)結(jié)構(gòu)和實現(xiàn)的復(fù)雜性。對于簡樸的界面,嚴格遵循MVC,使模型、視圖與控制器分離,會增長結(jié)構(gòu)的復(fù)雜性,并也許產(chǎn)生過多的更新操作,減少運營效率。

?(2)視圖與控制器間的過于緊密的連接。視圖與控制器是互相分離,但的確聯(lián)系緊密的部件,視圖沒有控制器的存在,其應(yīng)用是很有限的,反之亦然,這樣就妨礙了他們的獨立重用。

(3)視圖對模型數(shù)據(jù)的低效率訪問。依據(jù)模型操作接口的不同,視圖也許需要多次調(diào)用才干獲得足夠的顯示數(shù)據(jù)。對未變化數(shù)據(jù)的不必要的頻繁訪問,也將損害操作性能。asp.net如何實現(xiàn)MVC模式,舉例說明!web/business/dataaccess

列舉ASP.NET頁面之間傳遞值的幾種方式。?1.使用QueryString,如....?id=1;response.Redirect()....

2.使用Session變量?3.使用Server.Transfer請說明在.net中常用的幾種頁面間傳遞參數(shù)的方法,并說出他們的優(yōu)缺陷。?QueryString

傳遞一個或多個安全性規(guī)定不高或是結(jié)構(gòu)簡樸的數(shù)值。但是對于傳遞數(shù)組或?qū)ο蟮脑?,就不能用這個方法了?session(viewstate)簡樸,但易丟失作用于用戶個人,過量的存儲會導(dǎo)致服務(wù)器內(nèi)存資源的耗盡。

application對象的作用范圍是整個全局,也就是說對所有用戶都有效。其常用的方法用Lock和UnLock

cookie簡樸,但也許不支持,也許被偽造Cookie是存放在客戶端的,而session是存放在服務(wù)器端的。并且Cookie的使用要配合ASP.NET內(nèi)置對象Request來使用

inputttype="hidden"簡樸,也許被偽造?url參數(shù)簡樸,顯示于地址欄,長度有限?Server.Transfer

把流程從當(dāng)前頁面引導(dǎo)到另一個頁面中,新的頁面使用前一個頁面的應(yīng)答流

數(shù)據(jù)庫穩(wěn)定,安全,但性能相對弱

?什么是Viewstate?它有什么作用?ViewState用來保存頁面狀態(tài),就是說提交之后我們還可以看到文本框里面的內(nèi)容就是ViewState保存的功勞。

ViewState只維護當(dāng)前頁面的狀態(tài),不同頁面之間不能共享,Session可以。

ViewState你可以理解為一個隱藏控件。ASP.Net頁面生命周期

每個頁面的生命周期為用戶的每一次訪問,也就是說每一次客戶端與服務(wù)器之間的一個往返過程.全局變量的生命周期在此之間.1.Page_Init();

2.LoadViewStateandPostbackdata;?3.Page_Load();

4.Handlecontrolevents;

5.Page_PreRender();

6.Page_Render();

7.Unloadevent;?8.Disposemethodcalled;ADO.net中常用的對象有哪些?分別描述一下。?答:

Connection

打開數(shù)據(jù)庫連接?Command

執(zhí)行數(shù)據(jù)庫命令?DataAdapter

連接數(shù)據(jù),執(zhí)行數(shù)據(jù)庫命令,填充DataSet

Dat(yī)aSet

數(shù)據(jù)在內(nèi)存中的緩存,數(shù)據(jù)結(jié)構(gòu)

DataReader

只讀向前的讀取數(shù)據(jù)庫Dat(yī)aReader和DataSet的異同?DataReader使用時始終占用SqlConnection,在線操作數(shù)據(jù)庫..任何對SqlConnection的操作都會引發(fā)DataReader的異常..由于DataReader每次只在內(nèi)存中加載一條數(shù)據(jù),所以占用的內(nèi)存是很小的..由于DataReader的特殊性和高性能.所以DataReader是只進的..你讀了第一條后就不能再去讀取第一條了..?DataSet則是將數(shù)據(jù)一次性加載在內(nèi)存中.拋棄數(shù)據(jù)庫連接..讀取完畢即放棄數(shù)據(jù)庫連接..由于DataSet將數(shù)據(jù)所有加載在內(nèi)存中.所以比較消耗內(nèi)存...但是確比DataReader要靈活..可以動態(tài)的添加行,列,數(shù)據(jù).對數(shù)據(jù)庫進行回傳更新操作...

存儲過程和sql語句的優(yōu)缺陷優(yōu)點:

1.提高性能,減少網(wǎng)絡(luò)傳輸,節(jié)約時間。2.減少網(wǎng)絡(luò)流量

存儲過程位于服務(wù)器上,調(diào)用的時候只須傳遞存儲過程的名稱以及參數(shù),不用每次訪問都傳遞很長的sql語句。4.安全性

減少sql注入式襲擊。5.可維護性高

更新存儲過程通常比更改、測試以及重新部署程序集需要較少的時間和精力。缺陷:1.交互性差。2.可移植性差

說出你所了解的數(shù)據(jù)庫訪問組件(例如ADO,至少4種)

答:ADO,ADO.Net,MDAC(MicrosoftDataAccessComponents),MicrosoftSQLServerOLEDBProvider,MicrosoftJetOLEDBProvider,DesktopDatabaseDriversODBCDriver,VisualFoxProODBCDriver什么是面向?qū)ο?萬物都是對象,其重要特性:封裝、繼承、多態(tài)如何實現(xiàn)多態(tài)

1.通過對象直接調(diào)用成員函數(shù)時,始終默認使用該對象的類的成員函數(shù)(除非用::顯示指定類名)。2.通過指向?qū)ο蟮闹羔樆蛞谜{(diào)用成員函數(shù)時:假如該函數(shù)是實函數(shù),則調(diào)用該指針或引用的類的成員函數(shù);假如該函數(shù)是虛函數(shù),則調(diào)用該指針或引用指向的對象的類的成員函數(shù)。面向?qū)ο蟮乃枷胫匾婕笆裁??答:任何事物都可以理解為對象,其重要特性:繼承。封裝。多態(tài)。特點:代碼好維護,安全,隱藏信息什么是裝箱和拆箱??答:從值類型接口轉(zhuǎn)換到引用類型裝箱。從引用類型轉(zhuǎn)換到值類型拆箱。裝箱(boxing)是將值類型的數(shù)據(jù)轉(zhuǎn)化成引用類型,inti=3;objecto=i;便是裝箱過程,而拆箱(unboxing)是將飲用類型數(shù)據(jù)轉(zhuǎn)換值類型,比如intj=(int)o;屬于拆箱?

什么是Interface?它與AbstractClass有什么區(qū)別?接口(Interface)是用來定義行為規(guī)范的,不會有具體實現(xiàn),而抽象類除定義行為規(guī)范外,可以有部分實現(xiàn),但一個類能實現(xiàn)多個接口,但只能繼承一個父類

什么時候使用抽象類,什么時候用接口?

接口用于規(guī)范,抽象類用于共性。接口中只能聲明方法,屬性,事件,索引器。而抽象類中可以有方法的實現(xiàn),也可以定義非靜態(tài)的類變量。抽象類是類,所以只能被單繼承,但是接口卻可以一次實現(xiàn)多個。抽象類可以提供某些方法的部分實現(xiàn),接口不可以.抽象類的實例是它的子類給出的。接口的實例是實現(xiàn)接口的類給出的。再抽象類中加入一個方法,那么它的子類就同時有了這個方法。而在接口中加入新的方法,那么實現(xiàn)它的類就要重新編寫(這就是為什么說接口是一個類的規(guī)范了)。接口成員被定義為公共的,但抽象類的成員也可以是私有的、受保護的、內(nèi)部的或受保護的內(nèi)部成員(其中受保護的內(nèi)部成員只能在應(yīng)用程序的代碼或派生類中訪問)。此外接口不能包含字段、構(gòu)造函數(shù)、析構(gòu)函數(shù)、靜態(tài)成員或常量。什么是抽象類(abstractclass)?

一種不可以被實例化的類。抽象類中一般具有抽象方法,當(dāng)然也可有具體實現(xiàn)。繼承類只有實現(xiàn)過所有抽象類的抽象方法后才干被實例化。何時必須聲明一個類為抽象類?

當(dāng)這個類中包含抽象方法時,或是該類并沒有完全實現(xiàn)父類的抽象方法時。接口(interface)是什么??只具有共有抽象方法(publicabstractmethod)的類。這些方法必須在子類中被實現(xiàn)。為什么不能指定接口中方法的修飾符?

接口中的方法用來定義對象之間通信的契約,指定接口中的方法為私有或保護沒故意義。他們默認為公有方法??梢岳^承多個接口么?

當(dāng)然。那么假如這些接口中有反復(fù)的方法名稱呢??這種情況中你可以決定如何實現(xiàn)。當(dāng)然需要特別得小心。但是在編譯環(huán)節(jié)是沒有問題的。接口和抽象類的區(qū)別是什么??接口中所有方法必須是抽象的,并且不能指定方法的訪問修飾符。抽象類中可以有方法的實現(xiàn),也可以指定方法的訪問修飾符。

詳述.NET里class和struct的異同!類是引用類型,可以繼承類、接口和被繼承,有默認的構(gòu)造函數(shù),有析構(gòu)函數(shù),可以使用abstract和sealed,有protected修飾符,必須使用new初始化。?結(jié)構(gòu)是值類型,只能繼承接口,不能被繼承,沒有默認的構(gòu)造函數(shù),可以創(chuàng)建,沒有析構(gòu)函數(shù),不可以用abstract和sealed,沒有protected修飾符,可以不用new初始化。如何選擇結(jié)構(gòu)還是類

1.堆棧的空間有限,對于大量的邏輯的對象,創(chuàng)建類要比創(chuàng)建結(jié)構(gòu)好一些

2.結(jié)構(gòu)表達如點、矩形和顏色這樣的輕量對象?例如,假如聲明一個具有1000個點對象的數(shù)組,則將為引用每個對象分派附加的內(nèi)存。

在此情況下,結(jié)構(gòu)的成本較低。?3.在表現(xiàn)抽象和多級別的對象層次時,類是最佳的選擇?4.大多數(shù)情況下該類型只是一些數(shù)據(jù)時,結(jié)構(gòu)時最佳的選擇C#中的接口和類有什么異同。

異:?不能直接實例化接口。?接口不包含方法的實現(xiàn)。?接口、類和結(jié)構(gòu)可從多個接口繼承。但是C#只支持單繼承:類只能從一個基類繼承實現(xiàn)。?類定義可在不同的源文獻之間進行拆分。

同:?接口、類和結(jié)構(gòu)可從多個接口繼承。

接口類似于抽象基類:繼承接口的任何非抽象類型都必須實現(xiàn)接口的所有成員。?接口可以包含事件、索引器、方法和屬性。

一個類可以實現(xiàn)多個接口。

const和readonly有什么區(qū)別?

const關(guān)鍵字用來聲明編譯時常量,readonly用來聲明運營時常量。用sealed修飾的類有什么特點?sealed修飾符用于防止從所修飾的類派生出其它類。假如一個密封類被指定為其他類的基類,則會發(fā)生編譯時錯誤。?密封類不能同時為抽象類。?sealed修飾符重要用于防止非故意的派生,但是它還能促使某些運營時優(yōu)化。具體說來,由于密封類永遠不會有任何派生類,所以對密封類的實例的虛擬函數(shù)成員的調(diào)用可以轉(zhuǎn)換為非虛擬調(diào)用來解決。虛函數(shù)的用法

答:

1)virtual指明一成員函數(shù)為虛函數(shù),而virtual僅用于類的定義里,在類外可不加此關(guān)鍵字.

2)一個類的成員函數(shù)被定義為虛函數(shù)時,子類該函數(shù)仍保持虛函數(shù)特性.?3)子類覆蓋此函數(shù)時,定義里可不加virtual關(guān)鍵字,但函數(shù)聲明要和基類的完全一致!且此聲明是必須的.

4)不是純虛函數(shù)時,父類的虛函數(shù)必須要實現(xiàn);而若將父類的虛函數(shù)設(shè)定為純虛函數(shù)時,子類必需要覆蓋之并且必須要實現(xiàn)之!解釋virtual、sealed、override和abstract的區(qū)別

virtual申明虛方法的關(guān)鍵字,說明該方法可以被重寫?sealed說明該類不可被繼承

override重寫基類的方法

abstract申明抽象類和抽象方法的關(guān)鍵字,抽象方法不提供實現(xiàn),由子類實現(xiàn),抽象類不可實例化。重載和覆寫有什么區(qū)別?

答:重載是方法的名稱相同,不同的參數(shù)類型,不同的參數(shù)個數(shù),不同的參數(shù)順序。覆寫提供了子類中改變父類方法行為的實現(xiàn)(是進行基類中函數(shù)的重寫)。在方法定義中,virtual有什么含義?

答:被virtual修飾的方法可以被子類覆寫可以將非靜態(tài)的方法覆寫成靜態(tài)方法嗎??答:不能,覆寫方法的署名必須與被覆寫方法的署名保持一致,除了將virtual改為override。可以覆寫私有的虛方法嗎??答:不可以,甚至子類中無法訪問父類中的私有方法可以阻止某一個類被其他類繼承嗎?

答:可以,使用關(guān)鍵字sealed可以實現(xiàn)允許某個類別繼承,但不允許其中的某個方法被覆寫嗎?

答:可以,標(biāo)記這個類為public,并標(biāo)記這個方法為sealed。如何區(qū)別重載方法??不同的參數(shù)類型,不同的參數(shù)個數(shù),不同的參數(shù)順序c#繼承:

base表達當(dāng)前對象基類的實例(使用base關(guān)鍵字可以調(diào)用基類的成員)this表達當(dāng)前類的實例在靜態(tài)方法中不可以使用base和this關(guān)鍵字派生類會繼承基類所有的成員但是構(gòu)造函數(shù)和析構(gòu)函數(shù)不會被繼承注意假如派生類的方法和基類的方法同名則基類中的方法將會被隱藏假如需要隱藏則可以使用關(guān)鍵字new來隱藏假如不寫new關(guān)鍵字默認解決為隱藏雖然基類中同名的方法被隱藏了但是還是可以通過base關(guān)鍵字來調(diào)用//假如子類方法的方法名和基類的方法名相同時,系統(tǒng)將隱藏基類同名方法,自動調(diào)用子類的同名方法//派生類會繼承基類所有的成員,但是不能顯示調(diào)用基類的是有成員//在派生類中不可以調(diào)用基類的是有成員,如num1,num2,但是可以實現(xiàn)調(diào)用基類方法virtual用在基類中指定一個虛方法屬性表達這個方法屬性可以重寫override用在派生類中表達對基類虛方法屬性的重寫不能重寫非虛方法或靜態(tài)方法重寫的基方法必須是virtualabstract或override的為什么override也可以重寫呢由于基類中的override事實上是對基類的基類進行的重寫由于繼承可傳遞所以也可以對基類中override的方法進行重寫override聲明不能更改virtual方法的可訪問性override方法和virtual方法必須具有相同的訪問級別修飾符不能使用修飾符newstaticvirtual或abstract來修改override方法重寫屬性聲明必須指定與繼承屬性完全相同的訪問修飾符類型和名稱并且被重寫的屬性必須是virtualabstract或override的標(biāo)記允許被重寫修飾靜態(tài)方法中不允許使用virtual關(guān)鍵字成員變量允許使用virtual關(guān)鍵字屬性可以被聲明為虛屬性(使用virtual關(guān)鍵字)重寫基類的方法(重寫同名的方法中有virtual關(guān)鍵字的方法)重寫和隱藏的區(qū)別隱藏(new關(guān)鍵字)是給子類的同名方法分派新的內(nèi)存空間重寫(override關(guān)鍵字)是子類的同名方法放在基類同名方法的本來所在位置基類的同名方法位置向后移屬性也可以重寫virtual關(guān)鍵字和override關(guān)鍵字是成對出現(xiàn)的否則是語法錯誤派生類可以通過將重寫聲明為sealed來停止虛擬繼承這需要在類成員聲明中的override關(guān)鍵字前面放置sealed關(guān)鍵字在子類中重寫基類中的虛方法時可以使用base關(guān)鍵字調(diào)用基類中的虛方法//使用base關(guān)鍵可以在子類中訪問基類同名的方法//父類的引用指向子類的實例Testts=newTest2();父類的引用指向子類的實例(調(diào)用的是子類的方法)父類的引用只結(jié)識父類的方法不結(jié)識子類的新方法可以用來調(diào)用被子類覆蓋的父類的方法父類的引用仍然到父類方法位置去調(diào)用假如基類方法被聲明為virtual并且在子類中被override結(jié)果訪問到的是被子類override的方法

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

委托可以把一個方法作為參數(shù)代入另一個方法。委托可以理解為指向一個函數(shù)的引用。是,是一種特殊的委托

C#中的堆和棧棧(Stack)由系統(tǒng)管理生存期,存儲代碼執(zhí)行和調(diào)用途徑,執(zhí)行或調(diào)用完畢即從棧中清除;?堆(Heap)中保存值和對象,調(diào)用完畢之后仍然存在,由垃圾回收器查找棧中有無指向該值或?qū)ο蟮囊?,無則從堆中刪除

你對泛型了解嗎?簡樸說明一下泛型的有什么好處?泛型:通過參數(shù)化類型來實現(xiàn)在同一份代碼上操作多種數(shù)據(jù)類型。運用“參數(shù)化類型”將類型抽象化,從而實現(xiàn)靈活的復(fù)用

好處是——類型安全和減少裝箱、拆箱。提高性能、類型安全和質(zhì)量,減少反復(fù)性的編程任務(wù)C#中所有對象共同的基類是什么??System.Object.如何在C#中實現(xiàn)繼承??在類名后加上一個冒號,再加上基類的名稱。C#支持多重繼承嗎??不支持??梢杂媒涌趤韺崿F(xiàn)。被protected修飾的屬性/方法在何處可以訪問??在繼承或間接繼承與這個類的子類中可以訪問。私有成員會被繼承么?

會,但是不能被訪問。所以看上去他們似乎是不能被繼承的,但事實上的確被繼承了。C#提供一個默認的無參構(gòu)造函數(shù),當(dāng)我實現(xiàn)了此外一個有一個參數(shù)的構(gòu)造函數(shù)時,還想保存這個無參數(shù)的構(gòu)造函數(shù)。這樣我應(yīng)當(dāng)寫幾個構(gòu)造函數(shù)??答:兩個,一旦你實現(xiàn)了一個構(gòu)造函數(shù),C#就不會再提供默認的構(gòu)造函數(shù)了,所以需要手動實現(xiàn)那個無參構(gòu)造函數(shù)。

簡述private、protected、public、internal修飾符的訪問權(quán)限。?private:私有成員,在類的內(nèi)部才可以訪問。

protected:保護成員,該類內(nèi)部和繼承類中可以訪問。?public:公共成員,完全公開,沒有訪問限制。?internal:在同一命名空間內(nèi)可以訪問。new的兩種用法?答:實例話對象,隱藏基類方法。.new有幾種用法

第一種:newClass();第二種:覆蓋方法publicnewXXXX(){}第三種:new約束指定泛型類聲明中的任何類型參數(shù)都必須有公共的無參數(shù)構(gòu)造函數(shù)。3.datagrid.datasouse可以連接什么數(shù)據(jù)源[dataset,datatable,dataview]dataset,dat(yī)atable,dataview,IList類成員有()種可訪問形式可訪問性:public,protected,private,internal委托與事件的用法

答:publicdelegat(yī)evoidhandels();//返回值是void,沒有參數(shù)

publiceventhandelseventHandels;

his.eventHandels=newhandels(fun);?publicvoidfun()?

{}

傳入某個屬性的SET方法的隱含參數(shù)的名稱是什么??答:value,它的類型和屬性所聲明的類型相同。string是值類型還是引用類型?引用類型String類與StringBuilder類有什么區(qū)別?為什么在.Net類庫中要同時存在這2個類?(簡答)stringBuilder比string更節(jié)約內(nèi)存,所以stringBuilder更快String對象是不可改變的。每次使用System.String類中的方法之一或進行運算時(如賦值、拼接等)時,都要在內(nèi)存中創(chuàng)建一個新的字符串對象,這就需要為該新對象分派新的空間。而StringBuilder則不會。在需要對字符串執(zhí)行反復(fù)修改的情況下,與創(chuàng)建新的String對象相關(guān)的系統(tǒng)開銷也許會非常昂貴。假如要修改字符串而不創(chuàng)建新的對象,則可以使用System.Text.StringBuilder類。例如,當(dāng)在一個循環(huán)中將許多字符串連接在一起時,使用StringBuilder類可以提高性能。

在C#中,stringstr=null與stringstr=“”請盡量使用文字或圖象說明其中的區(qū)別。?答:stringstr=null是不給他分派內(nèi)存空間,而stringstr=""給它分派長度為空字符串的內(nèi)存空間。

ASP.net的身份驗證方式有哪些?分別是什么原理?

答:Windwos(默認)

用IIS...From(窗體)

用帳戶....Passport(密鑰)

Session有什么重大BUG,微軟提出了什么方法加以解決?

答:是iis中由于有進程回收機制,系統(tǒng)繁忙的話Session會丟失,可以用Sat(yī)eserver或SQLServer數(shù)據(jù)庫的方式存儲Session但是這種方式比較慢,并且無法捕獲Session的END事件c#中的三元運算符是?:.能用foreach遍歷訪問的對象需要實現(xiàn)()接口或聲明(GetEnumerat(yī)or)方法的類型。.<%#%>和<%%>有什么區(qū)別?<%#%>表達綁定的數(shù)據(jù)源<%%>是服務(wù)器端代碼塊常量在.net(C#or)中如何獲得當(dāng)前窗體或控件的句柄,特別是控件自身的句柄(請列舉)this(C#)Me(vb.net)..C#可否對內(nèi)存進行直接的操作?在.net下,.net引用了垃圾回收(GC)功能,它替代了程序員但是在C#中,不能直接實現(xiàn)Finalize方法,而是在析構(gòu)函數(shù)中調(diào)用基類的Finalize()方法Dat(yī)eTime是否可認為null?不能,由于其為Struct類型,而結(jié)構(gòu)屬于值類型,值類型不能為null,只有引用類型才干被賦值nullDat(yī)eTime.Parse(myString);這行代碼有什么問題?有問題,當(dāng)myString不能滿足時間格式規(guī)定的時候,會引發(fā)異常,建議使用DateTime.TryParse()net的錯誤解決機制是:采用try->catch->finally結(jié)構(gòu),為什么不提倡catch(Exception)?try..catch在出現(xiàn)異常的時候影響性能;應(yīng)當(dāng)捕獲更具體得異常,比如IOExeception,OutOfMemoryException等cat(yī)ch(Exceptione){throwe;}和cat(yī)ch(Exceptione){throw;}的區(qū)別將發(fā)生的異常對象拋出,另一個只是拋出異常,并沒有拋出原異常對象)error和exception區(qū)別:error表達恢復(fù)不是不也許但很困難的情況下的一種嚴重問題。比如說內(nèi)存溢出。不也許指望程序能解決這樣的情況。exception表達一種設(shè)計或?qū)崿F(xiàn)問題。也就是說,它表達假如程序運營正常,從不會發(fā)生的情況。

GET與POST的區(qū)別

在FORM提交的時候,假如不指定Method,則默認為GET請求,F(xiàn)orm中提交的數(shù)據(jù)將會附加在url之后,以?分開與url分開。字母數(shù)字字符原樣發(fā)送,但空格轉(zhuǎn)換為“+“號,其它符號轉(zhuǎn)換為%XX,其中XX為該符號以16進制表達的ASCII(或ISOLat(yī)in-1)值。GET請求請?zhí)峤坏臄?shù)據(jù)放置在HTTP請求協(xié)議頭中,而POST提交的數(shù)據(jù)則放在實體數(shù)據(jù)中;在使用POST方法的情況下,傳輸數(shù)據(jù)時不會將數(shù)據(jù)作為URL的一部分;它們會作為一個獨立的實體來傳輸。因此,POST方法更安全,你也可以用這個方法傳輸更多的數(shù)據(jù)。并且用POST傳輸?shù)臄?shù)據(jù)不一定要是文本,用GET方法傳輸?shù)膮s一定要是文本。(1)get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器傳送數(shù)據(jù)。(1)在客戶端,Get方式在通過URL提交數(shù)據(jù),數(shù)據(jù)在URL中可以看到;POST方式,數(shù)據(jù)放置在HTMLHEADER內(nèi)提交。(2)對于get方式,服務(wù)器端用Request.QueryString獲取變量的值,對于post方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。(2)GET方式提交的數(shù)據(jù)最多只能有1024字節(jié),而POST則沒有此限制。(3)安全性問題。正如在(1)中提到,使用Get的時候,參數(shù)會顯示在地址欄上,而Post不會。所以,假如這些數(shù)據(jù)是中文數(shù)據(jù)并且是非敏感數(shù)據(jù),那么使用get;假如用戶輸入的數(shù)據(jù)不是中文字符并且包含敏感數(shù)據(jù),那么還是使用post為好。Bind和Eval函數(shù)的區(qū)別

綁定表達式?

<%#Eval("字段名")%>

<%#Bind("字段名")%>

1

Eval單向綁定:數(shù)據(jù)是只讀的?

Bind雙向綁定:數(shù)據(jù)可以更改,并返回服務(wù)器端,服務(wù)器可以解決更改后的數(shù)據(jù),如存入數(shù)據(jù)庫.

2.當(dāng)對次表達式操作時候,必須用Eval如<%#Eval("字段名").ToString().Trim()%>

3綁定控件的屬性時要用Bind,而Eval則是其它一些。

例如:<asp:TextBoxID="First"RunAt="Server"Text='<%#Bind("FirstName")%>'/>?

例如:<td><%#Eval("ProductID")%></td>Response.Redirect和Server.Transfer?請求的過程:

1)瀏覽器aspx文獻請求>服務(wù)器執(zhí)行--->碰到Response.Redirect語句->服務(wù)器發(fā)送Response.Redirect后面的地址給客戶機端的瀏覽器>瀏覽器請求執(zhí)行新的地址

2)瀏覽器aspx文獻請求->服務(wù)器執(zhí)行->碰到Server.Transfer語句->服務(wù)器轉(zhuǎn)向新的文獻?可以見Server.Transfer比Response.Redirect少了一次服務(wù)器發(fā)送回來和客戶端再請求的過程.?跳轉(zhuǎn)對象:

1)Response.Redirect可以切換到任何存在的網(wǎng)頁。

2)Server.Transfer只能切換到同目錄或者子目錄的網(wǎng)頁.

數(shù)據(jù)保密:

1、Response.Redirect后地址會變成跳轉(zhuǎn)后的頁面地址。

2、Server.Transfer后地址不變,隱藏了新網(wǎng)頁的地址及附帶在地址后邊的參數(shù)值。具有數(shù)據(jù)保密功能。?傳遞的數(shù)據(jù)量(網(wǎng)址后附帶的參數(shù)):

1、Response.Redirect可以傳遞的數(shù)據(jù)以2KB(也就是地址欄中地址的最大的長度)為限。?2、傳遞的數(shù)據(jù)超過2KB時,務(wù)必使用Server.Transfer。

Server.UrlEncode、HttpUtility.UrlDecode的區(qū)別

Server.UrlEncode的編碼方式是按照本地程序設(shè)立的編碼方式進行編碼的,而HttpUtility.UrlEncode是默認的按照.net的utf-8格式進行編碼的。

Static和非Static的區(qū)別:?一、用Stat(yī)ic聲明的方法和變量,不需要實例化該類就調(diào)用;二、Static的,就一定要用實例化的對象來調(diào)用,即用new來實例化。舉例說:假如有一個類People,有一個Static的方法MiaoShu(),調(diào)用方法就是People.MisoShu()有一個非Static的方法getName(),調(diào)用方法就是Peoplep=newPeople();p.getName();如何實現(xiàn)連接池保證你每一次的連接使用相同的連接字符串(和連接池相同);只有連接字符串相同時連接池才會工作。假如連接字符串不相同,應(yīng)用程序就不會使用連接池而是創(chuàng)建一個新的連接。優(yōu)點使用連接池的最重要的優(yōu)點是性能。創(chuàng)建一個新的數(shù)據(jù)庫連接所花費的時間重要取決于網(wǎng)絡(luò)的速度以及應(yīng)用程序和數(shù)據(jù)庫服務(wù)器的(網(wǎng)絡(luò))距離,并且這個過程通常是一個很耗時的過程。而采用數(shù)據(jù)庫連接池后,數(shù)據(jù)庫連接請求可以直接通過連接池滿足而不需要為該請求重新連接、認證到數(shù)據(jù)庫服務(wù)器,這樣就節(jié)省了時間。缺陷數(shù)據(jù)庫連接池中也許存在著多個沒有被使用的連接一直連接著數(shù)據(jù)庫(這意味著資源的浪費)。技巧和提醒1.當(dāng)你需要數(shù)據(jù)庫連接時才去創(chuàng)建連接池,而不是提前建立。一旦你使用完連接立即關(guān)閉它,不要等到垃圾收集器來解決它。2.在關(guān)閉數(shù)據(jù)庫連接前保證關(guān)閉了所有用戶定義的事務(wù)。3.不要關(guān)閉數(shù)據(jù)庫中所有的連接,至少保證連接池中有一個連接可用。假如內(nèi)存和其他資源是你必須一方面考慮的問題,可以關(guān)閉所有的連接,然后在下一個請求到來時創(chuàng)建連接池。連接池FAQ1.何時創(chuàng)建連接池?當(dāng)?shù)谝粋€連接請求到來時創(chuàng)建連接池;連接池的建立由數(shù)據(jù)庫連接的連接字符創(chuàng)來決定。每一個連接池都與一個不同的連接字符串相關(guān)。當(dāng)一個新的連接請求到來時假如連接字符串和連接池使用的字符串相同,就從連接池取出一個連接;假如不相同,就新建一個連接池。2.何時關(guān)閉連接池?當(dāng)連接池中的所有連接都已經(jīng)關(guān)閉時關(guān)閉連接池。3.當(dāng)連接池中的連接都已經(jīng)用完,而有新的連接請求到來時會發(fā)生什么?當(dāng)連接池已經(jīng)達成它的最大連接數(shù)目時,有新的連接請求到來時,新的連接請求將放置到連接隊列中。當(dāng)有連接釋放給連接池時,連接池將新釋放的連接分派給在隊列中排隊的連接請求。你可以調(diào)用close和dispose將連接歸還給連接池。4.我應(yīng)當(dāng)如何允許連接池?對于.NET應(yīng)用程序而言,默認為允許連接池。(這意味著你可以不必為這件事情做任何的事情)當(dāng)然,假如你可以在SQLConnection對象的連接字符串中加進Pooling=true;保證你的應(yīng)用程序允許連接池的使用。5.我應(yīng)當(dāng)如何嚴禁連接池?ADO.NET默認為允許數(shù)據(jù)庫連接池,假如你希望嚴禁連接池,可以使用如下的方式:1)使用SQLConnection對象時,往連接字符串加入如下內(nèi)容:Pooling=False;2)使用OLEDBConnection對象時,往連接字符串加入如下內(nèi)容:OLEDBServices=-4;

提高.NET的性能?1使用異步方式調(diào)用Web服務(wù)和遠程對象只要有也許就要避免在請求的解決過程中對Web服務(wù)和遠程對象的同步調(diào)用,由于它占用的是的ASP.NET線程池中的工作線程,這將直接影響Web服務(wù)器響應(yīng)其它請求的能力。2使用適當(dāng)?shù)腃aching策略來提高性能3判斷字符串,不要用""比較。//避免?if(strABC!=null&&strABC?。?")

{}//推薦

if(!strABC.IsNullOrEmpty)

{}4頁面優(yōu)化5用完立即關(guān)閉數(shù)據(jù)庫連接

6盡量使用存儲過程,并優(yōu)化查詢語句?7只讀數(shù)據(jù)訪問用SqlDataReader,不要使用DataSet……….

.UDP連接和TCP連接的異同?答:前者只管傳,不管數(shù)據(jù)到不到,無須建立連接.后者保證傳輸?shù)臄?shù)據(jù)準(zhǔn)確,須要連結(jié).請解釋轉(zhuǎn)發(fā)與跳轉(zhuǎn)的區(qū)別

轉(zhuǎn)發(fā)就是服務(wù)端的跳轉(zhuǎn)A頁面提交數(shù)據(jù)到B頁面,B頁面進行解決然后從服務(wù)端跳轉(zhuǎn)到其它頁面

跳轉(zhuǎn)就是指客戶端的跳轉(zhuǎn)簡述你對XMLWebService的原理的結(jié)識?

答:運用SOAP(簡樸對象訪問協(xié)議)在http上執(zhí)行遠程方法的調(diào)用,也可以使用WSDL(Web服務(wù)描述語言)來完畢完整的描述Web服務(wù),然后用UDDI注冊各個服務(wù)提供商提供的服務(wù),以便共享他們。什么叫應(yīng)用程序域?

答:應(yīng)用程序域可以理解為一種輕量級進程。起到安全的作用。占用資源小。CTS、CLS、CLR分別作何解釋?

答:CTS:通用語言系統(tǒng)。CLS:通用語言規(guī)范。CLR:公共語言運營庫。什么是受管制的代碼??答:unsafe:非托管代碼。不通過CLR運營。什么是強類型系統(tǒng)?

答:RTTI:類型辨認系統(tǒng)。什么是code-behind技術(shù)?codebehind是指代碼和用戶界面分開

aspxandcs在.net中,配件的意思是??答:程序集。(中間語言,源數(shù)據(jù),資源,裝配清單)常用的調(diào)用WebService的方法有哪些?

答:1.使用WSDL.exe命令行工具。?

2.使用VS.NET中的AddWebReference菜單選項netRemoting的工作原理是什么??答:服務(wù)器端向客戶端發(fā)送一個進程編號,一個程序域編號,以擬定對象的位置。O/RMapping的原理?答:運用反射,配置將對象和數(shù)據(jù)庫表映射remoting和webservice兩項技術(shù)的理解以及實際中的應(yīng)用。

答:WS重要是可運用HTTP,穿透防火墻。而Remoting可以運用TCP/IP,二進制傳送提高效率。out保存字怎么使用,什么時候使用?答:有時為了從一個函數(shù)中返回多個值,我們需要使用out關(guān)鍵字,把輸出值賦給通過引用傳遞給方法的變量(也就是參數(shù))。但C#規(guī)定變量再被引用的前必須初始化。在調(diào)用該方法時,還需要添加out關(guān)鍵字PDB是什么東西?在調(diào)試中它應(yīng)當(dāng)放在哪里?PDB是用于保存調(diào)試和項目狀態(tài)信息的文獻,在debug的時候?qū)a(chǎn)生pdb文獻,調(diào)試的時候應(yīng)當(dāng)放在和相應(yīng)應(yīng)用程序集相同目錄。

使用ASMX的XMLWeb服務(wù)與使用SOAP的.NETRemoting的區(qū)別?Web服務(wù)使用的消息機制,而Remoting采用的RPC.WebService能用于不同平臺,不同語言,Remoting只合用于.Net。效率上Remoting高于XmlWebService類型系統(tǒng)是由XMLSchema表達的嗎?CLS是XMLSchema表達的嗎?不清楚從概念上闡述前期綁定(early-binding)和后期綁定(late-binding)的區(qū)別?這個就像是強弱類型的比較相似,前期綁定是在編譯的時候就擬定了要綁定的數(shù)據(jù),而后期綁定是在運營的時候才填充數(shù)據(jù)。所以前期綁定假如失敗,會在編譯時報編譯錯誤,而后期綁定失敗只有在運營時的時候才發(fā)生調(diào)用Assembly.Load算靜態(tài)引用還是動態(tài)引用?動態(tài)

列舉一下你所了解的XML技術(shù)及其應(yīng)用?答:保存配置,站與站之間的交流,WEBSERVICE。以及與數(shù)據(jù)庫的數(shù)據(jù)交互等地方都要用它.?7.如何理解委托?

答:

相稱于函數(shù)指針,定義了委托就可以在不調(diào)用原方法名稱的情況下調(diào)用那個方法.?委托具有以下特點:

委托類似于C++函數(shù)指針,但它是類型安全的。?委托允許將方法作為參數(shù)進行傳遞。

委托可用于定義回調(diào)方法。

委托可以鏈接在一起;例如,可以對一個事件調(diào)用多個方法。?方法不需要與委托署名精確匹配。有關(guān)更多信息,請參見協(xié)變和逆變。

C#2.0版引入了匿名方法的概念,此類方法允許將代碼塊作為參數(shù)傳遞,以代替單獨定義的方法。

概述反射和序列化反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對象。您可以使用反射動態(tài)地創(chuàng)建類型的實例,將類型綁定到現(xiàn)有對象,或從現(xiàn)有對象中獲取類型。然后,可以調(diào)用類型的方法或訪問其字段和屬性序列化:序列化是將對象轉(zhuǎn)換為容易傳輸?shù)母袷降倪^程。例如,可以序列化一個對象,然后使用HTTP通過Internet在客戶端和服務(wù)器之間傳輸該對象。在另一端,反序列化將從該流重新構(gòu)造對象。11)

XmlSerializer是如何工作的?使用這個類的進程需要什么ACL權(quán)限?我只知道XmlSerializer是將對象的屬性和字段進行序列化和反序列化的,序列化成為xml數(shù)據(jù),反序列化再將xml轉(zhuǎn)換成對象。應(yīng)當(dāng)至少需要ACL權(quán)限中的讀權(quán)限.23)XmlSerializer使用的針對屬性的模式有什么好處?解決了什么問題?只序列化有用的數(shù)據(jù),而不是序列化整個對象。實現(xiàn)沒必要的數(shù)據(jù)冗余,和提高序列化時的性能。

26.根據(jù)委托(delegate)的知識,請完畢以下用戶控件中代碼片段的填寫:

namespacetest?{?publicdelegatevoidOnDBOperate();?publicclassUserControlBase:System.Windows.Forms.UserControl?{

publiceventOnDBOperateOnNew;

privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgse)?{?if(e.Button.Equals(BtnNew))?{?//請在以下補齊代碼用來調(diào)用OnDBOperat(yī)e委托署名的OnNew事件。

}

}?}?答:if(OnNew!=null)

?

OnNew(this,e);27.分析以下代碼,完畢填空

stringstrTmp="abcdefg某某某";

inti=System.Text.Encoding.Default.GetBytes(strTmp).Length;

intj=strTmp.Length;

以上代碼執(zhí)行完后,i=j=

答:i=13,j=1028.SQLSERVER服務(wù)器中,給定表table1中有兩個字段ID、LastUpdat(yī)eDate,ID表達更新的事務(wù)號,LastUpdateDate表達更新時的服務(wù)器時間,請使用一句SQL語句獲得最后更新的事務(wù)號?答:SelectIDFROMtable1WhereLastUpdateDat(yī)e=(SelectMAX(LastUpdat(yī)eDat(yī)e)FROMtable1)29.根據(jù)線程安全的相關(guān)知識,分析以下代碼,當(dāng)調(diào)用test方法時i>10時是否會引起死鎖?并簡要說明理由。

publicvoidtest(inti)

{

lock(this)?{

if(i>10)

{

i--;

test(i);

}?}

}

答:不會發(fā)生死鎖,(但有一點int是按值傳遞的,所以每次改變的都只是一個副本,因此不會出現(xiàn)死鎖。但假如把int換做一個object,那么死鎖會發(fā)生)3)什么叫圈復(fù)雜度(cyclomat(yī)iccomplexity)?為什么它很重要?不知道,望指教?4)寫一個標(biāo)準(zhǔn)的lock(),在訪問變量的前后創(chuàng)建臨界區(qū),要有"雙重檢查",lock的使用

publicvoidLockTest()?

{

ObjectlockObj=newObject();?

lock(lockObj)

{?

//?

}?

}5)什么叫FullTrust?放入GAC的assembly是否是FullTrust的?FullTrust完全信任。放入GAC中的Assembly是否FullTrust我的理解不是。我理解FullTrust是可以通過代碼設(shè)定的6)代碼加上需要安全權(quán)限的特性有什么好處?可以更加靈活的設(shè)立對代碼的訪問權(quán)限,實現(xiàn)代碼級保護。?這點不是特清楚,有明白的給講解下7)gacutil/l|find/i"Corillian"這句命令的作用是什么?全局程序集緩存中假如有Corillian就更新該程序集,沒有就安裝8)sn-tfoo.dll這句命令是干嘛的?顯示程序集foo.dll的公鑰標(biāo)記9)DCOM需要防火墻打開哪些端口?端口135是干嘛用的?135端口,由于DCOM的端標(biāo)語是隨機分派的,默認情況下,會分派1024以上的端標(biāo)語,所以默認情況下,DCOM不能穿越防火墻。由于主線不曉得開哪個端口。但有解決辦法可以使DCOM分派的端標(biāo)語固定,135是遠程過程調(diào)用(RPC)的默認端口10)對比OOP和SOA,它們的目的分別是什么?我想OOP和SOA應(yīng)當(dāng)沒有對比性吧。OOP是一種編程模型,強調(diào)將復(fù)雜的邏輯分解出小的模塊,特性是繼承,封裝和多態(tài)。而SOA是一個技術(shù)框架,技術(shù)框架和編程模型應(yīng)當(dāng)說不是一碼事吧?SOA的思想是將業(yè)務(wù)邏輯封裝成服務(wù)或者中間件提供應(yīng)應(yīng)用程序來調(diào)用,當(dāng)然其組件化思想是繼承和發(fā)揚了OOP的優(yōu)點。

13)Debug.Write和Trace.Write有什么不同?何時應(yīng)當(dāng)使用哪一個?Debug.Write是調(diào)試的時候向跟蹤窗口輸出信息。當(dāng)編譯模式為debug的時候才有效,為release的時候Debug.Write在編譯的時候會忽略,而Trace則是在debug和release兩種模式下均可以向跟蹤窗口輸出信息。14)DebugBuild和ReleaseBuild的區(qū)別,是否會有明顯的速度變化?請說明理由。Debug會產(chǎn)生pdb文獻,release不會。Debug用于開發(fā)時的調(diào)試,不能要于部署,而release用于部署.debug編譯一些特殊代碼,比如#IFDEBUGDebug.Write等,而Release則會將那些特殊標(biāo)記省略15)JIT是以assembly為單位發(fā)生還是以方法為單位發(fā)生?這對于工作區(qū)有何影響?方法,道理很簡樸,由于對于一次運營,很也許只用到一個程序集中很少數(shù)類型和對象,而大部分也許并不會被使用,此時CLR傻乎乎的給整個程序集都給Compile了,CLR不是傻瘋了么

17)a.Equals(b)和a==b同樣嗎?不同樣。a.Equals(b)表達a與b一致,a==b表達a與b的值相等18)在對象比較中,對象一致和對象相等分別是指什么?對象一致是指兩個對象是同一個對象,引用相同。而對象相等是指兩個對象的值相同,但引用不一定相同19)在.NET中如何實現(xiàn)深拷貝(deepcopy)?實現(xiàn)IClonable接口20)請解釋一下IClonableIClonable方法是實現(xiàn)深度復(fù)制的接口,實現(xiàn)它應(yīng)當(dāng)能深度復(fù)制一個對象出來。深度復(fù)制的特性的調(diào)用對象的構(gòu)造方法,創(chuàng)建新的對象,涉及創(chuàng)建對象中嵌套的引用對象的新實例。而Shadow復(fù)制則不同,是淺表復(fù)制,不重新創(chuàng)建新實例。淺表復(fù)制的實現(xiàn)是Object.MemberWiseClone().深度復(fù)制(DeepCopy)與淺表復(fù)制(ShadowCopy)的比較

publicclassName

publicstringFirstName;?

publicstringLastName;?

}?

publicclassPerson:ICloneable?

{

publicNamePersonName;?

publicstringEmail;

/**////<summary>?

///DeepCopy的例子?

///</summary>

///<returns></returns>?

publicObjectClone()

{

Personp=newPerson();

p.Email=this.Email;

p.PersonName=newName();

p.PersonName.FirstName=this.PersonName.FirstName;?

p.PersonName.LastName=this.PersonName.LastName;

returnp;

publicvoidChangLastName(stringlastName)

{

this.PersonName.LastName=lastName;

}?

publicstaticvoidMain()

{?

Personp=newPerson();?

p.PersonName=newName();

p.PersonName.LastName="jill";?

p.PersonName.FirstName="zhang";?

p.Email="";

PersonsameNamePerson=p.Clone()asPerson;

sameNamePerson.ChangLastName("clr_");?

Console.WriteLine(p.PersonName.LastName);?

Console.WriteLine(sameNamePerson.PersonName.LastName);

PersonsamePerson=p.MemberwiseClone()asPerson;

samePerson.ChangLastName("Shadow");

Console.WriteLine(p.PersonName.LastName);?

Console.WriteLine(sameNamePerson.PersonName.LastName);?

Console.Read();

}

}

24)為什么不應(yīng)當(dāng)在.NET中使用out參數(shù)?它究竟好不好?我挺喜歡用out參數(shù)的,特別是當(dāng)函數(shù)需要有多于1個返回的時候,我比較樂意用out,至于它好不好沒研究過?25)特性可以放到某個方法的參數(shù)上?假如可以,這有什么用?可以,作用可以對參數(shù)有進一步限定,比如輸入?yún)?shù)為int類型,可以通過允許AttributeTargets=ParameterInfo的Attribute自定義實現(xiàn)來限定輸入?yún)?shù)的大小,比如當(dāng)輸入?yún)?shù)小于100的時候便抱錯。對方法的參數(shù)設(shè)立Attribute的例子?

[AttributeUsage(AttributeTargets.Parameter)]?

publicclassParameterAtt:Attribute?

{?

publicintMin=100;?

}

publicclassAttributeTest

publicvoidTestMethod([ParameterAtt(Min=100)]intpar1)?

{

ParameterInfopara=MethodInfo.GetCurrentMethod().GetParameters()[0];?

ParameterAttatt=ParameterAtt.GetCustomAttribute(para,typeof(ParameterAtt))asParameterAtt;

if(att.Min>par1)?

{

thrownewException("規(guī)定para1最小為"+att.Min);

}?

}?

}

9.執(zhí)行下面代碼后:StringstrTemp="abcdefg某某某";IntiSystem.Text.Encoding.Default.GetBytes(strTemp).Length;Intj=strTemp.Length;問:i=(14);j=(11)i=(14);j=(11)中文兩個字節(jié)12.概述.NET里對remoting和webservice兩項技術(shù)的理解和實際中的應(yīng)用。遠程邏輯調(diào)用,remoing接口只能用在.net中

9.

如何給服務(wù)器端控件增長客戶端腳本。

答:控件的Attributes6.私有程序集與共享程序集有什么區(qū)別??一個私有程序集通常為單個應(yīng)用程序所使用,并且存儲于這個應(yīng)用程序所在的目錄之中,或此目錄下面的一個子目錄中。共享程序集通常存儲在全局程序集緩存(GlobalAssemblyCache)之中,這是一個由.NET運營時所維護的程序集倉庫。共享程序集通常是對許多應(yīng)用程序都有用的代碼庫,比如.NETFramework類。10.請解釋ASP.NET中以什么方式進行數(shù)據(jù)驗證

Aps.net中有非空驗證,比較驗證,取值范圍驗證,正則表達式驗證及客戶自定義驗證五大控件,另尚有一個集中驗證信息解決控件11.WEB控件可以激發(fā)服務(wù)端事件,請談?wù)劮?wù)端事件是怎么發(fā)生并解釋其原理?自動傳回是什么?為什么要使用自動傳回。?在web控件發(fā)生事件時,客戶端采用提交的形式將數(shù)據(jù)交回服務(wù)端,服務(wù)端先調(diào)用Page_Load事件,然后根據(jù)傳回的狀態(tài)信息自動調(diào)用服務(wù)端事件自動傳回是當(dāng)我們在點擊客戶端控件時,采用提交表單的形式將數(shù)據(jù)直接傳回到務(wù)端?只有通過自動傳回才干實現(xiàn)服務(wù)端事件的機制,假如沒有自動回傳機制就只能調(diào)用客戶端事件,而不能調(diào)用服務(wù)端事件13.

請解釋web.config文獻中的重要節(jié)點?appSettings包含自定義應(yīng)用程序設(shè)立。?system.web系統(tǒng)配置

compilation動態(tài)調(diào)試編譯設(shè)立

customErrors自定義錯誤信息設(shè)立?authenticat(yī)ion身份驗證,此節(jié)設(shè)立應(yīng)用程序的身份驗證策略。?authorization授權(quán),此節(jié)設(shè)立應(yīng)用程序的授權(quán)策略.14.

請解釋ASP。NET中的web頁面與其隱藏類之間的關(guān)系??一個ASP.NET頁面一般都相應(yīng)一個隱藏類,一般都在ASP.NET頁面的聲明中指定了隱藏類例如一個頁面Tst1.aspx的頁面聲明如下?<%@Pagelanguage="c#"Codebehind="Tst1.aspx.cs"AutoEventWireup="false"Inherits="T1.Tst1"%>?Codebehind="Tst1.aspx.cs"表白經(jīng)編譯此頁面時使用哪一個代碼文獻?Inherits="T1.Tst1"表用運營時使用哪一個隱藏類15.

什么是viewstate,能否禁用?是否所用控件都可以禁用?

Viewstate是保存狀態(tài)的一種機制,EnableViewState屬性設(shè)立為false即可禁用16.

當(dāng)發(fā)現(xiàn)不能讀取頁面上的輸入的數(shù)據(jù)時很有也許是什么因素導(dǎo)致的?怎么解決?

很有也許是在Page_Load中數(shù)據(jù)解決時沒有進行Page的IsPostBack屬性判斷17.

請解釋什么是上下文對象,在什么情況下要使用上下文對象?上下文對象是指HttpContext類的Current屬性,當(dāng)我們在一個普通類中要訪問內(nèi)置對象(Response,Request,Session,Server,Appliction等)時就要以使用此對象16、解釋一下ajax及實現(xiàn)原理

答:Ajax的核心是JavaScript對象XmlHttpRequest,它使您可以使用JavaScript向服務(wù)器提出請求并解決響應(yīng),而不阻塞用戶,異步請求。

1、delegat(yī)e是引用類型還是值類型?enum、int[]和string呢(難度系數(shù)40%)?答案:delegate引用類型,enum值類型,int[]引用類型,string引用類型。3、base這個關(guān)鍵字有哪幾種語法?override呢?答案:base兩個語法,分別是調(diào)用基類構(gòu)造函數(shù)和調(diào)用基類方法,override用于重寫基類方法。4、請指出C#中是否有下列關(guān)鍵字?virtual、sealed、abstract、import、as、in、goto、final、Const、signed、String(提醒,僅指出C#中沒有的即可)(難度系數(shù)50%)。答案:沒有的關(guān)鍵字:import、final、Const、signed、String5、在循環(huán):for(inti=0;i<100;i++)Console.WriteLine(i);中,請指出i++的執(zhí)行時機。答案:在Console.WriterLine(i);執(zhí)行之后6、試說明continue關(guān)鍵字的用處。答案:立即開始下一次循環(huán),忽略循環(huán)體余下的語句7、object是C#的關(guān)鍵字嗎?請指出C#中有哪些類型關(guān)鍵字,如int、float。(提醒,寫得越多越好)。答案:是,object、int、uint、long、ulong、short、ushort、byte、sbyte、char、float、double、decimal、bool,如回答:enum、struct、class、delegate也算對。8、C#的XML文檔注釋中(以///開頭的注釋),<summary>標(biāo)簽用于描述什么?<param>標(biāo)簽?zāi)?答案:<summary>用于某個元素的概要說明,<param>用于某個方法的參數(shù)概要說明。9、我們知道[]是數(shù)組和索引器的訪問操作符,但它尚有一個語法,是什么?答案:特性(Attribute)18.請敘述屬性與索引器的區(qū)別。?屬性索引器

?

通過名稱標(biāo)記。通過署名標(biāo)記。

?

通過簡樸名稱或成員訪問來訪問。通過元素訪問來訪問。

?

可認為靜態(tài)成員或?qū)嵗蓡T。必須為實例成員。

?

屬性的

get

訪問器沒有參數(shù)。索引器的

get

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

?

屬性的

set

訪問器包含隱式

value

參數(shù)。除了

value

參數(shù)外,索引器的

set

訪問器還具有與索引器相同的形參表。1)描述線程與進程的區(qū)別?線程(Thread)與進程(Process)兩者都定義了某種邊界,不同的是進程定義的是應(yīng)用程序與應(yīng)用程序之間的邊界,不同的進程之間不能共享代碼和數(shù)據(jù)空間,而線程定義的是代碼執(zhí)行堆棧和執(zhí)行上下文的邊界。一個進程可以涉及若干個線程,同時創(chuàng)建多個線程來完畢某項任務(wù),便是多線程。而同一進程中的不同線程共享代碼和數(shù)據(jù)空間。用一個比方來說,假如一個家庭代表一個進程,在家庭內(nèi)部,各個成員就是線程,家庭中的每個成員都有義務(wù)對家庭的財富進行積累,同時也有權(quán)利對家庭財富進行消費,當(dāng)面對一個任務(wù)的時候,家庭也可以派出幾個成員來協(xié)同完畢,而家庭之外的人則沒有辦法直接消費不屬于自己家庭的財產(chǎn)。2)什么是Windows服務(wù),它的生命周期與標(biāo)準(zhǔn)的EXE程序有什么不同Windows服務(wù)是運營在windows后臺指定用戶下(默認System)的應(yīng)用程序,它沒有標(biāo)準(zhǔn)的UI界面,想比標(biāo)準(zhǔn)的EXE程序,Windows服務(wù)是在服務(wù)開始的時候創(chuàng)建,而在服務(wù)結(jié)束的時候銷毀,并且可以設(shè)立服務(wù)是否與操作系統(tǒng)一起啟動,一起關(guān)閉。它支持三種方式:1)自動方式2)手動方式3)禁用。自動方式的時候,windows服務(wù)將在OS啟動后自動啟動運營,而手動方式則必須手工啟動服務(wù),禁用的情況下服務(wù)將不能被啟動。此外標(biāo)準(zhǔn)的EXE默認使用的當(dāng)前登錄的用戶,而windows服務(wù)則默認使用System用戶,這在對系統(tǒng)資源訪問的時候特別需要注意。3)

Windows單個進程所能訪問的最大內(nèi)存量是多少?它與系統(tǒng)的最大虛擬內(nèi)存同樣嗎?這對于系統(tǒng)設(shè)計有什么影響?這個需要針對硬件平臺,公式為單個進程能訪問的最大內(nèi)存量=2的解決器位數(shù)次方/2,比如通常情況下,32位解決器下,單個進程所能訪問的最大內(nèi)存量為:232/2=2G。單個進程能訪問的最大內(nèi)存量是最大虛擬內(nèi)存的1/2,由于要分派給操作系統(tǒng)一半虛擬內(nèi)存。4)

什么是強類型,什么是弱類型?哪種更好些?為什么?強類型是在編譯的時候就擬定類型的數(shù)據(jù),在執(zhí)行時類型不能更改,而弱類型在執(zhí)行的時候才會擬定類型。沒有好不好,兩者各有好處,強類型安全,由于它事先已經(jīng)擬定好了,并且效率高。一般用于編譯型編程語言,如c++,java,c#,pascal等,弱類型相比而言不安全,在運營的時候容易出現(xiàn)錯誤,但它靈活,多用于解釋型編程語言,如javascript,vb等5)

PID是什么?在做系統(tǒng)的故障排除時如何使用它?PID是進程編號,在系統(tǒng)發(fā)現(xiàn)故障的時候,可以根據(jù)它尋找故障所發(fā)生的具體進程,并且可通過visualstudio.net等ide將故障進程附加到進程中進行調(diào)試(debug)6)

單個TCP/IP端口上可以被多少個進程偵聽?1個7)

什么是GAC?它解決了什么問題?GloalAssemblyCache,全局應(yīng)用程序集緩存。它解決了幾個程序共享某一個程序集的問題。不必再將那個被共享的程序集拷貝到應(yīng)用程序目錄了,其實這道理很簡樸,.net應(yīng)用程序在加載的時候,會一方面查看全局應(yīng)用程序集緩存,假如有就可以直接使用,沒有再到應(yīng)用程序目錄進行查找。1.白盒測試和黑盒測試

答:黑盒測試:已知產(chǎn)品的功能設(shè)計規(guī)格,可以進行測試證明每個實現(xiàn)了的功能是否符合規(guī)定。白盒測試:已知產(chǎn)品的內(nèi)部工作過程,可以通過測試證明每種內(nèi)部操作是否符合設(shè)計規(guī)格規(guī)定,所有內(nèi)部成分是否以通過檢查。軟件的黑盒測試意味著測試要在軟件的接口處進行。這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只依據(jù)程序的需求規(guī)格說明書,檢查程序的功能是否符合它的功能說明。因此黑盒測試又叫功能測試或數(shù)據(jù)驅(qū)動測試。黑盒測試重要是為了發(fā)現(xiàn)以下幾類錯誤:1、是否有不對的或漏掉的功能?2、在接口上,輸入是否能對的的接受?能否輸出對的的結(jié)果?3、是否有數(shù)據(jù)結(jié)構(gòu)錯誤或外部信息(例如數(shù)據(jù)文獻)訪問錯誤?4、性能上是否可以滿足規(guī)定?5、是否有初始化或終止性錯誤?軟件的白盒測試是對軟件的過程性細節(jié)做細致的檢查。這種方法是把測試對象看做一個打開的盒子,它允許測試人員運用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計或選擇測試用例,對程序所有邏輯途徑進行測試。通過在不同點檢查程序狀態(tài),擬定實際狀態(tài)是否與預(yù)期的狀態(tài)一致。因此白盒測試又稱為結(jié)構(gòu)測試或邏輯驅(qū)動測試。白盒測試重要是想對程序模塊進行如下檢查:1、對程序模塊的所有獨立的執(zhí)行途徑至少測試一遍。2、對所有的邏輯鑒定,取“真”與取“假”的兩種情況都能至少測一遍。3、在循環(huán)的邊界和運營的界線內(nèi)執(zhí)行循環(huán)體。4、測試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性,等等。請簡述一下用Socket進行同步通訊編程的具體環(huán)節(jié)?1、在應(yīng)用程序和遠程設(shè)備中使用協(xié)議和網(wǎng)絡(luò)地址初始化套接字

2、在應(yīng)用程序中通過指定端口和地址建立監(jiān)聽?3、遠程設(shè)備發(fā)出連接請求

4、應(yīng)用程序接受連接產(chǎn)生通信scoket?5、應(yīng)用程序和遠程設(shè)備開始通訊(在通訊中應(yīng)用程序?qū)炱鹬钡酵ㄓ嵔Y(jié)束)

6、通訊結(jié)束,關(guān)閉應(yīng)用程序和遠程設(shè)備的Socket回收資源OSI網(wǎng)絡(luò)結(jié)構(gòu)的七層模型及其核心思想是什么

第七層:應(yīng)用層

?

定義了用于在網(wǎng)絡(luò)中進行通信和數(shù)據(jù)傳輸?shù)慕涌?用戶程式;

?

提供標(biāo)準(zhǔn)服務(wù),比如虛擬終端、文獻以及任務(wù)的傳輸和解決;

第六層:表達層

掩蓋不同系統(tǒng)間的數(shù)據(jù)格式的不同性;

指定獨立結(jié)構(gòu)的數(shù)據(jù)傳輸格式;

數(shù)據(jù)的編碼和解碼;加密和解密;壓縮和解壓縮

第五層:會話層

管理用戶會話和對話;

控制用戶間邏輯連接的建立和掛斷;

報告上一層發(fā)生的錯誤?第四層:傳輸層?

管理網(wǎng)絡(luò)中端到端的信息傳送;

通過錯誤糾正和流控制機制提供可靠且有序的數(shù)據(jù)包傳送;?

提供面向無連接的數(shù)據(jù)包的傳送;

第三層:網(wǎng)絡(luò)層

定義網(wǎng)絡(luò)設(shè)備間如何傳輸數(shù)據(jù);

根據(jù)唯一的網(wǎng)絡(luò)設(shè)備地址路由數(shù)據(jù)包;?

提供流和擁塞控制以防止網(wǎng)絡(luò)資源的損耗?第二層:數(shù)據(jù)鏈路層

?

定義操作通信連接的程序;

封裝數(shù)據(jù)包為數(shù)據(jù)幀;

監(jiān)測和糾正數(shù)據(jù)包傳輸錯誤?第一層:物理層

定義通過網(wǎng)絡(luò)設(shè)備發(fā)送數(shù)據(jù)的物理方式;

作為網(wǎng)絡(luò)媒介和設(shè)備間的接口;?

定義光學(xué)、電氣以及機械特性。2幾十上百萬行,如何快速查詢出表數(shù)據(jù)?答:用分頁存儲過程

/*?

函數(shù)名稱:GetRecordFromPage

函數(shù)功能:獲取指定頁的數(shù)據(jù)?

參數(shù)說明:@tblName

包含數(shù)據(jù)的表名

@fldName

關(guān)鍵字段名?

@PageSize

每頁記錄數(shù)

@PageIndex

要獲取的頁碼

@OrderType

排序類型,0-升序,1-降序?

@strWhere

查詢條件(注意:不要加where)?*/

CREATEPROCEDUREGetRecordFromPage?

@tblName

varchar(255),

--表名

@fldName

varchar(255),

--字段名?

@PageSize

int=10,

--頁尺寸

@PageIndex

int=1,

--頁碼

@OrderType

bit=0,

--設(shè)立排序類型,非0值則降序

@strWhere

varchar(2023)=''

--查詢條件(注意:不要加where)

ASdeclare@strSQL

varchar(6000)

--主語句?declare@strTmp

varchar(1000)

--臨時變量

declare@strOrdervarchar(500)

--排序類型if@OrderType!=0

begin

set@strTmp='<(selectmin'

set@strOrder='orderby['+@fldName+']desc'

end

else?begin

set@strTmp='>(selectmax'

set@strOrder='orderby['+@fldName+']asc'

endset@strSQL='selecttop'+str(@PageSize)+'*from['?

+@tblName+']where['+@fldName+']'+@strTmp+'(['?

+@fldName+'])from(selecttop'+str((@PageIndex-1)*

溫馨提示

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

評論

0/150

提交評論