dnet面試整試地的題目及參考詳解_第1頁
dnet面試整試地的題目及參考詳解_第2頁
dnet面試整試地的題目及參考詳解_第3頁
dnet面試整試地的題目及參考詳解_第4頁
dnet面試整試地的題目及參考詳解_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實用標準文案一、ADO 與ADO.NET 兩種數(shù)據(jù)訪問方式區(qū)別 ?1.ADO 與ADO.NET 簡介ADO與ADO.NET既有相似也有區(qū)別,他們都能夠編寫對數(shù)據(jù)庫服務器中的數(shù)據(jù)進行訪問和操作的應用程序,并且易于使用、高速度、低內(nèi)存支出和占用磁盤 空間較少,支持用于建立基于客戶端 /服務器和 Web 的應用程序的主要功能。但是 ADO使用OLEDB接口并基于微軟的 COM技術,而ADO.NET擁有自己的 ADO.NET 接口并且基于微軟的 .NET體系架構。眾所周知 .NET體系不同于 COM 體系,ADO.NET 接口也就完全不同于 ADO和OLEDB接口,這也就是說ADO.NET和ADO是兩種數(shù)據(jù)訪問方式。數(shù)據(jù)訪問方式的歷史下面簡單的回顧一下微軟的數(shù)據(jù)訪問方式所走過的幾個階段。ODBC –(OpenDatabaseConnectivity )是第一個使用 SQL訪問不同關系數(shù)據(jù)庫的數(shù)據(jù)訪問技術。使用 ODBC 應用程序能夠通過單一的命令操縱不同的數(shù)據(jù)庫,而開發(fā)人員需要做的僅僅只是針對不同的應用加入相應的 ODBC驅(qū)動。DAO- (DataAccessObjects )不像ODBC那樣是面向 C/C++ 程序員的,它是微軟提供給VisualBasic 開發(fā)人員的一種簡單的數(shù)據(jù)訪問方法,用于操縱 Access數(shù)據(jù)庫。RDO–在使用DAO訪問不同的關系型數(shù)據(jù)庫的時候, Jet引擎不得不在 DAO和ODBC之間進行命令的轉(zhuǎn)化,導致了性能的下降,而 RDO(RemoteDataObjects )的出現(xiàn)就順精彩文檔實用標準文案理成章了。OLEDB–隨著越來越多的數(shù)據(jù)以非關系型格式存儲, 需要一種新的架構來提供這種應用和數(shù)據(jù)源之間的無縫連接,基于 COM(ComponentObjectModel )的OLEDB應運而生了。ADO –基于OLEDB之上的ADO更簡單、更高級、更適合 VisualBasic 程序員,同時消除了OLEDB的多種弊端,取而代之是微軟技術發(fā)展的趨勢。3.ADO 與ADO.NET 對照在開始設計.NET體系架構時,微軟就決定重新設計數(shù)據(jù)訪問模型,以便能夠完全的基于XML和離線計算模型。兩者的區(qū)別主要有:ADO以Recordset 存儲,而 ADO.NET 則以DataSet 表示。Recordset 看起來更像單表,如果讓Recordset 以多表的方式 表示就必須在 SQL中進行多表連接。反之,DataSet可以是多個表的集合。 ADO 的運作是一種在線方式,這意味著不論是瀏覽或更新數(shù)據(jù)都必須是實時的。ADO.NET 則使用離線方式,在訪問數(shù)據(jù)的時候 ADO.NET 會利用 XML制作數(shù)據(jù)的一份幅本, ADO.NET 的數(shù)據(jù)庫連接也只有在這段時間需要在線。由于ADO 使用 COM 技術,這就要求所使用的數(shù)據(jù)類型必須符合 COM 規(guī)范,而ADO.NET 基于XML格式,數(shù)據(jù)類型更為豐富并且不需要再做 COM編排導致的數(shù)據(jù)類型精彩文檔實用標準文案轉(zhuǎn)換,從而提高了整體性能。小結ADO.NET為.NET構架提供了優(yōu)化的數(shù)據(jù)訪問模型, 和基于COM的ADO是完全兩樣的數(shù)據(jù)訪問方式。二、DataSet 與DataReader 的區(qū)別ADO.NET 提供以下兩個對象,用于檢索關系數(shù)據(jù)并將其存儲在內(nèi)存中: DataSet 和DataReader 。DataSet 提供一個內(nèi)存中數(shù)據(jù)的關系表示形式,一整 套包括一些表在內(nèi)的數(shù)據(jù)(這些表包含數(shù)據(jù)、對數(shù)據(jù)進行排序并約束數(shù)據(jù)) ,以及表之間的關系。 DataReader提供一個來自數(shù)據(jù)庫的快速、僅向前、只讀 數(shù)據(jù)流。當使用DataSet 時,經(jīng)常會利用 DataAdapter (也可能是 CommandBuilder )與數(shù)據(jù)源進行交互。當使用 DataSet 時,也可以利用 DataView 對DataSet 中的數(shù)據(jù)應用排序和篩選。也可以從 DataSet 繼承,創(chuàng)建強類型 DataSet,用于將 表、行和列作為強類型對象屬性公開。下列主題包括的信息涉及:使用 DataSet 或DataReader 的最佳時機、如何優(yōu)化訪問它們所包含數(shù)據(jù)、以及如何優(yōu)化使用 DataAdapter (包括CommandBuilder )和DataView 的技巧。DataSet 與DataReader精彩文檔實用標準文案當設計應用程序時,要考慮應用程序所需功能的等級,以確定使用 DataSet 或者是DataReader 。要通過應用程序執(zhí)行以下操作,就要使用 DataSet:在結果的多個離散表之間進行導航。r操作來自多個數(shù)據(jù)源(例如,來自多個數(shù)據(jù)庫、一個 XML文件和一個電子表格的混合數(shù)據(jù))的數(shù)據(jù)。r在各層之間交換數(shù)據(jù)或使用 XML Web服務。與 DataReader 不同的是,DataSet 能傳遞給遠程客戶端。r重用同樣的記錄集合,以便通過緩存獲得性能改善(例如排序、搜索或篩選數(shù)據(jù)) 。r每條記錄都需要執(zhí)行大量處理。 對使用DataReader 返回的每一行進行擴展處理會延長服務于DataReader 的連接的必要時間,這影響了性能。r使用XML操作對數(shù)據(jù)進行操作,例如可擴展樣式表語言轉(zhuǎn)換( XSLT轉(zhuǎn)換)或 XPath查詢。對于下列情況,要在應用程序中使用 DataReader :不需要緩存數(shù)據(jù)。要處理的結果集太大,內(nèi)存中放不下。一旦需要以僅向前、只讀方式快速訪問數(shù)據(jù)。注填充DataSet 時,DataAdapter 使用 DataReader 。因此,使用 DataAdapter 取代DataSet 提升的性能表現(xiàn)為節(jié)省了 DataSet 占用內(nèi)存和填充 DataSet 需要的循環(huán)。一般來說,此性能提升只是象征性的,因此,設計決策應以所需功能為基礎。精彩文檔實用標準文案三、基本概念、面向?qū)ο蟮恼Z言具有封裝性、繼承性、多態(tài)性。2、ADO.NET 中的五個主要對象 Connection 、Command 、DataSet、DataReader 、DataAdapter3、ASP.NET中的身份驗證有 Windows 、Forms、Passport,一般采用 Forms,比較簡單、適用面廣4、接口----接口定義了一組方法 (Method ,子程序或函數(shù)例程 [譯注:指VisualBasic.NET中的Sub和Function] )、屬性(Property )、事件(Event)和域(Field,變量或特性),這些都被聲明為公有。接口也 可以被另一個接口繼承。任何繼承了一個接口的類或結構都必須實現(xiàn)接口繼承鏈中所有接口所定義的成員。5、繼承 繼承是指一個類——稱為子類 [譯注:亦稱派生類 ],可以基于另一個類——稱為基類[譯注:亦稱父類、超類 ]。繼承提供了一種建立對象層次的機制。繼承使得你能夠在你自己的類中使用另外一個類的接口和代碼。base->訪問基類的成員。this-> 引用調(diào)用一個方法的當前對象。6、抽象類 抽象類是一種特殊的基類。除了通常的類成員,它們還帶有抽象類成員。抽象類成員是指沒有實現(xiàn)而只有聲明的方法和屬性。 所有直接從抽象類派生的類都必須實現(xiàn)所有這些抽象方法和屬性。精彩文檔實用標準文案抽象方法不能實例化。這樣做 [譯注:指實例化一個抽象類 ]是不合邏輯的,因為那些抽象成員沒有實現(xiàn)。那么,不能實例化一個類有什么好處呢?很多!抽象類穩(wěn)坐 類繼承樹的頂端。它們確定了類的結構和代碼的意圖。 用它們可以得到更易搭建的框架。 這是可能的,因為抽象類具有這個框架中所有基類的一般信息和行為。7、接口和抽象類之間的區(qū)別 接口和抽象類關系很緊密,它們都具有對成員的抽象。對于一個抽象類,至少一個方法是抽象方法既可,這意味著它也可以具有具體方法 [譯注:ConcreteMethod ,這只是相對于抽象方法而言,面向?qū)ο笾胁]有這個概念 ]。對于一個接口,所有的方法必須都是抽象的。實現(xiàn)了一個接口的類必須為接口中的所有方法提供具體的實現(xiàn),否則只能聲明為抽象類。在C#中,多重繼承(MultipleInheritance)只能通過實現(xiàn)多個接口得到。抽象類只能單繼承[譯注:C#中的單繼承是指所有類作為基類的時候都只能是派生類聲明中唯一的基類,而不僅僅是抽象類]。接口定義的是一個契約,其中只能包含四種實體,即方法、屬性、事件和索引器。因此接口不能包含常數(shù)( Constant )、域、操作符、構造器、析構器、靜態(tài)構造器或類型 [譯注:指嵌套的類型]。同時,一個接口還不能包含任何類型的靜態(tài)成員。修飾符 abstract 、public、protected 、internal 、private、virtual、override 都是不允許出現(xiàn)的,因為它們在這種環(huán)境中是沒有意義的。類中實現(xiàn)的接口成員必須具有公有的可訪問性?!#中的接口是獨立于類來定義的。這與 C++模型是對立的,在 C++中接口實際上就是精彩文檔實用標準文案抽象基類?!そ涌诤皖惗伎梢岳^承多個接口?!ざ惪梢岳^承一個基類, 接口根本不能繼承類。 這種模型避免了 C++的多繼承問題,C++中不同基類中的實現(xiàn)可能出現(xiàn)沖突。 因此也不再需要諸如虛擬繼承和顯式作用域這類復雜機制。C#的簡化接口模型有助于加快應用程序的開發(fā)。·一個接口定義一個只有抽象成員的引用類型。 C#中一個接口實際所做的, 僅僅只存在著方法標志,但根本就沒有執(zhí)行代碼。 這就暗示了不能實例化一個接口, 只能實例化一個派生自該接口的對象。·接口可以定義方法、 屬性和索引。所以,對比一個類,接口的特殊性是: 當定義一個類時,可以派生自多重接口,而你只能可以從僅有的一個類派生。8、多態(tài)性-- 多態(tài)性反映了能夠在多于一個類的對象中完成同一事物的能力——用同一種方法在不同的類中處理不同的對象。例如,如果 Customer 和Vendor 對象都有一個Name 屬性,則我們可以寫一個事物來調(diào)用 Name 屬性而不管我們所使用的是 Customer對象還是Vendor 對象,這就是 多態(tài)性。交通工具是多態(tài)性的一個很好的例子。 一個交通工具接口可以只包括所有交通工具都具有的屬性和方法,還可能包括顏色、車門數(shù)、變速器和點火 器等。這些屬性可以用于所有類型的交通工具,包括轎車、卡車和掛車。 多態(tài)性不在交通工具的屬性和方法背后實現(xiàn)代碼。相反,多態(tài)性只是實現(xiàn)接口。如果轎車、 卡車和掛車都實現(xiàn)了同樣的交通工具接口,則所有這三個類的客戶代碼是 完全一樣的。C#通過繼承來為我們提供多態(tài)性。 C#提供了virtual 關鍵字用于定義一個支持多態(tài)的方法。精彩文檔實用標準文案9、結構 結構是和類相似的一種封裝構造 ,因為它可以包含數(shù)據(jù)、類型和函數(shù)成員。但和類不同的是,結構是值類型,因此存放在內(nèi)存中稱為棧的地方。結構通常用來存入簡單數(shù)據(jù)類型 --在內(nèi)存中有固定大小的實體 的集合,事實上,內(nèi)建的基本值類型 Int32、Int64、Double等在.NETFramework 中實現(xiàn)為結構。10、委托-- 委托是提供對具有特定返回類型和參數(shù)列表的方法的一般引用的引用類型。它的本質(zhì)上和 C或C++中的函數(shù)指針相似。但和 C++函數(shù)指針不同的 是,委托是完全面向?qū)ο蟮?它們既封裝方法又封裝對象實例。委托是用戶定義的類型,所以當定義委托時,實際上是定義一個特定類型的委托,而不是一個具 體的實例11、.Net 中的內(nèi)存回收機制垃圾回收器是用來管理應用程序的內(nèi)存分配和釋放的。在垃圾回收器出現(xiàn)以 前,程序員在使用內(nèi)存時需要向系統(tǒng)申請內(nèi)存空間。有些語言,例如 VisualBasic,可以自動完成向系統(tǒng)申請內(nèi)存空間的工作。但是在諸如 VisualC++ 的語言中要求程序員在程序代碼中申請內(nèi)存空間。如果程序員在使用了內(nèi)存之后忘了釋放內(nèi)存, 則會引起內(nèi)存泄漏。 但是有了垃圾回收器,程序員就不必關心 內(nèi)存中對象在離開生存期后是否被釋放的問題。當一個應用程序在運行的時候,垃圾回收器設置了一個托管堆。托管堆和 C語言中的堆向類似,但是程序員不需要從 托管堆中釋放對象,并且在托管堆中對象的存放是連續(xù)的。每次當開發(fā)人員使用 new 運算符創(chuàng)建對象時,運行庫都從托管堆為該對象分配內(nèi)存。新創(chuàng)建的對象被放在上次創(chuàng)建的對象之后。 垃圾回收器保存了一個指針, 該指針總是指向托管堆中最后一 個對象之后的內(nèi)存空間。當新的對象被產(chǎn)生時,運行庫就知道應該將新的對精彩文檔實用標準文案象放在內(nèi)存的什么地方。 同時開發(fā)人員應該將相同類型的對象放在一起。 例如當開發(fā)人員 希望向數(shù)據(jù)庫寫入數(shù)據(jù)的時侯,首先需要創(chuàng)建一個連接對象,然后是 Command 對象,最后是DataSet 對象。如果這些對象放在托管堆相鄰的區(qū)域內(nèi),存 取它們就非???。、.反射和序列化反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對象。 您可以使用反射動態(tài)地創(chuàng)建類型的實例, 將類型綁定到現(xiàn)有對象, 或從現(xiàn)有對象中獲取類型。然后,可以調(diào)用類型的方法或訪問其字段和屬性序列化:序列化是將對象轉(zhuǎn)換為容易傳輸?shù)母袷降倪^程。例如,可以序列化一個對象,然后使用 HTTP 通過 Internet 在客戶端和服務器之間傳輸該對象。在另一端,反序列化將從該流重新構造對象。、.關于值類型和引用類型數(shù)據(jù)在內(nèi)存中的存儲位置,取決于它的數(shù)據(jù)類型,在 C#中,分為值類型和引用類型,值類型的數(shù)據(jù)存儲在內(nèi)存中的堆棧中, 每個變量或程序都有自己的堆棧, 不可以共用一個堆棧地址。當數(shù)據(jù)一個值類型的變量傳遞到另一個相同類型的變量時, 會在堆棧中分配兩個不同的地址。而引用類型的數(shù)據(jù)存儲在內(nèi)存中的堆中,可以不同的變量或程序共同使用同一個位置的數(shù)精彩文檔實用標準文案據(jù)。當數(shù)據(jù)從一個引用類型的變量傳遞到另一個相同類型的變量時, 只是把這個變量的引用地址傳遞給新的變量,同時引用當前堆中存儲的數(shù)據(jù)。四、Public、Protected 、Internal 、Protectedinternal 、Private 的訪問權限1、Public 公共成員,成員對于任何人都是可見的。我們可以在類內(nèi)部的和類的子孫的代碼中通過使用類的實例來訪問一個公有的成員。2、Protected 保護成員,成員和私有成員類似,只能由包含它的類訪問。然而,受保護成員可以由一個類的子類所使用。 如果類中的一個成員可能被該類的子類訪問, 它應該聲明未受保護的3、Internal/Friend 成員對整個應用程序是公有的,但對于其他的外部應用程序是私有的。當我們希望其他應用程序能夠使用當前應 用程序中的包含的一個類,但又希望這個類為當前應用程序保留一定的功能時,就要用到內(nèi)部 /友元成員。在 C#中我們使用internal ,而在VisualBasic.NET 中我們使用 Friend。4、Protectedinternal 包括了Protected 和Internal 修飾符,成員只能由包含了基類的應用程序中的從該基類派生的子類所訪問。 當你希望一個類中的成 員只能由其子類訪問,并且拒絕其他應用程序訪問該類的這個成員的時候,你就要將其聲明未受保護內(nèi)部成員。5、Private 私有成員,成員是隱藏的,只有對類本身是可用的。所有使用了一個類的實例的代碼都不能直接訪問一個私有成員,這個類的子類也不允許。五、ASP.NET兩個頁面之間傳遞值的幾種方式精彩文檔實用標準文案ASP.NET提供了卓越的事件驅(qū)動編程模型,讓開發(fā)者簡化了應用程序的總體設計,但是這個也造成了它固有的一些問題,例如,使用傳統(tǒng)的 ASP里,我們可以通過使用 POST方法很容易地實現(xiàn)頁面間傳遞值,同樣的事情,在使用事件驅(qū)動編程模型的 ASP.NET就不是那么容易了,當然了,我們?nèi)匀挥幸恍┓椒梢詫崿F(xiàn)同樣 的功能。本文將試著使用不同的可能的方法來解決這個問題,但可以預見是,本文將包含使用 querystring,session 變量以及server.Transfer 方法來實現(xiàn)頁面間的值傳遞。使用QueryString使用QuerySting 在頁面間傳遞值 已經(jīng)是一種很老的機制了,這種方法的主要優(yōu)點是實現(xiàn)起來非常簡單,然而它的缺點是傳遞的值是會顯示在瀏覽器的地址欄上的(不安全) ,同時又不能傳遞對象, 但是在傳遞的值少而安全性要求不高的情況下,這個方法還是一個不錯的方案。使用這種方法的步驟如下 :1,使用控件創(chuàng)建 web表單(form),創(chuàng)建可以返回表單的按鈕和鏈接按鈕3,在按鈕或鏈接按鈕的單擊事件里創(chuàng)建一個保存URL的字符變量4,在保存的URL里添加QueryString參數(shù)5,使用Response.Redirect重定向到上面保存的URL下面的代碼片斷演示了如何實現(xiàn)這個方法:源頁面代碼:privatevoidButton1_Click(objectsender,System.EventArgse){精彩文檔實用標準文案stringurl;url="anotherwebform.aspx?name="+TextBox1.T ext+"&email="+TextBox2.T ext;Response.Redirect(url);}目標頁面代碼:privatevoidPage_Load(objectsender,System.EventArgse){Label1.Text=Request.QueryString["name"];Label2.Text=Request.QueryString["email"];}使用Session變量使用Session 變量是可以在頁面間傳遞值的的另一種方式,在本例中我們把控件中的值存在Session 變量中,然后在另一個頁面中使用它, 以不同頁面間 實現(xiàn)值傳遞的目的。 但是,需要注意的是在 Session變量存儲過多的數(shù)據(jù)會消耗比較多的服務器資源, 在使用session時應該慎重,當然了,我們也應 該使用一些清理動作來去除一些不需要的 session 來降低資源的無謂消耗。使用 Session 變量傳遞值的一般步驟如下:,在頁面里添加必要的控件,創(chuàng)建可以返回表單的按鈕和鏈接按鈕3,在按鈕或鏈接按鈕的單擊事件里,把控件的值添加到 session 變量里4,使用Response.Redirect 方法重定向到另一個頁面精彩文檔實用標準文案5,在另一個頁面提取 session的值,在確定不需要使用該 session 時,要顯式清除它下面的代碼片斷演示了如何實現(xiàn)這個方法:源頁面代碼:privatevoidButton1_Click(objectsender,System.EventArgse){//textbox1andtextbox2arewebform//controlsSession["name"]=TextBox1.T ext;Session["email"]=TextBox2.T ext;Server.Transfer("anotherwebform.aspx");}目標頁面代碼:privatevoidPage_Load(objectsender,System.EventArgse){Label1.Text=Session["name"].T oString();Label2.Text=Session["email"].T oString();Session.Remove("name");Session.Remove("email");}精彩文檔實用標準文案使用Server.Transfer這個方法相比上面介紹的方法稍微復雜一點,但在頁面間值傳遞中卻是特別有用的,使用該方法你可以在另一個頁面以對象屬性的方式來存取顯露的值,當然了,使用 這種方法,你需要額外寫一些代碼以創(chuàng)建一些屬性以便可以在另一個頁面訪問它, 但是,這個方式帶來的好處也是顯而易見的??傮w來說,使用這種方法是簡潔的同 時又是面向?qū)ο蟮?。使用這種方法的整個過程如下:,在頁面里添加必要的控件,創(chuàng)建返回值的Get屬性過程,創(chuàng)建可以返回表單的按鈕和鏈接按鈕,在按鈕單擊事件處理程序中調(diào)用Server.Transfer方法轉(zhuǎn)移到指定的頁面,在第二個頁面中,我們就可以使用Context.Handler屬性來獲得前一個頁面實例對象的引用,通過它,就可以使用存取前一個頁面的控件的值了以下代碼綜合實現(xiàn)上述步驟過程的代碼:源頁面代碼:把以下的代碼添加到頁面中publicstringName{get{returnTextBox1.T ext;}}精彩文檔實用標準文案publicstringEMail{get{returnTextBox2.T ext;}}然后調(diào)用Server.Transfer 方法privatevoidButton1_Click(objectsender,System.EventArgse){Server.Transfer("anotherwebform.aspx");}目標頁面代碼:privatevoidPage_Load(objectsender,System.EventArgse){//createinstanceofsourcewebformWebForm1wf1;//getreferencetocurrenthandlerinstancewf1=(WebForm1)Context.Handler;精彩文檔實用標準文案Label1.Text=wf1.Name;Label2.Text=wf1.EMail;}六、ASP.NET的Application 、Session、Cookie 、ViewState 和Cache 等變量的區(qū)別是什么?Application 是公共的,所有人都能看到,所以可以用來做聊天室,session 是私有的,每個客戶端都存在一個不同的 session 生存期正常是 20分鐘,也可以自己設定為 1分鐘或2個小時cookie 是保存在本機的文件,記錄短小的信息,除非你讓 cookie 過期,否則會一直存在viewstate 類似于asp中的hidden 控件,用來記錄頁面中的控件的狀態(tài)的,主要在頁面間信息傳遞時用,cache是緩存,用來記錄已經(jīng)執(zhí)行過的一些數(shù)據(jù), 比如讀取數(shù)據(jù)庫, 目的是加速顯示, 減少服務器的負擔,過期時間也是可以自己設定的,七、C#中接口與類的區(qū)別?精彩文檔實用標準文案、接口類似于類,但接口的成員都沒有執(zhí)行方式,它只是方法、屬性、事件和索引符的組合而已,并且也只能包含這四種成員;類除了這四種成員之外還可以別的成員 (如字段)。2、不能實例化一個接口,接口只包括成員的簽名;而類可以實例化 (abstract 類除外)。、接口沒有構造函數(shù),類有構造函數(shù)。、接口不能進行運算符的重載,類可以進行運算符重載。5、接口的成員沒有任何修飾符,其成員總是公共的,而類的成員則可以有修飾符 (如:虛擬或者靜態(tài))。、派生于接口的類必須實現(xiàn)接口中所有成員的執(zhí)行方式,而從類派生則不然。那么為什么還要有接口呢?主要原因是它是一種有效的契約。類有一些成員,不考慮把這些成員組合在一起,類只是一個擁有各種方法、字段和屬性的列表,但為了能 以某種方式使用類,必須知道類能執(zhí)行那些功能, 具體的操作就是聲明執(zhí)行一個或多個接口的類, 類執(zhí)行接口的方式是從接口中派生,再提供這個接口中定義的所有 成員的執(zhí)行方式。八、進程與線程的區(qū)別?線程是一種操作系統(tǒng)對象, 代表著一個進程中要被執(zhí)行的代碼的路徑。 每一個WIN32 應用程序至少有一個線程 --通常稱為住線程或默認線程 --但應用程序可以自由地創(chuàng)建其他線程來執(zhí)行其他任務!進程是程序的一次動態(tài)執(zhí)行過程,它對應了從代碼加載、執(zhí)行到執(zhí)行完畢的一個完整過程,這個過程也是進程本身從產(chǎn)生、發(fā)展到消亡的過程線程是比進程更小的執(zhí)行單位。一個進程在其執(zhí)行過程能夠中,可以產(chǎn)生 多個線程,形成多條執(zhí)行線索。每條線索,即每個線程也有它自身的產(chǎn)生、存在和消亡過程,也是一個動態(tài)精彩文檔實用標準文案的概念。一個程序應該只有一個進程吧,但是可以擁有多個線程??梢哉f,一個執(zhí)文件被運行后, 就可以稱為是一個進程了。但是進程只是存在內(nèi)存中, 實際上他是不會做任何事情的。這個時候,起作用的就是線程了。線程是程序的執(zhí)行者, 一個程序至少有一個線程,但是在多線程的操作系統(tǒng)中,可以有一個以上的線程。其實我們可以把線程看成是我們排隊買肯德雞吃(循環(huán)的排隊,一直排下去,知道我不想買了,退出)。每人都有機會到達隊伍的最前端去買東西, 這個就好比是線 程,都有機會被程序執(zhí)行。但是線程真正起作用的時候, 就是我們在隊伍的最前端買東西到東西買完后, 這一段時間,這是線程真正執(zhí)行的階段。一.填空題1.c#中的三元運算符是 _____?2.當整數(shù)a賦值給一個 object 對象時,整數(shù) a將會被_____?3.類成員有_____種可訪問形式?4.publicstaticconstintA=1; 這段代碼有錯誤么?是什么?5.floatf=-123.567F;inti=(int)f;i的值現(xiàn)在是_____?6.利用operator 聲明且僅聲明了 ==,有什么錯誤么 ?7.委托聲明的關鍵字是 ______?精彩文檔實用標準文案8.用sealed修飾的類有什么特點?9.在A 中所有的自定義用戶控件都必須繼承自 ________?在.Net中所有可序列化的類都被標記為_____?11.在.Net托管代碼中我們不用擔心內(nèi)存漏洞,這是因為有了 ______?12.下面的代碼中有什么錯誤嗎? _______usingSystem;classA{publicvirtualvoidF(){Console.WriteLine("A.F");}}abstractclassB:A{publicabstractoverridevoidF();}13.當類T只聲明了私有實例構造函數(shù)時,則在 T的程序文本外部, ______(可以 or 不可以)從T派生出新的類, ____(可以 or 不可以)直接創(chuàng)建 T的任何實例。下面這段代碼有錯誤么?精彩文檔實用標準文案switch(i){case():CaseZero();break;case1:CaseOne();break;case2:dufault;CaseTwo();break;}15.在.Net中,類 可以被繼承么?二.簡答題1.在c#中using 和new這兩個關鍵字有什么意義,請寫出你所知道的意義?2.在下面的例子里usingSystem;classA{publicA(){PrintFields();精彩文檔實用標準文案}publicvirtualvoidPrintFields(){}}classB:A{intx=1;inty;publicB(){y=-1;}publicoverridevoidPrintFields(){Console.WriteLine("x={0},y={1}",x,y);}當使用newB()創(chuàng)建B的實例時,產(chǎn)生什么輸出?3.下面的例子中usingSystem;classA{publicstaticintX;staticA(){X=B.Y+1;精彩文檔實用標準文案}}classB{publicstaticintY=A.X+1;staticB(){}staticvoidMain(){Console.WriteLine("X={0},Y={1}",A.X,B.Y);}}產(chǎn)生的輸出結果是什么?4.談談類和結構的區(qū)別?5.一個長度為 10000 的字符串,通過隨機從 a-z中抽取10000個字符組成。請用 c#語言編寫主要程序來實現(xiàn)。6.對于這樣的一個枚舉類型:enumColor:byte{Red,Green,Blue,Orange精彩文檔實用標準文案}試寫一段程序顯示出枚舉類型中定義的所有符號名稱以及它們對應的數(shù)值。7.您了解設計模式么?請列出您所知道的設計模式的名稱。8.請在SQLServer 中設計表來保存一個樹狀結構的組織結構圖(假設結構圖中只有名稱這一項內(nèi)容需要保存),如果我想查詢某一職位下的所有職位, 用一個存儲過程來實現(xiàn), 你有什么思路?9.什么叫做 SQL注入,如何防止?請舉例說明。下面這段代碼輸出什么?為什么?inti=5;intj=5;if(Object.ReferenceEquals(i,j))Console.WriteLine("Equal");elseConsole.WriteLine("NotEqual");?:裝箱3種const成員都是static所以應該去掉static-123要同時修改Equale和GetHash()?重載了"=="就必須重載"!="精彩文檔實用標準文案delegate不可被繼承[serializable]gC12abstractoverride 是不可以一起修飾不可以,不可以case():不行default;可以1Using 引入一個名子空間,或在使用了一個對像后自動調(diào)用其 IDespose,New 實例化一個對像,或修飾一個方法,表此方法完全重寫此方法,X=1,Y=0x=1,y=24最大區(qū)別一個是引用類型,一個是值類型 默認成員訪問為 public 是另外一個區(qū)別.NET&C# 基礎知識試題 (20%)在.net(C#or)中如何獲得當前窗體或控件的句柄,特別是控件本身的句柄(請列舉)。答案:this(C#)Me().精彩文檔實用標準文案在.net(C#or)中如何用戶自定義消息,并在窗體中處理這些消息。答案:在form中重載DefWndProc函數(shù)來處理消息:{switch(m.msg){caseWM_Lbutton:///string 與MFC中的CString 的Format 函數(shù)的使用方法有所不同stringmessage=string.Format(" 收到消息!參數(shù)為:{0},{1}",m.wParam,m.lParam);MessageBox.Show(message);/// 顯示一個消息框break;caseUSER:處理的代碼default:base.DefWndProc(refm);/// 調(diào)用基類函數(shù)處理非自定義消息。break;}}3.在.net(C#or )如何啟動另一個程序。精彩文檔實用標準文案答案:process在.net(C#or)中如何取消一個窗體的關閉。答案:private void Form1_Closing(object sender,{e.Cancel=true;}5.在.net(C#or )中,Appplication.Exit 還是 Form.Close 有什么不同?答案:一個是退出整個應用程序,一個是關閉其中一個 form6.在C#中有一個double型的變量,比如10321.5,比如122235401.21644,作為貨幣的值如何按各個不同國家的習慣來輸出。比如美國用$10,321.50和$122,235,401.22而在英國則為£10321.50和£12223540122答案:System.Globalization.CultureInfoMyCulture=newSystem.Globalization.CultureInfo("en-US");//System.Globalization.CultureInfoMyCulture=newSystem.Globalization.CultureInfo("en-GB");為英國貨幣類型decimaly=9999999999999999999999999999m;精彩文檔實用標準文案stringstr=String.Format(MyCulture,"Myamount={0:c}",y);某一密碼僅使用K、L、M、N、O共5個字母,密碼中的單詞從左向右排列,密碼單詞必須遵循如下規(guī)則:(1)密碼單詞的最小長度是兩個字母,可以相同,也可以不同(2)K不可能是單詞的第一個字母(3)如果L出現(xiàn),則出現(xiàn)次數(shù)不止一次(4)M不能使最后一個也不能是倒數(shù)第二個字母(5)K出現(xiàn),則N就一定出現(xiàn)(6)O如果是最后一個字母,則 L一定出現(xiàn)問題一:下列哪一個字母可以放在 LO中的O后面,形成一個 3個字母的密碼單詞?A)KB)LC)MD)N答案:B問題二:如果能得到的字母是 K、L、M,那么能夠形成的兩個字母長的密碼單詞的總數(shù)是多少?A)1個B)3個C)6個D)9個答案:A問題三:下列哪一個是單詞密碼?A)KLLNB)LOMLC)MLLOD)NMKO答案:C精彩文檔實用標準文案8.62-63=1 等式不成立,請移動一個數(shù)字(不可以移動減號和等于號) ,使得等式成立,如何移動?答案:62移動成2的6次方1)Whichstatementshowsthemaximumsalarypaidineachjobcategoryofeachdepartment?_______A.selectdept_id,job_cat,max(salary)fromemployeeswheresalary>max(salary);B.selectdept_id,job_cat,max(salary)fromemployeesgroupbydept_id,job_cat;C.selectdept_id,job_cat,max(salary)fromemployees;D.selectdept_id,job_cat,max(salary)fromemployeesgroupbydept_id;E. select dept_id, job_cat,max(salary) from employees group bydept_id,job_cat,salary;2)descriptionofthestudentstable:sid_idnumberstart_datedateend_datedatewhichtwofunctionarevalidonthestart_datecolumn?_________ 。A.sum(start_date)B.avg(start_date)C.count(start_date)精彩文檔實用標準文案D.avg(start_date,end_date)E.min(start_date)F.maximum(start_date)3)for which two constraints does the oracle server implicitly create auniqueindex?______。A.notnullprimaryforeignkeycheckunique4)inaselectstatementthatincludesawhereclause,whereisthegroupbyclauseplacedintheselectstatement?______ 。A.immediatelyaftertheselectclauseB.beforethewhereclauseC.beforethefromclauseD.aftertheorderbyclauseE.afterthewhereclause5)inaselectstatementthatincludesawhereclause,whereistheorderbyclauseplacedintheselectstatement?______.精彩文檔實用標準文案A.immediatelyaftertheselectclauseB.beforethewhereclauseC.afterallclauseD.afterthewhereclauseE.beforethefromclause6)evaluatetheretwosqlstatements______.Selectlast_name,salaryfromemployeesorderbysalary;Selectlast_name,salaryfromemployeesorderby2asc;A.thesameresultB.differentresultC.thesecondstatementreturnsasyntaxerror7)youwouldliketodisplaythesystemdateintheformat44:“1720051110”。14:Whichselectstatementshouldyouuse?______。A.selectto_date(sydate,’yearmmddhh:mm:ss’)fromdual;B.selectto_char(sydate,’yearmonthdayhh:mi:ss’)fromdual;C.selectto_date(sydate,’yyyymmddhh24:mi:ss’)fromdual;D.selectto_char(sydate,’yyyymmddhh24:mi:ss’)fromdual;E.selectto_char(sydate,-mm-’ddyyhh24:mi:ss’)fromdual;8)which select statement will the result ‘ello world ’fromthe string ‘Helloworld ’?______.A.selectsubstr( ‘HelloWorld ’,1)fromdual;精彩文檔實用標準文案B.selectsubstr(trim( ‘HelloWorld ’,1,1))fromdual;C.selectlower(substr( ‘HelloWorld ’,1))fromdual;D.selectlower(trim( ‘H’from ‘HelloWorld ’))fromdual;9)whichareDMLstatements(chooseallthatapply)______.A.commitB.mergeC.updateD.deleteE.creatF.drop10)Select 語句中用來連接字符串的符號是 ______.“+”B.“&”C.“||”D.“|”問答題: 什么是聚集索引,什么是非聚集索引,什么又是主鍵?BD,FB,EECCDAEA表中經(jīng)常有一個列或列的組合,其值能唯一地標識表中的每一行。這樣的一列或多列稱精彩文檔實用標準文案為表的主鍵.聚集索引確定表中數(shù)據(jù)的物理順序。 聚集索引類似于電話簿, 后者按姓氏排列數(shù)據(jù)。 由于聚集索引規(guī)定數(shù)據(jù)在表中的物理存儲順序,因此一個表只能包含一個聚集索引。但該索引可以包含多個列(組合索引) ,就像電話簿按姓氏和名字進行組織一樣。非聚集索引與課本中的索引類似。 數(shù)據(jù)存儲在一個地方, 索引存儲在另一個地方, 索引帶有指針指向數(shù)據(jù)的存儲位置。索引中的項目按索引鍵值的順序存儲, 而表中的信息按另一種順序存儲 (這可以由聚集索引規(guī)定)。如果在表中未創(chuàng)建聚集索引,則無法保證這些行具有任何特定的順序。1.new 有幾種用法第一種:newClass();第二種:覆蓋方法publicnewXXXX(){}第三種:new 約束指定泛型類聲明中的任何類型參數(shù)都必須有公共的無參數(shù)構造函數(shù)。2.如何把一個 array復制到arrayList 里foreach(objectoinarray)arrayList.Add(o);精彩文檔實用標準文案 可以連接什么數(shù)據(jù)源 [dataset,datatable,dataview]dataset,datatable,dataview,IList4.概述反射和序列化反射:程序集包含模塊,而模塊包含類型,類型又包含成員。反射則提供了封裝程序集、模塊和類型的對象。 您可以使用反射動態(tài)地創(chuàng)建類型的實例, 將類型綁定到現(xiàn)有對象, 或從現(xiàn)有對象中獲取類型。然后,可以調(diào)用類型的方法或訪問其字段和屬性序列化:序列化是將對象轉(zhuǎn)換為容易傳輸?shù)母袷降倪^程。例如,可以序列化一個對象,然后使用 HTTP 通過 Internet 在客戶端和服務器之間傳輸該對象。在另一端,反序列化將從該流重新構造對象。5.概述o/rmapping 的原理利用反射,配置 將類于數(shù)據(jù)庫表映射6.類成員有()種可訪問形式可訪問形式?不懂。精彩文檔實用標準文案可訪問性:public,protected,private,internal7.用sealed修飾的類有什么特點sealed 修飾符用于防止從所修飾的類派生出其它類。如果一個密封類被指定為其他類的基類,則會發(fā)生編譯時錯誤。密封類不能同時為抽象類。sealed 修飾符主要用于防止非有意的派生,但是它還能促使某些運行時優(yōu)化。具體說來,由于密封類永遠不會有任何派生類, 所以對密封類的實例的虛擬函數(shù)成員的調(diào)用可以轉(zhuǎn)換為非虛擬調(diào)用來處理。8.列舉ADO.NET 中的五個主要對象,并簡單描述connection,command,dataReader,trans,dataset...9.執(zhí)行下面代碼后:StringstrTemp="abcdefg 某某某";IntiSystem.T Intj=strTemp.Length;精彩文檔實用標準文案問:i=(14) ;j=(11)i=(14) ;j=(11) 中文兩個字節(jié)10.C#中,stringstr=null 與stringstr="" ,請盡量用文字說明區(qū)別。 (要點:說明詳細的內(nèi)存空間分配 )stringstr="" 分配空間11.詳述.NET里class和struct 的異同!class:放在 ?struct 放在?struct 值傳遞類與結構有很多相似之處:結構可以實現(xiàn)接口,并且可以具有與類相同的成員類型。然而,結構在幾個重要方面不同于類: 結構為值類型而不是引用類型, 并且結構不支持繼承。 結構的值存儲在“在堆棧上”或“內(nèi)聯(lián)”。 細心的程序員有時可以通過聰明地使用結構來增強性能。12.概述.NET里對 remoting 和webservice 兩項技術的理解和實際中的應用。遠程邏輯調(diào)用, remoing 接口只能用在 .net中精彩文檔實用標準文案13.什么是code-behind 技術aspxandcs概述三層結構體系web/business/dataaccess 如何實現(xiàn) MVC模式,舉例說明!web/business/dataaccess一、ADO 與ADO.NET 兩種數(shù)據(jù)訪問方式區(qū)別 ?1.ADO 與ADO.NET 簡介ADO與ADO.NET既有相似也有區(qū)別,他們都能夠編寫

溫馨提示

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

評論

0/150

提交評論