C#面試題整理2(不帶答案)

1、C# 理論

1.一、簡述 private、 protected、 public、 internal、protected internal 訪問修飾符和訪問權限html

1.二、簡述abstract、sealed類修飾符web

1.三、簡述C#成員修飾符sql

1.四、ADO.NET中的五個主要對象數據庫

1.五、列舉ASP.NET 頁面之間傳遞值的幾種方式和優缺點編程

1.六、C#中的委託是什麼?事件是否是一種委託?事件和委託的關係c#

1.七、重寫(override)與重載(overload)的區別windows

1.八、C#中索引器是否只能根據數字進行索引?是否容許多個索引器參數?安全

1.九、屬性和public字段的區別是什麼?調用set方法爲一個屬性設值,而後用get方法讀取出來的值必定是set進去的值嗎?服務器

1.十、三層架構架構

1.十一、MVC模式

1.十二、什麼是裝箱(boxing)和拆箱(unboxing)?

1.1三、什麼叫應用程序域(AppDomain) 

1.1四、CTS、CLS、CLR分別做何解釋

1.1五、在dotnet中類(class)與結構(struct)的異同?

1.1六、堆和棧的區別?

1.1七、能用foreach遍歷訪問的對象的要求

1.1八、GC是什麼? 爲何要有GC?

1.1九、String s = new String("xyz");建立了幾個String Object?

1.20、值類型和引用類型的區別?

1.2一、C#中的接口和類有什麼異同。

1.2二、abstract class和interface有什麼區別?

1.2三、是否能夠繼承String類?

1.2四、try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,何時被執行?

1.2五、new 關鍵字用法

1.2六、如何把一個Array複製到ArrayList裏

1.2七、描述線程與進程的區別?

1.2八、什麼是強類型,什麼是弱類型?哪一種更好些?爲何?

1.2九、什麼是反射?

1.30、int、DateTime、string是否能夠爲null?

1.3一、傳入某個屬性的set方法的隱含參數的名稱是什麼?

1.3二、C#支持多重繼承麼?

1.3三、C#中全部對象共同的基類是什麼?

1.3四、經過超連接怎樣傳遞中文參數?

1.3五、string、String;int、Int32;Boolean、bool的區別

1.3六、Server.Transfer和Response.Redirect的區別是什麼?

1.3七、不是說字符串是不可變的嗎?string s="abc";s="123"不就是變了嗎?

1.3八、是否能夠從一個static方法內部發出對非static方法的調用?

1.3九、.Net中會存在內存泄漏嗎,請簡單描述。

1.40、說出一些經常使用的類、接口,請各舉5個

1.4一、BS與CS的聯繫與區別。

1.4二、編寫一個單例(Singleton)類。

1.4三、什麼是sql注入?如何避免sql注入?

1.4四、說出一些數據庫優化方面的經驗?

1.4五、談談ViewState。談談對ASP.Net原理的理解。談談ASP.Net生命週期。

1.4六、post、get的區別

1.4七、Http默認的端口號是(80)、Ftp默認的端口號是(21)、SQLServer的默認端口號是(1433)

1.4八、運算符++a表示(先將a加1,而後表達式的值爲a加1後的值),a++表示(表達式的值爲a,而後a加1)。

1.4九、.Net Framework中的類是專門供C#調用的是嗎?

1.50、開放性問題:說出儘量多的基於.Net Framework的語言。

1.5一、.Net、ASP.Net、C#、VisualStudio之間的關係是什麼?

1.5二、AJAX解決什麼問題?如何使用AJAX?AJAX有什麼問題須要注意?項目中哪裏用到了AJAX?

1.5三、NET經過對各語言先編譯成( IL),而後再執行時用( JIT)將其編譯成本地平臺代碼,來實現異構平臺下對象的互操做。

1.5四、Application 、Cookie和 Session 兩種會話有什麼不一樣?

1.5五、開放式問題:你常常訪問的技術類的網站是什麼?

1.5六、你對.net的GC的理解

1.5七、請寫一個SQL語句:從user表中取出name列中的起始字符是「北京」的所有記錄

1.5八、若是不用VisualStudio,用哪一個命令行編譯C#程序?

1.5九、請你簡單的說明數據庫創建索引的優缺點

1.60、什麼是WEB服務控件?使用WEB服務控件有那些優點、劣勢?

1.6一、開放式問題:若是程序連不上SQLServer數據庫服務器服務器,你會怎麼排除這個故障?

1.6二、Http狀態碼各是什麼意思。

1.6三、MVC模式的優缺點

1.6四、什麼是Viewstate?它有什麼做用?

1.6五、ASP.Net頁面生命週期簡單描述

1.6六、存儲過程和sql語句的優缺點

1.6七、何時使用抽象類,何時用接口 

1.6八、C#中的堆和棧

1.6九、C# ref與out區別: 

1.70、你對泛型瞭解嗎?簡單說明一下泛型的有什麼好處?

1.7一、new有幾種用法 

1.7二、Session有什麼重大BUG,微軟提出了什麼方法加以解決? 

1.7三、<%# %> 和 <% %> 有什麼區別?

1.7四、DateTime.Parse(myString); 這行代碼有什麼問題?

1.7五、爲何不提倡catch(Exception) ,catch(Exception e){throw e;}和catch(Exception e){throw;}的區別,error和exception區別

1.7六、GET與POST的區別 

1.7七、Bind和Eval函數的區別

1.7八、Server.UrlEncode、HttpUtility.UrlDecode的區別 

1.7九、如何實現鏈接池

1.80、提升.NET的性能 

1.8一、簡述你對XML Web Service的原理的認識? 

1.82.什麼是受管制的代碼? 

1.83.net Remoting 的工做原理是什麼?

1.84.O/R Mapping 的原理 

1.85.remoting和webservice兩項技術的理解以及實際中的應用。 

1.86.out保留字怎麼使用,何時使用。

1.87.PDB是什麼東西? 在調試中它應該放在哪裏?

1.88.使用ASMX的XML Web服務與使用SOAP的.NET Remoting的區別?

1.89.從概念上闡述前期綁定(early-binding)和後期綁定(late-binding)的區別?

1.90.概述反射和序列化

1.91.XmlSerializer是如何工做的?使用這個類的進程須要什麼ACL權限?

1.92.XmlSerializer使用的針對屬性的模式有什麼好處?解決了什麼問題?

1.93.SQLSERVER服務器中,給定表 table1 中有兩個字段 ID、LastUpdateDate,ID表示更新的事務號,LastUpdateDate表示更新時的服務器時間,請使用一句SQL語句得到最後更新的事務號

1.94.在對象比較中,對象一致和對象相等分別是指什麼?a.Equals(b)和a == b同樣嗎?

1.95.請解釋一下IClonable

1.96.特性可以放到某個方法的參數上?若是能夠,這有什麼用?

1.97.WEB控件能夠激發服務端事件,請談談服務端事件是怎麼發生並解釋其原理?自動傳回是什麼?爲何要使用自動傳回。 

1.98.請解釋web.config文件中的重要節點 

1.99.請解釋什麼是上下文對象,在什麼狀況下要使用上下文對象 

1.100. 幾十上百萬行,如何快速查詢出表數據 

1.101.數據庫查詢優化: 

1.102.兩個表,寫查詢語句,根據兩個字段一個是升序,一個將序。 

1.10三、string與String的區別

1.10四、虛方法(virtual )和抽象方法(abstract)的區別?

1.10五、子類對父類中虛方法的處理有重寫(override)和覆蓋(new),請說明它們的區別?

1.10六、抽象類(abstract)和接口(interface)的區別

1.107.頁面生命週期?

1.108.頁面生命週期階段?
1.109.頁面生命週期事件?大概描述一下ASP.NET服務器控件的生命週期?

1.110.應用程序生命週期?

1.111.ASP.NET 頁面在何時產生?又在何時銷燬?

1.1十二、String str=new String("a")和String str = "a"有什麼區別?

1.11三、判斷字符串變量str是否爲空的一下三種方法哪一個性能更優:a、str=="";b、str==String.Empty;c、str.Length==0;?

補充:

若是你的簡歷上面寫「熟悉/瞭解C#」,那麼你就應該可以回答下面的這些基礎問題。

  1. 傳入某個屬性的set方法的隱含參數的名稱是什麼?
    value,它的類型和屬性所聲名的類型相同。
  2. 如何在C#中實現繼承?
    在類名後加上一個冒號,再加上基類的名稱。
  3. C#支持多重繼承麼?
    不支持。能夠用接口來實現。
  4. protected修飾的屬性/方法在何處能夠訪問?
    在繼承或間接繼承與這個類的子類中能夠訪問。
  5. 私有成員會被繼承麼?
    會,可是不能被訪問。因此看上去他們彷佛是不能被繼承的,但實際上確實被繼承了。
  6. 請描述一下修飾符protected internal。 
    protected internal修飾的屬性/方法只能在它的在同一個程序集(Assembly)中的子類被訪問。
  7. C#提供一個默認的無參數構造函數,當我實現了另一個有一個參數的構造函數時候,還想保留這個無參數的構造函數。這樣我應該寫幾個構造函數?
    兩個,一旦你實現了一個構造函數,C#就不會再提供默認的構造函數了,因此須要手動實現那個無參數構造函數。
  8. C#中全部對象共同的基類是什麼?
    System.Object.
  9. 重載和覆寫有什麼區別?
    重載提供了對一個方法簽名的不一樣參數調用的實現。覆寫提供了子類中改變父類方法行爲的實現。
  10. 在方法定義中,virtual有什麼含意? 
    virtual修飾的方法能夠被子類覆寫。
  11. 可以將非靜態的方法覆寫成靜態方法麼?
    不能,覆寫方法的簽名必須與被覆寫方法的簽名保持一致,除了將virtual改成override。
  12. 能夠覆寫私有的虛方法麼?
    不能夠,甚至子類中沒法訪問父類中的私有方法。
  13. 可以阻止某一個類被其餘類繼承麼? 
    能夠,使用關鍵字sealed。
  14. 可以實現容許某個類被繼承,但不容許其中的某個方法被覆寫麼? 
    能夠,標記這個類爲public,並標記這個方法爲sealed。
  15. 什麼是抽象類(abstract class)?
    一種不能夠被實例化的類。抽象類中通常含有抽象方法,固然也可有具體實現。繼承類只有實現過全部抽象類的抽象方法後才能被實例化。
  16. 什麼時候必須聲明一個類爲抽象類? 
    當這個類中包含抽象方法時,或是該類並無徹底實現父類的抽象方法時。
  17. 接口(interface)是什麼?
    只含有共有抽象方法(public abstract method)的類。這些方法必須在子類中被實現。
  18. 爲何不能指定接口中方法的修飾符? 
    接口中的方法用來定義對象之間通訊的契約,指定接口中的方法爲私有或保護沒有意義。他們默認爲公有方法。
  19. 能夠繼承多個接口麼? 
    固然。
  20. 那麼若是這些接口中有重複的方法名稱呢? 
    這種狀況中你能夠決定如何實現。固然須要特別得當心。可是在編譯環節是沒有問題的。
  21. 接口和抽象類的區別是什麼? 
    接口中全部方法必須是抽象的,而且不能指定方法的訪問修飾符。抽象類中能夠有方法的實現,也能夠指定方法的訪問修飾符。
  22. 如何區別重載方法? 
    不一樣的參數類型,不一樣的參數個數,不一樣的參數順序。
  23. const和readonly有什麼區別?
    const關鍵字用來聲明編譯時常量,readonly用來聲明運行時常量。
  24. System.String 和System.StringBuilder有什麼區別?
    System.String是不可變的字符串。System.StringBuilder存放了一個可變的字符串,並提供一些對這個字符串修改的方法。 

 


若是你的簡歷上面說「精通.NET」,那麼下面的問題應該大均可以給出較完美的答案。

注:對於每一個判斷是非問題,都要考慮「爲何」與「爲何不」。

  1. Thread和Process之間有什麼區別?.NET新引入了Application Domain的概念,這樣他們三個之間有什麼區別?引入了Application Domain會帶來一些潛在的問題麼?
  2. Windows Service與普通的EXE在執行過程當中有什麼區別?
  3. 一個進程能夠訪問的Windows地址空間有多大?等於系統的虛擬內存大小麼?這兩方面將對系統的設計產生什麼樣的影響?
  4. EXE和DLL之間的區別是什麼?在系統設計中應該如何選擇使用它們?
  5. 普通的EXE與.NET EXE的執行過程有什麼不一樣?
  6. 什麼是弱類型,什麼是強類型?在系統設計中應該首先考慮使用哪一種類型?
  7. PDB文件是做什麼用的?裏面包含了什麼信息?
  8. Cycloramic Complexity是什麼?爲何它很重要?
  9. 爲建立一個critical section以訪問某個變量書寫一個標準的lock() 並加上double check。
  10. 爲某個對象實現標準的Dispose模式。
  11. 什麼是FullTrust? 存在於GAC中的 assembly 擁有FullTrust麼?
  12. 下面這個命令是作什麼的?gacutil /l | find /i 「system」
  13. 下面這個命令是做什麼的? sn -t something.dll
  14. 跨防火牆的 DCOM必須打開哪一個端口?端口135是用來作什麼的?
  15. 有什麼辦法能夠與現有unmanaged code集成?在集成的時候應該考慮什麼問題?
  16. 簡要解釋一下OOP與SOA都是用來做什麼的?
  17. XmlSerializer是如何工做的?進程運行XmlSerializer時候須要什麼樣的ACL權限?
  18. 在系統設計時,什麼時候應該使用try catch?什麼時候須要避免使用?
  19. Debug.Write()和Trace.Write()之間有什麼區別?兩者分別應該用於何處?
  20. Debug Build和Release Build有什麼區別?在執行效率上有什麼明顯的區別麼?
  21. JIT是針對Assembly仍是Method發生的?解釋一下爲何.NET的設計者要這樣作?
  22. 簡要描述一下GC的執行過程。
  23. 應該如何選擇使用abstract class仍是interface?
  24. 在設計一個自定義類型時應如何選擇使用Value Type仍是Reference Type?
  25. 對於Value Type和Reference Type,a.Equals(b)的默認實現方式有什麼不一樣?
  26. .NET中爲何不提供默認的deep copy?若是須要,要如何實現deep copy?
  27. 相對於.NET 1.1,.NET2.0爲了不過分的boxing/unboxing形成的系統開銷提供了哪些支持?
  28. String是Value Type仍是Reference Type?爲何.NET中的String對象被設置成immutable?

 

回到目錄

2、C# 筆試

2.1.using關鍵字有什麼用?什麼是IDisposable?

using能夠聲明namespace的引入,還能夠實現非託管資源的釋放,實現了IDisposiable的類在using中建立,using結束後會自動調用該對象的Dispose方法,釋放資源。using其實等價於try……finally,用起來更方便。

 

2.2.Assembly.Load("foo.dll"); 這句話是否正確?

錯誤,正確的應該是Assembly.Load("foo"); 或者Assembly.LoadFrom("foo.dll");

 

2.3.XML 與 HTML 的主要區別

1)XML是區分大小寫字母的,HTML不區分。

2)在HTML中,若是上下文清楚地顯示出段落或者列表鍵在何處結尾,那麼你能夠省略</p>或者</li>之類的結束 標記。在XML中,絕對不能省略掉結束標記。

HTML:<img src="1.jpg"><br><br>

XML:<img src="1.jpg"></img><br/><br/>

3)在XML中,擁有單個標記而沒有匹配的結束標記的元素必須用一個 / 字符做爲結尾。這樣分析器就知道不用 查找結束標記了。

4)在XML中,屬性值必須分裝在引號中。在HTML中,引號是可用可不用的。

5)在HTML中,能夠擁有不帶值的屬性名。在XML中,全部的屬性都必須帶有相應的值。

XML是用來存儲和傳輸數據的,HTML是用來顯示數據的

 

2.4.string str = null 與 string str = 「」說明其中的區別。

答:string str = null 是不給他分配內存空間,而string str = \"\" 給它分配長度爲空字符串的內存空間。 string str = null沒有string對象,string str = 「」有一個字符串對象。

 

2.5.寫出一條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)

3:select id,row_number() over (order by id) as rowNum from A where rowNum between 31 and 40(推薦)

 

2.6.面向對象的語言具備________性._________性.________性

答:封裝.繼承.多態。

 

2.7.在.Net中全部可序列化的類都被標記爲_____?

答:[serializable]

 

2.8.在.Net託管代碼中咱們不用擔憂內存漏洞,這是由於有了______?

答:GC。

 

2.9.什麼叫應用程序域?什麼是受管制的代碼?什麼是託管代碼?什麼是強類型系統?什麼是裝箱和拆箱?什麼是重載?CTS.CLS和CLR分別做何解釋?

應用程序域爲安全性.可靠性.版本控制以及卸載程序集提供了隔離邊界。應用程序域一般由運行庫宿主建立,運行庫宿主負責在運行應用程序以前引導公共語言運行庫。應用程序域提供了一個更安全.用途更廣的處理單元,公共語言運行庫可以使用該單元提供應用程序之間的隔離。

受管制的代碼:.Net環境中運行的任何代碼都是受管制的代碼(managed code),.Net外部的代碼也運行在windows上,這些代碼稱爲未受管制的代碼(unmanaged code)。

使用基於公共語言運行庫的語言編譯器開發的代碼稱爲託管代碼;託管代碼具備許多優勢,例如:跨語言集成.跨語言異常處理.加強的安全性.版本控制和部署支持.簡化的組件交互模型.調試和分析服務等。

強類型語言是可以禁止任何違反類型系統的代碼的語言,或者說是可以捕獲全部違反類型系統的錯誤的語言。咱們說C++相對於C是強類型的,是由於C++禁止了一些C中的隱式轉換,好比將void*轉換爲任意的指針類型。

裝箱和拆箱使值類型可以被視爲對象。對值類型裝箱將把該值類型打包到 Object 引用類型的一個實例中。這使得值類型能夠存儲於垃圾回收堆中。拆箱將從對象中提取值類型。

每一個類型成員都有一個惟一的簽名。方法簽名由方法名稱和一個參數列表(方法的參數的順序和類型)組成。只要簽名不一樣,就能夠在一種類型內定義具備相同名稱的多種方法。當定義兩種或多種具備相同名稱的方法時,就稱做重載。

CTS通用類型系統 (common type system)

一種肯定公共語言運行庫如何定義.使用和管理類型的規範。

CLR公共語言運行庫

.NET Framework 提供了一個稱爲公共語言運行庫的運行時環境,它運行代碼並提供使開發過程更輕鬆的服務。

CLS公共語言規範

要和其餘對象徹底交互,而無論這些對象是以何種語言實現的,對象必須只向調用方公開那些它們必須與之互用的全部語言的通用功能。爲此定義了公共語言規範 (CLS),它是許多應用程序所需的一套基本語言功能。

 

2.10.什麼是code-Behind技術。

就是代碼隱藏,在ASP.NET中經過ASPX頁面指向CS文件的方法實現顯示邏輯和處理邏輯的分離,這樣有助於web應用程序的建立。好比分工,美工和編程的能夠個幹各的,不用再像之前asp那樣都代碼和html代碼混在一塊兒,難以維護。

 

2.11.接口是一種引用類型,在接口中能夠聲明方法.屬性.索引器和事件,但不能夠聲明公有的域或私有的成員變量。

 

 

2.12. 在ADO.NET中,對於Command對象的ExecuteNonQuery()方法和ExecuteReader()方法,下面敘述錯誤的是(c)。

 a) insert.update.delete等操做的Sql語句主要用ExecuteNonQuery()方法來執行;

b) ExecuteNonQuery()方法返回執行Sql語句所影響的行數。

 c) Select操做的Sql語句只能由ExecuteReader()方法來執行;

 d) ExecuteReader()方法返回一個DataReder對象;

解答:ExecuteScalar→select getdate()。

 

 

2.13.下列關於C#中索引器理解正確的是(c )

 a) 索引器的參數必須是兩個或兩個以上

 b) 索引器的參數類型必須是整數型

 c) 索引器沒有名字

 d) 以上皆非

 

2.14. 要建立多文檔應用程序,須要將窗體的(d )屬性設爲true。

a) DrawGrid;

b) ShowInTaskbar;

c) Enabled;

d) IsMdiContainer;

 

2.15.若是設treeView1=new TreeView(),則treeView1.Nodes.Add("根節點")返回的是一個 (a)類型的值。

a) TreeNode;

b) int;

c) string;

d) TreeView;

 

2.16.下面關於XML的描述錯誤的是(d)。

a) XML提供一種描述結構化數據的方法;

b) XML 是一種簡單.與平臺無關並被普遍採用的標準;

c) XML文檔可承載各類信息;

d) XML只是爲了生成結構化文檔;

 

2.17.如下的C#代碼,試圖用來定義一個接口:

 

public interface IFile

{int A;int delFile()

{

   A = 3;

}void disFile();

}

 

 

關於以上的代碼,如下描述錯誤的是(d )。

a) 以上的代碼中存在的錯誤包括:不能在接口中定義變量,因此int A代碼行將出現錯誤;

b) 以上的代碼中存在的錯誤包括:接口方法delFile是不容許實現的,因此不能編寫具體的實現函數;

c) 代碼void disFile();聲明無錯誤,接口能夠沒有返回值;

d) 代碼void disFile();應該編寫爲void disFile(){};空和null不同。

 

2.18.在ASP.NET中有Button控件myButton,要是單擊控件時,導航到其餘頁面http://www.abc.com, 正確的代碼爲( c)。

a) private void myButton_Click(object sender, System.EventArgs e){Redirect(「http://www.abc.com」);}

b) private void myButton_Click(object sender, System.EventArgs e){Request.Redirect(「http://www.abc.com」);}

c) private void myButton_Click(object sender, System.EventArgs e){Reponse.Redirect(「http://www.abc.com」);}

d) private void myButton_Click(object sender, System.EventArgs e){Request.Redirect(「http://www.abc.com」);return true;}

 

2.19.聲明一個委託public delegate int myCallBack(int x); 則用該委託產生的回調方法的原型應該是(b )。

a) void myCallBack(int x) ;

b) int receive(int num) ;

c) string receive(int x) ;

d) 不肯定的;

 

2.20.StringBuilder 和 String 的區別?

答:String 在進行運算時(如賦值.拼接等)會產生一個新的實例,而 StringBuilder 則不會。因此在大量字符串拼接或頻繁對某一字符串進行操做時最好使用 StringBuilder,不要使用 String

若是要操做一個不斷增加的字符串,儘可能不用String類,改用StringBuilder類。兩個類的工做原理不一樣:String類是一種傳統的修改字符串的方式,它確實能夠完成把一個字符串添加到另外一個字符串上的工做沒錯,可是在.NET框架下,這個操做實在是划不來。由於系統先是把兩個字符串寫入內存,接着刪除原來的String對象,而後建立一個String對象,並讀取內存中的數據賦給該對象。這一來二去的,耗了很多時間。而使用System.Text命名空間下面的StringBuilder類就不是這樣了,它提供的Append方法,可以在已有對象的原地進行字符串的修改,簡單並且直接。固然,通常狀況下覺察不到這兩者效率的差別,但若是你要對某個字符串進行大量的添加操做,那麼StringBuilder類所耗費的時間和String類簡直不是一個數量級的。

 

2.21.請敘述屬性與索引器的區別。 

屬性 索引器

經過名稱標識。 經過簽名標識。

經過簡單名稱或成員訪問來訪問。 經過元素訪問來訪問。

能夠爲靜態成員或實例成員。 必須爲實例成員。

屬性的 get 訪問器沒有參數。 索引器的 get 訪問器具備與索引器相同的形參表。

屬性的 set 訪問器包含隱式 value 參數。 除了 value 參數外,索引器的 set 訪問器還具備與索引器相同的形參表。

 

2.22.請敘述const與readonly的區別。

const 關鍵字用於修改字段或局部變量的聲明。它指定字段或局部變量的值不能被修改。常數聲明引入給定類型的一個或多個常數。

const數據成員的聲明式必須包含初值,且初值必須是一個常量表達式。由於它是在編譯時就須要徹底評估。

const成員可使用另外一個const成員來初始化,前提是二者之間沒有循環依賴。

readonly在運行期評估賦值,使咱們得以在確保「只讀訪問」的前提下,把object的初始化動做推遲到運行期進行。

readonly 關鍵字與 const 關鍵字不一樣: const 字段只能在該字段的聲明中初始化。readonly 字段能夠在聲明或構造函數中初始化。所以,根據所使用的構造函數,readonly 字段可能具備不一樣的值。另外,const 字段是編譯時常數,而 readonly 字段可用於運行時常數。

readonly 只能在聲明時或者構造函數裏面初始化,而且不能在 static 修飾的構造函數裏面。

參考資料:

http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html

http://www.cnblogs.com/jams742003/archive/2010/03/23/1692913.html

http://www.cnblogs.com/wayfarer/archive/2006/04/27/386658.html

 

2.23.請解釋ASP。NET中的web頁面與其隱藏類之間的關係?

一個ASP.NET頁面通常都對應一個隱藏類,通常都在ASP.NET頁面的聲明中指定了隱藏類例如一個頁面Tst1.aspx的頁面聲明以下

<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>

Codebehind="Tst1.aspx.cs" 代表經編譯此頁面時使用哪個代碼文件,Inherits="T1.Tst1" 表用運行時使用哪個隱藏類

 

2.24.什麼是viewstate,可否禁用?是否所用控件均可以禁用?

Viewstate是保存狀態的一種機制,EnableViewState屬性設置爲false便可禁用。最有力的舉例子:Label.TextBox在禁用ViewState後不一樣的表現來講明。

 

2.25.你對web service的體會?

答:若是本身寫的一些程序也但願別人能夠經過Web服務來使用,也能夠把本身編寫的方法貼上標籤[WebMethed]來實現Web 服務。[是當編寫程序時,但願實現一些別的網站已經實現過的,也用Web服務可視成XML語言的編碼。可使用別人的編碼生成的XML找到本身須要的信息,來實現本身編寫的程序的一些功能。

 

2.26.您在什麼狀況下會用到虛方法?它與接口有什麼不一樣?

答案:子類從新定義父類的某一個方法時,必須把父類的方法定義爲virtual

在定義接口中不能有方法體,虛方法能夠。

實現時,子類能夠不從新定義虛方法,但若是一個類繼承接口,那必須實現這個接口。

 

2.27.不定項選擇:

(1) 如下敘述正確的是: B C

A. 接口中能夠有虛方法。B. 一個類能夠實現多個接口。 C. 接口不能被實例化。 D. 接口中能夠包含已實現的方法。

 

(2) 從數據庫讀取記錄,你可能用到的方法有:B C D

A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader

 

(3)對於一個實現了IDisposable接口的類,如下哪些項能夠執行與釋放或重置非託管資源相關的應用程序定義的任務?(多選) ( ABC )

A.Close B.Dispose C.Finalize D.using E.Quit

 

(4)如下關於ref和out的描述哪些項是正確的?(多選) ( ACD )

A.使用ref參數,傳遞到ref參數的參數必須最早初始化。

B.使用out參數,傳遞到out參數的參數必須最早初始化。

C.使用ref參數,必須將參數做爲ref參數顯式傳遞到方法。

D.使用out參數,必須將參數做爲out參數顯式傳遞到方法。

 

2.28.單項選擇:

1)下列選項中,(C)是引用類型。

a)enum類型 b)struct類型 c)string類型 d)int類型

 

2).關於ASP.NET中的代碼隱藏文件的描述正確的是(C)

a)Web窗體頁的程序的邏輯由代碼組成,這些代碼的建立用於與窗體交互。編程邏輯惟一與用戶界面不一樣的文件中。該文件稱做爲「代碼隱藏」文件,若是用C#建立,該文件將具備「.ascx.cs」擴展名。

b)項目中全部Web窗體頁的代碼隱藏文件都被編譯成.EXE文件。

c)項目中全部的Web窗體頁的代碼隱藏文件都被編譯成項目動態連接庫(.dll)文件。

d)以上都不正確。

 

3).下列描述錯誤的是(D)

a)類不能夠多重繼承而接口能夠;

b)抽象類自身能夠定義成員而接口不能夠;

c)抽象類和接口都不能被實例化;

d)一個類能夠有多個基類和多個基接口;

 

2.29.DataReader和DataSet的異同?

DataReader使用時始終佔用SqlConnection,在線操做數據庫,每次只在內存中加載一條數據,因此佔用的內存是很小的,是隻進的. 只讀的

DataSet則是將數據一次性加載在內存中.拋棄數據庫鏈接..讀取完畢即放棄數據庫鏈接(非鏈接模式),將數據所有加載在內存中.因此比較消耗內存...可是確比DataReader要靈活..能夠動態的添加行,列,數據.對數據庫進行 回傳更新操做(動態操做讀入到內存的數據)

 

2.30.public static const; int A = 1;這段代碼有錯誤麼?

錯誤:const不能被修飾爲static ;由於定義爲常量 (const )後就是靜態的(static )。

 

2.3一、下面程序的執行結果是什麼?

int i = 10;

Console.WriteLine(i++);

Console.WriteLine(++i);

Console.WriteLine(i=20);

 

答案:

10

12

20

 

2.3二、下列哪一個名詞和WebService不直接相關?(B)

A、UDDI

B、GUID

C、WSDL

D、SOAP

SOAP和HTTP的關係:SOAP基於Http協議的,和普通網頁不一樣的是網頁返回HTML,SOAP則是符合SOAP協議的XML數據。

 

 

2.3三、下面程序的執行結果是什麼?

int i = 10;if (i <=0);

Console.WriteLine("i必須大於0");

Console.WriteLine("ok");

 

答案:

i必須大於0

ok

解答:注意if (i <=0)後面的「;」,因爲有了「;」,因此Console.WriteLine("i必須大於0")再也不是和if一塊兒的一部分,而是獨立的語句。for循環也是如此。

 

2.3四、下面程序的執行結果是什麼?

 

static void Main(string[] args)

{

    Console.WriteLine(Calc());

    Console.ReadKey();

}

static int Calc()

{

    int i = 0;

    try

    {

        return i;

    }

    finally

    {

        Console.WriteLine("finally");

        i++;

    }

}

 

 

答案:

finally

0

解答:return先執行,finally後執行,因此return的值是沒有i++以前的0。注意並非return的時候函數真的就「返回、執行結束」了,return只是標記函數的返回值是0,標記完了還會執行finally中的代碼,只有finally中的代碼執行完成後函數才真正的返回。

 

 2.3五、在下述選項時,沒有構成死循環的程序是 (C)

A.int i=100;while (1) { i=i%100+1; if (i>100) break; }

B.for (;;);

C.int k=1000; do { ++k; }while(k>=10000);

D.int s=36; while (s);--s;

 

2.3六、下列哪一個是和數據庫訪問技術關係不大的技術(C)

A、SQLHelper

B、EnterPrise Library

C、AppDomain

D、Linq

 

2.3七、下列哪些說法是錯誤的(AC)

A、將bmp格式的文件修改成jpg是修改圖片格式最簡單的方法

B、將QQ動態表情顯示在網頁上用gif格式比較好

C、將bmp格式的圖片放到網頁中能夠優化網站速度

D、png格式用在網頁中能夠實現透明的效果。

答案:A、C。A錯誤是由於修改文件的後綴並無真的修改文件的格式,要使用Photoshop、mspaint等圖片處理工具進行轉換才能夠。C錯誤是由於在網頁中不能使用bmp圖片。

 

2.3八、從如下簡寫中任選一個簡單描述

OA(Office Automation):辦公自動化

MIS(Managment Information system):管理信息系統

HRM(Human Resource Managment):人力資源管理,包括員工管理、薪資管理、入職管理、離職管理、報銷管理、請假管理等

CRM(Customer Relation Managment):客戶關係管理系統,包括客戶管理、客戶關懷、客戶回訪、投訴管理、諮詢管理、報修管理等

KM(Knowledge Managment):知識管理

 

2.3九、下面程序的執行結果是什麼?

 

public struct Point

{

    public int x;

    public int y;

    public Point(int x, int y)

    {

        this.x = x;

        this.y = y;

    }

}

Point p1 = new Point(100, 100);

Point p2 = p1;

p1.x = 200;

Console.WriteLine("{0},{1}", p1.x, p2.x);

 

 

答案:

200,100

解答:結構體是複製傳遞的。

相關文章
相關標籤/搜索