1. 重 載(Overload ) 和覆寫(override) 的區別html
答:程序員
方法重載:當類包含兩個名稱相同但簽名不一樣( 方 法名相同, 參數列表不相同) 的方法時發生方法重載。用方法重載來提供在語義上完成相同而功能不一樣的方 法。
覆寫:在類的繼承中使用,經過覆寫子類方法能夠改 變父類虛方法的實現。web
2. 接口與繼承的區別?何時使用接口,何時使用繼承?算法
答:sql
(1 ) 接口定義一個類型須要實現的方法,屬性,索引和事件,包括可能的參數類型和返回值類型,而把具體的實現交由相應的類或結構來作,從而爲 組件提供多態能力。
(2 ) 繼承經常使用於在一個現有父類的基礎上的功能擴展,每每是咱們將幾個類中相同的成員提取出來放在父類中實現,而後在各自的子類中加以繼承。
(3 ) 接口能夠實現多接口繼重,而繼承只能實現單繼承。
(4 ) 實現繼承可繼承父類型的實現,因爲接口中沒有定義方法的實現,所以必須實現繼承後該接口的全部方法。
(5 ) 爲父類型添加方法可能不影響使用繼承自該類型實現的用戶,而爲接口添加方法致使用戶必須爲新方法添加實現。
(6 ) 當派生類和基類是is-a 的關係是使用" 繼承" ,典型案例" 蘋果 is-a 水果" ,存在can-do 的關 系時使用" 接口"數據庫
3.ado,ado.net 的 區別編程
答:數組
您能夠經過將 ADO.NET 的各項功能與 ActiveX 數據對象 (ADO) 的特定功能進行比較來理解 ADO.NET 的功能。瀏覽器
數據的內存中表示形式緩存
在 ADO 中,數據的內存中表示形式爲記錄 集。在 ADO.NET 中,它爲數據集。它們之間有重要的差 異。
表的個數
記錄集看起來像單個表。若是記錄集將包含來自多個數據庫表的數據,則它必須使用 JOIN 查詢,未來自各個數據庫表的數據組合到單個結果表中。
相反,數據集是一個或多個表的集合。數據集內的表稱爲數據表;明確地說,它們是 DataTable 對象。若是數據集包含來自多個數據庫表的數據,它一般將包含多個 DataTable 對象。即,每一個 DataTable 對象一般對應於單個數據庫表或視圖。這樣,數據集能夠模仿基礎數據庫的結構。
數據集一般還包含關係。數據集內的關係相似於數據庫中的外鍵關係,即它使多個表中的行彼此關聯。例如,若是數據集包含一個有關投資者的表 和另外一個有關每一個投資者的股票購買狀況的表,則數據集可能還包含一個關係來鏈接投資者表的各個行和購買表的對應行。
因爲數據集能夠保存多個獨立的表並維護有關表之間關係的信息,所以它能夠保存比記錄集豐富得多的數據結構,包括自關聯的表和具備多對多關 系的表。
數據導航和遊標
在 ADO 中,您使用 ADO MoveNext 方法順序掃描記錄集的行。在 ADO.NET 中, 行表示爲集合,所以您能夠像依次經過任何集合那樣依次經過表,或經過序號索引或主鍵索引訪問特定行。DataRelation 對象維護有關主記錄和詳細資料記錄的信息,並提供方法使您能夠獲取與正在操做的記錄相關的記錄。例如,從 Investor 表的"Nate Sun" 的行開始,能夠定 位到 Purchase 表中描述其購買狀況的那組行。
" 遊標" 是數據庫元素,它控制記錄導航、更新數據的能力和其餘用戶對數據庫所作更 改的可見性。ADO.NET 不具備固有的遊標對象,而是包含 提供傳統遊標功能的數據類。例如,在 ADO.NET DataReader 對象中提供只進、只讀遊標的功能。有關遊標功能的更多信息,請參見數據訪問技術。
將打開鏈接的時間降至最低
在 ADO.NET 中,打開鏈接的時間僅足 夠執行數據庫操做,例如" 選擇"(Select) 或" 更新"(Update) 。您能夠將行讀入數據集中,而後在不保持與數據源的鏈接的狀況下使用它們。在 ADO 中,記錄集能夠提供不鏈接的訪問,但 ADO 主要是爲鏈接的訪問設計的。
ADO 和 ADO.NET 中的不鏈接處理之間存在一個顯著差別。在 ADO 中,經過調用 OLE DB 提供程序來與數據庫通訊。但在 ADO.NET 中,您經過數據適配器(OleDbDataAdapter 、SqlDataAdapter 、OdbcDataAdapter 或 OracleDataAdapter 對象)與數據庫通訊,這將調用 OLE DB 提供程序或基礎數據源提供的 API 。ADO 和 ADO.NET 之 間的主要區別在於:在 ADO.NET 中,數據適配器容許您 控制將對數據集所作的更改傳輸到數據庫的方式,方法是實現性能優化、執行數據驗證檢查或添加其餘任何額外處理。
注意 數 據適配器、數據鏈接、數據命令和數據讀取器是組成 .NET Framework 數據提供程序的組件。Microsoft 和第三方供應商可能會提供其它提供程序,這些提供程序也可集成到 Visual Studio 中。有關不一樣 .NET 數據提供程序的信息,請參見 .NET 數據提供程序。
在應用程序間共享數據
在應用程序間傳輸 ADO.NET 數據集比 傳輸 ADO 不鏈接的記錄集要容易得多。若要將 ADO 不鏈接的記錄集從一個組件傳輸到另外一個組件,請使用COM 封送。若要在 ADO.NET 中傳輸數據,請使用數據集,它能夠傳輸 XML 流。
相對於 COM 封送,XML 文件的傳輸提供如下便利之處:
更豐富的數據類型
COM 封送提供一組有限的數據類型(由 COM 標準定義的那些類型)。因爲 ADO.NET 中的數據集傳輸基於 XML 格式,因此對數據類型沒有限制。所以,共享數據集的組件可使用 這些組件通常會使用的任何豐富的數據類型集。
性能
傳輸大型 ADO 記錄集或大型 ADO.NET 數據集會使用網絡資源;隨着數據量的增加,施加於網絡的 壓力也在增長。ADO 和 ADO.NET 都使您能夠最大限度地下降所傳輸的數據。但 ADO.NET 還提供另外一個性能優點:ADO.NET 不須要數據類型轉換。而須要 COM 封送來在組件間傳輸記錄集的 ADO,則須要將 ADO 數據類型轉換爲 COM 數 據類型。
穿透防火牆
防火牆能夠影響試圖傳輸不鏈接的 ADO 記 錄集的兩個組件。請記住,防火牆一般配置爲容許 HTML 文 本經過,但防止系統級請求(如 COM 封送)經過。
由於組件使用 XML 交換 ADO.NET 數據庫,因此防火牆能夠容許數據集經過。
4.asp.net 頁 面在何時產生?又在何時銷燬?
答:
(1)Page_Init();--- 初 始化對象
這一過程主要是初始化包括頁面自己的全部控 件,每次的頁面載入就會執行一次初試過程,而在這裏面訪問到的也是控件的初始值。還有就是能夠經過OnInit() 來重載初試化事件。
(2) LoadViewState--- 導 入Viewstate 數據在初試化事件後,在loadvireState 事件中全部控件將得到他們的第一個屬性ViewState 屬性,這個屬性最終將被返回給服務器以判斷這個頁面是 已經被用戶訪問完畢仍是仍然在被用戶所訪問。也可重載loadvireState 事 件對相應的控件進行值設定。
(3) Load Postback data;--- 用LoadPostData 處 理Postback 數據Postback 數據也能夠理解成就是服務器頁面提交的表單數據, 每一次表單數據的提交都會觸發執行IPostBackDataHandler 接 口操做的控件。
(4) Page_Load();--- 導 入對象
這個過程就比較熟悉了,也是在頁面的每次載入時 必定會執行,可是注意和PageInit() 之間的區別,全部 的對象第一次被佈置在DOM 頁面(在Asp.net中稱控件樹)裏了而且能夠經過代碼或是相關的位置被引用。這 樣,對象就能夠很容易的從客戶端得到諸如寬度、高度、值、可見性等在Html 中 的屬性值。常常會用到的Page.IsPostBack() 指 示該頁是否正爲響應客戶端回發而加載,或者它是否正被首次加載和訪問.
(5) Handle control events;--- 具體的控件事件這 個過程執行的是相應具體控件事件,好比按鈕事件.. 等。
(6) Page_PreRender();--- 預先呈遞對象預 先呈遞對象能夠改變對象並將改變保存的最後時刻. 能夠對控件的 屬性、控件樹的結構等作出最後的修改,同時還不用考
慮Asp.net 對 其做出任何改變,由於此時已經脫離了數據庫調用以及viewstate 更 新了,也能夠經過OnPreRender 來重載。
(7) Page_Render();--- 呈遞對象呈遞頁面
所 有對頁面控件的修改完成後viewstate 就被保存了。運用Html 建立給瀏覽器輸出的頁面的時候Render 事件就發生了。在Render 事件過程當中,頁面調用其中的對象將它們呈遞給Html 。而後,頁面就能夠以Html 的形式被用戶的瀏覽器訪問了。當Render 事件被重載時,開發者能夠編寫自定義的Html 代碼使得原先生成的Html 都無效而按照新的Html 來組織頁面。Render 方法將一個HtmlTextWriter 對 象做爲參數並用它將Html 在瀏覽器上以網頁的形式顯示。這時 仍然能夠作一些修改動做,不過它們只是客戶端的一些變化而已了。亦能夠重載Render 事 件。
(8) Unload event;--- 卸 載對象
當想服務器請求一個對象的時候, 就會在內存裏生成一個繼承頁面對象, 也就是頁面的類, 它繼承自System.Web.UI.Page.
當頁面對象從內存中卸載時發生,將觸發該事件.
(9) Dispose method called
在呈遞給Html 完成後, 全部的對象都應被銷燬。在Dispose 事件中,你應該銷燬所 有在創建這個頁面時建立的對象。這時,全部的處理已經完畢,因此銷燬任何剩下的對象都是不會產生錯誤的,包括頁面對象。你能夠重載Dispose 事件。
5.Session,ViewState,Application,cookie 的 區別?
答:
Session:Session 用 於保持狀態的基於 Web 服務器的方法。Session 容許經過將對象存儲在Web 服務器的內存中在整個用戶會話過程當中保持任何對象。主要用於保持代 碼隱藏類中對象的狀態。爲每一個用建立的, 用於存儲單個用戶, 由於他是相對每一個用戶的. 因此可能來取得在線人數等。
ViewState: 主要用於保持 Web 頁上控件的狀態。當 Web 頁上的 控件被綁定到代碼隱藏類中的對象。
Application 用於存儲全部用戶均可視的信息. 因此它存儲的是要讓全部用戶共享的一些信息. 如總訪問數等;
Cache: 頁面緩存。
cookie: 一般咱們都把它放在客戶端, 也能夠存儲在服務器端。主要用它存儲用戶的個性設制, 和登錄信息。
6. 面 向對象的思想主要包括什麼?
答:開發人員應該熟悉面向對象軟件開發(OOP) 基 本概念,熟悉面向對象軟件開發中的類、繼承、封裝、多態等概念,具有良好的面向對象軟件開發思想和設計原則。
7. 什 麼是ASP.net 中的用戶控件?
答:用戶控件。用戶控件是可以在其中放置標記和 Web 服 務器控件的容器。而後,能夠將用戶控件做爲一個單元對待,爲其定義屬性和方法。
8. 什 麼叫應用程序域?什麼是受管制的代碼?什麼是強類型和強類型系統?什麼是裝箱和拆箱?什麼是重載?CTS 、CLS 和CLR 分別做何解釋?
答:
(1 )應用程序域爲隔離正在運行的應用程序提供了一種靈活而安全的方法。
(2 )受管制的代碼: 在.NET 環境中運行的任何代碼都稱爲受管制的代碼(unmanaged code) ,.NET 外部的其餘代碼也運行在Windows 上,這些代碼稱爲未受管制的代碼(unmanaged code) 。
(3 )強類型和弱類型的區別在與,在編碼過程當中是否要指定數據類型,做爲強類型必須指定數據類型,編譯器爲其分配相應的 存儲空間(如 c ,pascal ) 不然編譯出 錯。 而弱類型不必定須要指定數據類型,編譯器會用相同的 空間去分配各類類型,除非你指定了(如basic) 。 做爲強類型語言,在編譯階段的安全性要高於弱語言型。
強類型系統:RTTI :類型識別系統。
(4 )裝箱就是隱式的將一個值型轉換爲引用型對象。好比:
int i=0;
Syste.Object obj=i;
這 個過程就是裝箱!就是將i 裝箱!
拆箱就是將一個引用型對象轉換成任意值型!好比:
int i=0;
System.Object obj=i;
int j=(int)obj;
這 個過程前2 句是將i 裝箱,後一句是將obj 拆箱!
再寫個代碼,看看進行了幾回裝拆箱!
int i=0;
System.Object obj=i;
Console.WriteLine(i+","+(int)obj);
其中共發生了3 次裝箱和一次拆箱!^_^ ,看出來了吧?!
第一次是將i 裝箱,第2 次是輸出的時候將i 轉換 成 string 類型,而 string 類型爲引用類型, 即又是裝箱,第三次裝箱就是 (int)obj 的轉換成string 類型,裝箱!
拆箱就是 (int)obj ,將 obj 拆箱!!
(5 )重載,是指容許存在多個同名函數,而這些函數的參數表不一樣(或許參數個數不一樣,或許參數類型不一樣,或許二者都不 同)。
(6 )CLR 的全稱是公共語言運行庫(Common Language Runtime ),讀者能夠把CLR 理解爲一個包含運行.NET 程序的引擎和一堆符合公共語言基礎結構的類庫的集合。CLR 是一個規範的實現,咱們開發的幾乎全部的.NET 程序都基於CLR 的類庫來實現,而且運行在 CLR 提供的運行引擎之上。所謂.NET 框架,指的就是公共語言運行庫。
公共語言基礎(CLI )是微軟公司向ECMA 提交的一份語言和數據格式規範,CLR 是 目前爲止惟一一個公共語言基礎的實現版本。
CTS 的全稱是通用類型系統(Common Type System )。前文已經介紹了公共語言基礎(CLI )的概念,微軟公司提交的CLI 規範,包括了公共類型系統(CTS )、公共中間語言(CIL )、底部文件格式以及元數據格式等。公共類型系統定義了一個可以在CLR 上運行的語言規範。儘管有不少語言自己不符合CTS 規範,可是經過增強編譯器,改變語言附加規範等手段,使得許多語言能 夠編寫出能在CLR 上運行的程序。
一種語言編寫的程序編譯可以在CLR 上 運行,並不表明這種語言自己徹底符合CTS 的規範。例如C++ 語言,仍然保持了其不符合CTS 規範的部分,而且在編譯時把這部分不符合CTS 的代碼編譯成原始代碼而非中間代碼。
最後來看一下CLS 的 概念。公共語言規範(CLS )是CTS 的一個子集,它定義了但願編寫在.NET 平臺上運行的程序的語言所需符合的最小規範。正由於.NET 容許由不一樣語言編寫的程序一塊兒執行,因此才制定出CLS 規範,用以免不一樣語言特性產生的錯誤。
9. 列 舉一下你所瞭解的XML 技術及其應用
答:xml 能夠用來作網頁(xslt) xml 可 以看成數據庫 xml 能夠用來保存對象的系列化
10. 值 類型和引用類型的區別?寫出C# 的樣例代碼。
答:值類型包括簡單類型、結構體類型和枚舉類型,引用類型包括自定義類、數組、接口、委託等
11.ADO.net 中 經常使用的對象有哪些?分別描述一下。
答:ado.net 我直接用 sqlhelper 了 有connection command 還 有參數
12. 如 何理解委託?
答:簡單的說:委託是一種方法容器,裏面能夠裝載若干個具備相同簽名的方法引用地址,那麼調用委託,就至關於同時調用了該容器內的全部方法。
13.C# 中 的接口和類有什麼異同。
答:
區別一,二者表達的概念不同。抽象類是一類事物的高度聚合,那麼對於繼承抽象類的子類來講,對於抽象類來講,屬於"是"的關係;而接口是定義行爲規範, 所以對於實現接口的子類來講,相對於接口來講,是"行爲須要按照接口來完成"。
區別二,抽象類在定義類型方法的時候,能夠給出方法的實現部分,也能夠不給出;而對於接口來講,其中所定義的方法都不能給出實現部分。
區別三,繼承類對於二者所涉及方法的 實現是不一樣的。繼承類對於抽象類所定義的抽象方法,能夠不用重寫,也就是說,能夠延用抽象類的方法;而對於接口類所定義的方法或者屬性來講,在繼承類中必 需要給出相應的方法和屬性實現。
區別四,在抽象類中,新增一個方法的話,繼承類中能夠不用做任何處理;而對於接口來講,則須要修改繼承類,提供新定義的方法。
以下給出二者的簡單對比表格。
|
接口 |
抽象類 |
多繼承 |
支持 |
不支持 |
類型限制 |
沒有 |
有,只能是引用類型 |
方法實現 |
繼承類型中必須給出方法實現 |
繼承類中能夠不給 出 |
擴展性 |
比較麻煩 |
相對比較靈活 |
多層繼承 |
比較麻煩,須要藉助虛函數 |
比較靈活 |
14..net 中 讀寫數據庫須要用到哪些類?他們的做用
答:
(1 )DataSet 用來無鏈接的儲存多個表的數據,幷包含表與表之間的關聯關 系
(2 )DataTable 用來存儲一個表的數據
(3 )SqlConnection 用來建立一個到數據庫的鏈接
(4 )SqlCommand 用 來執行SQL 語句
(5 )SqlDataReader 用 來順序讀取數據
(6 )SqlDataAdapter 用來將數據填充到DataSet 或DataTable
15.UDP 連 接和TCP 鏈接的異同。
答:
TCP 是傳輸控制協議,提供的是面向鏈接的,是可靠的,字節流服務,當用戶和服務器彼此進行數據交互的時候,必須在他們數據交互前要進行TCP 鏈接以後才能傳輸數據。TCP 提供超時重撥,檢驗數據功能。UDP 是用戶數據報協議,是一個簡單的面向數據報的傳輸協議,是不可靠的連 接。
16.ASP.net 的 身份驗證方式有哪些?分別是什麼原理?
答:
Windows 身份驗證提供程序:
提供有關如何將 Windows 身份驗證與 Microsoft Internet 信息服務 (IIS) 身份驗證結合使用來確保 ASP.NET 應用程序安全的信息。
Forms 身份驗證提供程序 :
提供有關如何使用您本身的代碼建立應用程序特定的登陸窗體並執行身份驗證的信息。使用 Forms 身份驗證的一種簡便方法是使用 ASP.NET 成員資格和 ASP.NET 登陸控件,它們一塊兒提供了一種只需少許或無需代碼就能夠 收集、驗證和管理用戶憑據的方法。
Passport 身份驗證提供程序 :
提供有關由 Microsoft 提供的集中身份驗證服務的信息,該服務爲成員站點提供單一登陸和核心配置
17. 進 程和線程分別怎麼理解?
答:進程是比線程大的程序運行單元,都是由操做系統所體會的系統運行單元,一個程 序中至少要有一個進程,有一個進程中,至少要有一個線程,線程的劃分尺度要比進程要小,進程擁有獨立的內存單元,線程是共享內存,從而極大的提升了程序的 運行效率同一個進程中的多個線程能夠併發執行。
18. 什 麼是code-Behind 技術。
答:就是代碼隱藏,在ASP.NET 中經過ASPX 頁面指向CS 文件的方法實現顯示邏輯和處理邏輯的分離,這樣有助於web 應用程序的建立。好比分工,美工和編程的能夠個幹各的,不用再像之前asp 那樣都代碼和html 代碼混在一塊兒,難以維護。
19. 活 動目錄的做用。
20..net 中 讀寫XML 的類都歸屬於哪些命名空間?
答:System.Xml;
21. 解 釋一下UDDI 、WSDL 的意義及其做用。
答:
UDDI
統一描述、發現和集成協議(UDDI , Universal Description, Discovery and Integration) 是一套基於Web 的、分佈式的、爲Web 服務提供的信息註冊中心的實現標準規範,同時也包含一組使企業能將自 身提供的Web 服務註冊以使得別的企業可以發現的訪問協議的實 現標準。UDDI 提供了一組基於標準的規範用於描述和發現服務,還提供了一組基於因特網的實現。
WSDL
WSDL 描 述Web 服務的公共接口。這是一個基於XML 的關於如何與Web 服務通信和使用的服務描述;
22. 什 麼是SOAP, 有哪些應用。
答:
SOAP (Simple Object Access Protocol )簡單對 象訪問協議是在分散或分佈式的環境中交換信息並執行遠程過程調用的協議,是一個基於XML 的協議。使用SOAP , 不用考慮任何特定的傳輸協議(最經常使用的仍是HTTP 協議),可 以容許任何類型的對象或代碼,在任何平臺上,以任何一直語言相互通訊。這種相互通訊採用的是XML 格式的消息
SOAP 是一種輕量級協議,用於在分散型、分佈式環境中交換結構化信息。 SOAP 利用 XML 技 術定義一種可擴展的消息處理框架,它提供了一種可經過多種底層協議進行交換的消息結構。 這種框架的設計思想是要獨立於任何一種特定的編程模型和其餘特定實現的語 義。
23. 如 何部署一個ASP.net 頁面。
答:
VS 2005 和VS 2003 都有發佈機制。2003 能夠發佈而後再複製部署。
VS2005 基 本上能夠直接部署到對應位置。
24. 如 何理解.net 中的垃圾回收機制。
答:
NET Framework 的垃圾回收器管理應用程序的內存分配和釋放。每次您使用 new 運算符建立對象時,運行庫都從託管堆爲該對象分配內存。只要託管堆中有地址空間可用,運行庫就會繼續爲新對 象分配空間。可是,內存不是無限大的。最終,垃圾回收器必須執行回收以釋放一些內存。垃圾回收器優化引擎根據正在進行的分配狀況肯定執行回收的最佳時間。 當垃圾回收器執行回收時,它檢查託管堆中再也不被應用程序使用的對象並執行必要的操做來回收它們佔用的內存。
25. 常 用的調用webservice 方法有哪些?
答:1. 使用WSDL.exe 命令行工具。
2. 使用VS.NET 中的Add Web Reference 菜單選項
26. 簡 述 private 、 protected 、 public 、 internal 修飾符的訪問權限。
答:
private : 私有成員, 在類的內部才能夠訪問。
protected : 保護成員,該類內部和繼承類 中能夠訪問。
public : 公 共成員,徹底公開,沒有訪問限制。
internal: 在 同一命名空間內能夠訪問。
27. 列舉ASP.NET 頁面之間傳遞值的幾種方式。
答.
1. 使用QueryString, 如....?id=1; response. Redirect()....
2. 使 用Session 變量
3. 使用Server.Transfer
28. 一列數的規則以下: 1 、1 、2 、3 、5 、8 、13 、21 、34...... 求 第30 位數是多少, 用遞歸算法實現。
答:
public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if(i > 0 && i <= 2)
return 1;
else return Foo(i -1) + Foo(i - 2);
}
}
30.C# 中 的委託是什麼?
答 :
委託能夠把一個方法做爲參數代入另外一個方法。
委託能夠理解爲指向一個函數的引用。
是,是一種特殊的委託
31.override 與 重載的區別
答 :
override 與重載的區別。重載是方法的名稱相同。參數或參數類型不一樣,進行屢次重載以適應不一樣的須要
Override 是進行基類中函數的重寫。爲了適應須要。
32. 如 果在一個B/S 結 構的系統中須要傳遞變量值,可是又不能使用Session 、Cookie 、Application ,您有幾種方法進行處理?
答 :
this.Server.Transfer
33. 請編程遍歷頁面上全部TextBox 控件並給它賦值爲string.Empty ?
答:
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
tb.Text = String.Empty ;
}
}
34. 請編程實現一個冒泡排序算法?
答:
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 ;
}
}
}
35. 描述一下C# 中索引器的實現過程,是否只能根據數字進行索引?
答:不是。能夠用任意類型。
36. 求 如下表達式的值,寫出您想到的一種或幾種實現方法: 1-2+3-4+……+m
答:
int Num = this.TextBox1.Text.ToString() ;
int Sum = 0 ;
for (int i = 0 ; i < Num + 1 ; i++)
{
if((i%2) == 1)
{
Sum += i ;
}
else
{
Sum = Sum - I ;
}
}
System.Console.WriteLine(Sum.ToString());
System.Console.ReadLine() ;
37. 用.net 作B/S 結構的系統,您是用幾層結構來開發,每一層之間的關係以及爲何要這樣分層?
答:通常爲3 層
數據訪問層,業務層,表示層。
數據訪問層對數據庫進行增刪查改。
業務層通常分爲二層,業務表觀層實現與表示層的溝通,業務規則層實現用戶密碼的安全等。
表示層爲了與用戶交互例如用戶添加表單。
優勢: 分工明確,條理清晰,易於調試,並且具備可擴展性。
缺點: 增長成 本。
38. 在 下面的例子裏
using System;
class A
{
public A()
{
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B()
{
y=-1;
}
public override void PrintFields()
{
Console.WriteLine("x={0},y={1}",x,y);
}
當 使用new B() 建立B 的實例時,產生什麼輸出?
答:X=1,Y=0;x= 1 y = -1 (疑問諮詢QQ 1163551688)
39.net 中讀寫數據庫 須要用到那些類?他們的做用?
答:DataSet: 數據存儲器。
DataCommand: 執行語句命令。
DataAdapter: 數據的集合,用語填充。
40. 在.net 中,配件 的意思是?
答:程序集。(中間語言,源 數據,資源,裝配清單)
41..net Remoting 的工做原理是什麼?
答:服務器端向客戶端發送一個進程編號, 一個程序域編號,以肯定對象的位置。
42. 在C #中,string str = null 與 string str = "" 請 儘可能使用文字或圖象說明其中的區別。
答:string str = null 是不給他分配內存空間, 而string str = "" 給 它分配長度爲空字符串的內存空間。
43. 請詳述在dotnet 中類(class) 與結構(struct) 的 異同?
答:Class 能夠被實例化, 屬於引用類型, 是分配在內存的堆上的,Struct 屬 於值類型, 是分配在內存的棧上的.
44. 根 據委託(delegate) 的 知識,請完成如下用戶控件中代碼片斷的填寫:
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
// 請 在如下補齊代碼用來調用OnDBOperate 委託簽名的OnNew 事件。
}
}
}
答:if( OnNew != null )
OnNew( this, e );
45. 分析如下代碼,完成填空
string strTmp = "abcdefg 某 某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以 上代碼執行完後,i= j=
答:i=13,j=10
46.SQLSERVER 服務器中,給定表 table1 中 有兩個字段 ID 、LastUpdateDate ,ID 表示更新的事務號, LastUpdateDate 表示更新時的服務器時間,請使用一句SQL 語句得到最後更新的事務號
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)
47. 根據線程安全的相關知識,分析如下代碼,當調用test 方法時i>10 時是否會引發死鎖? 並簡要說明理由。
public void test(int i)
{
lock(this)
{
if (i>10)
{
i--;
test(i);
}
}
}
答: 不會發生死鎖,(但有一點int 是按值傳遞的,因此每次改變的 都只是一個副本,所以不會出現死鎖。但若是把int 換作一個object ,那麼死鎖會發生) (疑問諮詢QQ 1163551688)
48. 簡 要談一下您對微軟.NET 構 架下remoting 和webservice 兩項技術的理解以及實際中的應用。
答:WS 主要是可利用HTTP ,穿透防火牆。而Remoting 可 以利用TCP/IP ,二進制傳送提升效率。
49. 公司要求開發一個繼承System.Windows.Forms.ListView 類的組件,要 求達到如下的特殊功能:點擊ListView 各列列頭時,能按 照點擊列的每行值進行重排視圖中的全部行 ( 排序的方式如DataGrid 類似) 。根據您的知識,請簡要談一下您的思路
答:根據點擊的列頭, 包該列的ID 取出, 按照該ID 排序後, 在給綁定到ListView 中。
50. 給 定如下XML 文 件,完成算法流程圖。
<FileSystem>
< DriverC >
<Dir DirName="MSDOS622">
<File FileName =" Command.com" ></File>
</Dir>
<File FileName ="MSDOS.SYS" ></File>
<File FileName =" IO.SYS" ></File>
</DriverC>
</FileSystem>
請 畫出遍歷全部文件名(FileName )的流程圖( 請使用遞歸算法) 。
答:
void FindFile( Directory d )
{
FileOrFolders = d.GetFileOrFolders();
foreach( FileOrFolder fof in FileOrFolders )
{
if( fof is File )
You Found a file;
else if ( fof is Directory )
FindFile( fof );
}
}
51. 寫出一條Sql 語句:取出表A 中第31 到第40 記錄(SQLServer, 以自動增加的ID 做 爲主鍵, 注意:ID 可能不是連續的。
答:
解1: select top 10 * from A where id not in (select top 30 id from A)
解2:
select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)
52. 面向對象的語言具備________ 性、_________ 性、________ 性
答:封裝、繼承、多態。
53. 能用foreach 遍歷 訪問的對象須要實現 ________________ 接口或 聲明 ________________ 方法的類 型。
答:IEnumerable 、 GetEnumerator 。
54.GC 是 什麼? 爲 什麼要有GC?
答:GC 是垃圾收集器。程序員不用擔憂內存管理,由於垃圾收集器會自動進行管 理。要請求垃圾收集,能夠調用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
55.String s = new String("xyz"); 建立了幾個String Object?
答:兩個 對象,一個是"xyx", 一個是指向"xyx" 的引用對象s 。
56. 啓 動一個線程是用run() 仍是start()?
答:啓動一個線程是調用start() 方法,使線程所表明的虛擬處理機處於可運行狀態,這意味着 它能夠由JVM 調度並執行。這並不意味着線程就會當即運行。run() 方法能夠產生必須退出的標誌來中止一個線程。
57. 接 口是否可繼承接口? 抽 象類是否可實現(implements) 接口? 抽象類是否可繼承實體類(concrete class)?
答:接口能夠繼 承接口。抽象類能夠實現(implements) 接口,抽象類 是否可繼承實體類,但前提是實體類必須有明確的構造函數。
58. 構造器Constructor 是否可被override?
答:構造器Constructor 不能被繼承,所以不能重寫Overriding ,但能夠被重載Overloading 。
59. 是 否能夠繼承String 類?
答:String 類是final 類故不能夠繼承。
60.try {} 裏有一個return 語句,那麼緊跟在這個try 後的finally {} 裏的code 會 不會被執行,何時被執行,在return 前仍是後?
答:會執行,在return 前執行。
61. 兩個對象值相同(x.equals(y) == true) , 但卻可有不一樣的hash code ,這句話對不對?
答:不對,有相同的hash code 。
62.swtich 是否能做 用在byte 上, 是否能做用在long 上,是否能做用在String 上?
答:switch (expr1 )中,expr1 是一個整數表達式。所以傳遞給 switch 和 case 語句的參數應該是 int 、 short 、 char 或 者 byte。long,string 都不能做用於swtich 。
63. 當一個線程進入一個對象的一個synchronized 方 法後,其它線程是否可進入此對象的其它方法?
答: 不能,一個對象的一個synchronized 方法只能由一個 線程訪問。
64.abstract 的method 是否可同時是static, 是否可同時是native ,是否可同時是synchronized?
答:都不能。
65.List, Set, Map 是 否繼承自Collection 接 口?
答:List ,Set 是Map 不是
66.Set 裏 的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用== 仍是equals()? 它 們有何區別?
答:Set 裏的元素是不能重複的,那麼用iterator() 方法來區分重複與否。equals() 是判讀兩個Set 是否相等。
equals() 和== 方 法決定引用值是否指向同一對象equals() 在類中被覆蓋, 爲的是當兩個分離的對象的內容和類型相配的話,返回真值。
67. 數組有沒有length() 這個方法? String 有沒有length() 這個方法?
答:數組沒有length() 這個方法,有length 的屬性。String 有有length() 這 個方法。
68.sleep() 和 wait() 有什麼區別?
答:sleep() 方法是使線程中止一段時間的方法。在sleep 時間間隔期滿後,線程不必定當即恢復執行。這是由於在那個時 刻,其它線程可能正在運行並且沒有被調度爲放棄執行,除非(a)" 醒 來" 的線程具備更高的優先級
(b) 正在運行的線程由於其它緣由而阻塞。
wait() 是線程交互時,若是線程對一個同步對象x 發出一個wait() 調用,該線程會暫停執行,被調對象進入等待狀態,直到被喚醒或等待時間到。
69.short s1 = 1; s1 = s1 + 1; 有 什麼錯? short s1 = 1; s1 += 1; 有 什麼錯?
答:short s1 = 1; s1 = s1 + 1; 有錯,s1 是short 型,s1+1 是int 型, 不能顯式轉化爲short 型。 可修改成s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1 正確。
70. 談 談final, finally, finalize 的 區別。
答:
final— 修飾符(關鍵字)若是一個類被聲明爲final ,意味着它不能再派生出新的子類,不能做爲父類被繼承。所以 一個類不能既被聲明爲 abstract 的,又被聲明爲final 的。將變量或方法聲明爲final ,能夠保證它們在使用中 不被改變。被聲明爲final 的變量必須在聲明時給定初值,而在之後的引用中只能讀取,不可修 改。被聲明爲 final 的方法也一樣只能使用,不能 重載
finally— 再異常處理時提供 finally 塊來執行任何清除操做。若是拋出一個異常,那麼相匹配 的 catch 子句就會 執行,而後控制就會進入 finally 塊(若是有的話)。(疑問諮詢QQ 1163551688)
finalize— 方法名。Java 技術容許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去以前作必 要的清理 工做。這個方法是由垃圾收集器在肯定這個對 象沒有被引用時對這個對象調用的。它是在 Object 類中 定義的 ,所以全部的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其餘清理工做。finalize() 方法是在垃圾收集器刪除對象以前對這個 對象調用的。
71. 如何處理幾十萬條併發數據?
答:用存儲過程或事務。取得最大標識的時候同時更新.. 注意主鍵不是自增量方式這種方法併發的時候是不會有重複主鍵的.. 取得最大標識要有一個存儲過程來獲取.
72.Session 有 什麼重大BUG , 微軟提出了什麼方法加以解決?
答:是iis 中因爲有進程回收機制,系統繁忙的話Session 會丟失,能夠用Sate server 或SQL Server 數據庫的方式存儲Session 不過這種方式比較慢,並且沒法捕獲Session 的END 事件。
73. 進程和線程的區別?
答:進程是系統進行資源分配和調度的單位;線程是CPU 調度和分派的單位,一個進程能夠有多個線程,這些線程共享這個進程的 資源。
74. 堆 和棧的區別?
答:
棧:由編譯器自動分配、釋放。在函數體中定義的變量一般 在棧上。
堆:通常由程序員分配釋放。用new 、malloc 等分配內存函數分配獲得的就是在堆上。
75. 成員變量和成員函數前加static 的做 用?
答:它們被稱爲常成員變量和常成員 函數,又稱爲類成員變量和類成員函數。分別用來反映類的狀態。好比類成員變量能夠用來統計類實例的數量,類成員函數負責這種統計的動做。
76.ASP 。NET 與ASP 相比,主要有哪些進步?
答:asp 解釋形,aspx 編譯型,性能提升,有利於保護源碼。
77. 產生一個int 數組,長度爲100 ,並向其中隨機插入1-100 ,而且不能重複。 int[] intArr=new int[100]; ArrayList myList=new ArrayList(); Random rnd=new Random(); while(myList.Count<100) { int num=rnd.Next(1,101); if(!myList.Contains(num)) myList.Add(num); } for(int i=0;i<100;i++) intArr[i]=(int)myList[i];