C#面試解答題

來源:互聯網
上載者:User
C#面試題解答(一)

 小弟最近在CSDN上找的C#面試題目,自己做了一下把題目和答案附上來,希望對大家有用。如有錯誤的地方還望大家指教!
 
1、C#中 property 與 attribute的區別,他們各有什麼用處,這種機制的好處在哪裡?

    property和attribute漢語都稱之為屬性。不過property是指類向外提供的資料區域。而attribute則是描述對象在編譯時間或運行時屬性的。這兩者是有本質區別的。

2、講一講你理解的web service,在dot net framework中,怎麼很好的結合xml?(講概念就行了)

    從表面上看,Web Service就是一個應用程式,它向外界暴露出一個能夠通過Web進行調用的API。這就是說,你能夠用編程的方法通過Web調用來實現某個功能的應用程式。從深層次上看,Web Service是一種新的Web應用程式分支,它們是自包含、自描述、模組化的應用,可以在網路(通常為Web)中被描述、發布、尋找以及通過Web來調用。可擴充的標記語言XML是Web Service平台中表示資料的基本格式。除了易於建立和易於分析外,XML主要的優點在於它既與平台無關,又與廠商無關。XML是由全球資訊網協會(W3C)建立,W3C制定的XML SchemaXSD定義了一套標準的資料類型,並給出了一種語言來擴充這套資料類型。Web Service平台是用XSD來作為資料類型系統的。當你用某種語言如VB.NET或C#來構造一個Web Service時,為了符合Web Service標準,所有你使用的資料類型都必須被轉換為XSD類型。如想讓它使用在不同平台和不同軟體的不同組織間傳遞,還需要用某種東西將它封裝起來。這種東西就是一種協議,如 SOAP。

 3. C#, Java 和 c++的特點,有什麼相同的地方,不同的地方,C#分別從c++和java中吸取了他們那些優點?

    C#看起來與Java有著驚人的相似;它包括了諸如單一繼承,介面,與Java幾乎同樣的文法,和編譯成中間代碼再啟動並執行 過程.但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(元件物件模型)是直接整合。
微軟c#語言定義主 要是從C和C++繼承而來的,而且語言中的許多元素也反映了這一點.C#在設計者從C++繼承的可選選項方面比Java要廣泛一些(比如說 structs),它還增加了自己新的特點(比方說原始碼版本定義).

C#從Java繼承而來的特點

類:在C#中類的申明與Java很相似。特點看起來與Java相比沒有變化.布爾運算:條件運算式的結果是布林值資料型別,布林值資料型別是這種語言中獨立的一種資料類型.從布爾類型到其他類型沒有 直接的轉換過程.布爾常量true和false是C#中的關鍵字.錯誤處理:如Java中那樣,通過拋出和捕捉異常對象來管理錯誤處理過程.記憶體管理:由 底層.NET架構進行自動記憶體記憶體回收.

C#從C和C++繼承的特點

編譯:程式直接編譯成標準的二進位可執行形式.

結構體:一個C#的結構體與C++的結構體是相似的,因為它能夠包含資料申明和方法.但是,不象C++,C#結構體與類是不同的而且不支援繼承.但是,與Java相同的是,一個結構體可以實現介面.
先行編譯:C#中存在先行編譯指令支援條件編譯,警告,錯誤報表和編譯行控制. #error

C#專屬的特點
中間代碼:微軟在使用者選擇何時MSIL應該編譯成機器碼的時候是留了很大的餘地.微軟公司很小心的聲稱MSIL不是解釋性的,而是被編譯成了機器碼.它也明 白許多--如果不是大多數的話--程式員認為Java程式要不可避免的比C編寫的任何東西都要慢.而這種實現方式決定了基於MSIL的程式(指的是用 C#,Visual Basic,"Managed C++"--C++的一個符合CLS的版本--等語言編寫的程式)將在效能上超過"解釋性的"Java代碼.當然,這一點還需要得到事實證明,因為C#和 其他產生MSIL的編譯器還沒有發布.但是Java JIT編譯器的普遍存在使得Java和C#在效能上相對相同.象"C#是編譯語言而Java是解釋性的,"之類的聲明只是商業技巧.Java的中間代碼和 MSIL都是中間的彙編形式的語言,它們在運行時或其它的時候被編譯成機器代碼.

命名空間中的申明:當你建立一個程式的時候,你在一個命名空間裡建立了一個或多個類.同在這個命名空間裡(在類的外面)你還有可能聲明介面,枚舉類型和結構體.必須使用using關鍵字來引用其他命名空間的內容.
基本的資料類型:C#擁有比C,C++或者Java更廣泛的資料類型.這些類型是bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double,和decimal.象Java一樣,所有這些類型都有一個固定的大小.又象C和C++一樣,每個資料類型都有有符號和無符號兩種類型.與 Java相同的是,一個字元變數包含的是一個16位的Unicode字元.C#新的資料類型是decimal資料類型,對於貨幣資料,它能存放28位10 進位數字.

兩個基本類:一個名叫object的類是所有其他類的基類.而一個名叫string的類也象object一樣是這個語言的一部分.作為語言的一部分存在意味著編譯器有可能使用它--無論何時你在程式中寫入一句帶引號的字串,編譯器會建立一個string對象來儲存它.
參數傳遞:方法可以被聲明接受可變數目的參數.預設的參數傳遞方法是對基礎資料型別 (Elementary Data Type)進行值傳遞.ref關鍵字可以用來強迫一個變數通過引用傳遞,這使得一個變數可以接受一個傳回值.out關鍵字也能聲明引用傳遞過程,與ref不同的地方是,它指明這個參數並不需要初始值.
與COM 的整合:C#對Windows程式最大的賣點可能就是它與COM的無縫整合了,COM就是微軟的Win32組件技術.實際上,最終有可能在任何.NET語 言裡編寫COM客戶和伺服器端.C#編寫的類可以子類化一個以存在的COM組件;產生的類也能被作為一個COM組件使用,然後又能使用,比方說, JScript語言子類化它從而得到第三個COM組件.這種現象的結果是導致了一個運行環境的產生,在這個環境裡的組件是網路服務,可用用任何.NET語 言子類化.
索引下標:一個索引與屬性除了不使用屬性名稱來引用類成員而是用一個方括弧中的數字來匿名引用(就象用數組下標一樣)以外是相似的.
代理和反饋:一個代理對象包括了訪問一個特定對象的特定方法所需的資訊.只要把它當成一個聰明的方法指標就行了.代理對象可以被移動到另一個地方,然後可以 通過訪問它來對已存在的方法進行型別安全的調用.一個反饋方法是代理的特例.event關鍵字用在將在事件發生的時候被當成代理調用的方法聲明中.

C#面試題解答(二) 4、C#中的委託是什嗎?事件是不是一種委託?

委託是一個可以對方法進行引用的類。與其他的類不同,委託類具有一個簽名,並且它只能對與其簽名匹配的方法進行引用。這樣,委託就等效於一個型別安全函數指標或一個回調。事件是一種委託。

5、ADO.NET相對於ADO等主要有什麼改進?

ADO以Recordset儲存,而ADO.NET則以DataSet表示。Recordset看起來更像單表,如果讓Recordset以多表的方式表示就必須在SQL中進行多表串連。反之,DataSet可以是多個表的集合。ADO 的運作是一種線上方式,這意味著不論是瀏覽或更新資料都必須是即時的。ADO.NET則使用離線方式,在訪問資料的時候ADO.NET會利用XML製作資料的一份幅本,ADO.NET的資料庫連接也只有在這段時間需要線上。

由於ADO使用COM技術,這就要求所使用的資料類型必須符合COM規範,而ADO.NET基於XML格式,資料類型更為豐富並且不需要再做COM編排導致的資料類型轉換,從而提高了整體效能。

6、介面和抽象類別有什麼區別?你選擇使用介面和抽象類別的依據是什嗎?

 介面是一個純粹的抽象類別,沒有任何實際的東西,只是定義了一個架構,而抽象類別裡面可以有實際的一個方法,並不要求所有的方法都是抽象的。可以實現一個介面中的所有方法,也可以繼承一個抽象的類,然後覆寫其中的方法。介面一般只有方法,而沒有資料成員或屬性。抽象類別有方法,也有資料成員或屬性,一般情況下,優先考慮用介面,只有當可能要訪問到資料成員或屬性時,用抽象類別。

 7、談談final, finally, finalize的區別。

final 修飾符用於指定類不能擴充或者方法或屬性不能重寫。它將防止其他類通過重寫重要的函數來更改該類的行為。帶有 final 修飾符的方法可以由衍生類別中的方法來隱藏或重載。

finally 塊用於清除在 try 塊中分配的任何資源。控制總是傳遞給 finally 塊,與 try 塊的存在方式無關。

finalize允許 Object 在“記憶體回收”回收 Object 之前嘗試釋放資源並執行其他清理操作。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.