1. 程式人生 > >.NET筆試題集(二)

.NET筆試題集(二)

自動 寫入 調試 多態 text 區別 靜態 textbox 傳輸數據

1.using關鍵字有什麽用?什麽是IDisposable?

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

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

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

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是用來顯示數據的

4.string str = null 與 string str = “”說明其中的區別。

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

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(推薦)

6.面向對象的語言具有________性._________性.________性

答:封裝.繼承.多態。

7.在.Net中所有可序列化的類都被標記為_____?

答:[serializable]

8.在.Net托管代碼中我們不用擔心內存漏洞,這是因為有了______?

答:GC。

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),它是許多應用程序所需的一套基本語言功能。

10.什麽是code-Behind技術。

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

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

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()。

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

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

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

c) 索引器沒有名字

d) 以上皆非

14. 要創建多文檔應用程序,需要將窗體的(d )屬性設為true。

a) DrawGrid;

b) ShowInTaskbar;

c) Enabled;

d) IsMdiContainer;

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

a) TreeNode;

b) int;

c) string;

d) TreeView;

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

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

b) XML 是一種簡單.與平臺無關並被廣泛采用的標準;

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

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

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不一樣。

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;}

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

a) void myCallBack(int x) ;

b) int receive(int num) ;

c) string receive(int x) ;

d) 不確定的;

20.StringBuilder 和 String 的區別?

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

如果要操作一個不斷增長的字符串,盡量不用String類,改用StringBuilder類。兩個類的工作原理不同:String類是一種傳統的修改字符串的方式,它確實可以完成把一個字符串添加到另一個字符串上的工作沒錯,但是在.NET框架下,這個操作實在是劃不來。因為系統先是把兩個字符串寫入內存,接著刪除原來的String對象,然後創建一個String對象,並讀取內存中的數據賦給該對象。這一來二去的,耗了不少時間。而使用System.Text命名空間下面的StringBuilder類就不是這樣了,它提供的Append方法,能夠在已有對象的原地進行字符串的修改,簡單而且直接。當然,一般情況下覺察不到這二者效率的差異,但如果你要對某個字符串進行大量的添加操作,那麽StringBuilder類所耗費的時間和String類簡直不是一個數量級的。

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

屬性 索引器

通過名稱標識。 通過簽名標識。

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

可以為靜態成員或實例成員。 必須為實例成員。

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

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

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

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" 表用運行時使用哪一個隱藏類

24.什麽是viewstate,能否禁用?是否所用控件都可以禁用?

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

25.你對web service的體會?

答:如果自己寫的一些程序也希望別人可以通過Web服務來使用,也可以把自己編寫的方法貼上標簽[WebMethed]來實現Web 服務。[是當編寫程序時,希望實現一些別的網站已經實現過的,也用Web服務可視成XML語言的編碼。可以使用別人的編碼生成的XML找到自己需要的信息,來實現自己編寫的程序的一些功能。

26.您在什麽情況下會用到虛方法?它與接口有什麽不同?

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

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

實現時,子類可以不重新定義虛方法,但如果一個類繼承接口,那必須實現這個接口。

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參數顯式傳遞到方法。

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)一個類可以有多個基類和多個基接口;

29.DataReader和DataSet的異同?

DataReader使用時始終占用SqlConnection,在線操作數據庫,每次只在內存中加載一條數據,所以占用的內存是很小的,是只進的. 只讀的

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

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

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

.NET筆試題集(二)