C# 一些面試試題的執行個體教程

來源:互聯網
上載者:User
最近一個搞NET開發的朋友離職了,想讓我給他找點關於NET的相關面試題,準備抱一下佛腳,迎接新的挑戰。

我趕緊找到以前檢索的各種寶典,試題,今天梳理一下關於NET的基礎知識點。

1、物件導向語言的三大特性:封裝、繼承、多態;

2、介面和類有什麼異同:

  不同點:

   ①介面不能直接執行個體化。

   ②介面只包含方法或屬性的聲明,不包含方法的實現。

   ③介面可以多繼承,類只能單繼承。

   ④表達的含義不同,介面主要定義一種規範,統一調用方法,也就是規範類,約束類,類是方法功能的實現和集合

 相同點:

   ①介面、類和結構都可以從多個介面繼承。

   ②介面類似於抽象基類:繼承介面的任何非抽象類別型都必須實現介面的所有成員。

   ③介面和類都可以包含事件、索引器、方法和屬性。

3、抽象類別和介面有什麼異同

  ①繼承:介面支援多繼承;抽象類別不能實現多繼承。

  ②表達的概念:介面用於規範,更強調契約,抽象類別用於共性,強調父子。抽象類別是一類事物的高度彙總,那麼對於繼承抽象類別的子類來說,對於抽象類別來說,屬於"Is A"的關係;而介面是定義行為規 範,強調“Can Do”的關係,因此對於實現介面的子類來說,相對於介面來說,是"行為需要按照介面來完成"。

  ③方法實現:對抽象類別中的方法,即可以給出實現部分,也可以不給出;而介面的方法(抽象規則)都不能給出實現部分,介面中方法不能加修飾符。

  ④子類重寫:繼承類對於兩者所涉及方法的實現是不同的。繼承類對於抽象類別所定義的抽象方法,可以不用重寫,也就是說,可以延用抽象類別的方法;而對於介面類所定義的方法或者屬性來說,在繼承類 中必須重寫,給出相應的方法和屬性實現。

  ⑤新增方法的影響:在抽象類別中,新增一個方法的話,繼承類中可以不用作任何處理;而對於介面來說,則需要修改繼承類,提供新定義的方法。

  ⑥介面可以作用於實值型別(枚舉可以實現介面)和參考型別;抽象類別只能作用於參考型別。

  ⑦介面不能包含欄位和已實現的方法,介面只包含方法、屬性、索引器、事件的簽名;抽象類別可以定義欄位、屬性、包含有實現的方法。

4、virtual、sealed、override和abstract的區別

  ①virtual申明虛方法的關鍵字,說明該方法可以被重寫

  ②sealed說明該類不可被繼承

  ③override重寫基類的方法

  ④abstract申明抽象類別和抽象方法的關鍵字,抽象方法不提供實現,由子類實現,抽象類別不可執行個體化。

5、重載(override)和重寫(overload)有什麼區別

  重載:當類包含兩個名稱相同但簽名不同(方法名相同,參數列表不相同)的方法時發生方法重載。用方法重載來提供在語義上完成相同而功能不同的方法。(一個類中、多個方法)

  重寫:在類的繼承中使用,通過覆寫子類方法可以改變父類虛方法的實現。(二個類以上)

6、結構體和類的區別

  ①結構體是實值型別,類是參考型別
  ②結構體不支援無慘建構函式,不支援解構函式,並且不能有protected修飾;
  ③結構體常用於資料存放區,類class多用於行為;
  ④類class需要用new關鍵字執行個體化對象,struct可以不適用new關鍵字;
  ⑤類class可以為抽象類別,struct不支援抽象;

7、out和ref的異同點

  ①ref要求參數在使用之前要顯式初始化,out要在方法內部初始化;

  ②out適合用在需要retrun多個傳回值的地方,而ref則用在需要被調用的方法修改調用者的引用的時候。

  ③ref是有進有出,out是只出不進;(ref可以把參數的數值傳遞進函數,但是out是要把參數清空,就是說你無法把一個數值從out傳遞進去的,out進去後,參數的數值為空白)

8、實值型別和參考型別的區別

  ①實值型別:就是一個包含實際資料的量。即當定義一個實值型別的變數時,C#會根據它所聲明的類型,以棧方式分配一塊大小相適應的儲存地區給這個變數,隨後對這個變數的讀或寫操作就直接在這塊記憶體 地區進行;

  ②參考型別:一個參考型別的變數不儲存它們所代表的實際資料,而是儲存實際資料的引用。
  參考型別分兩步建立:首先在棧上建立一個引用變數,然後在堆上建立對象本身,再把這個記憶體的控制代碼(也是記憶體的首地址)賦給引用變數;

9、什麼是拆箱和裝箱

  裝箱→實值型別轉換為參考型別,拆箱→參考型別轉換為實值型別。

10、裝箱和拆箱有什麼效能影響?怎麼解決呢?

  ①影響:都涉及到記憶體的分配和對象的建立,有較大的效能影響;

  ②解決:使用泛型

11、委託是什嗎?事件是不是委託?

  ①委託:類似於 C或 C++中的函數指標,允許將方法作為參數進行傳遞;(可以把一個方法作為參數代入另一個方法)

  ②事件是特殊的委託,事件內部是基於委託來實現的;

12、構造器Constructor是否可以被繼承?是否可以被Override?

  Constructor不可以被繼承,因此不能被重寫(Overriding),但可以被重載(Overloading).

13、是否可以整合String類?

  String類是final類所以不可以繼承string類。

14、當一個線程進入一個對象的方法後,其他線程是否可以進入該方法?

  不可以,一個對象的方法只能由一個線程訪問。

15、用最有效方法算出2乘以8等於幾?

  2<<3(左乘,右除)

16、Error和Exception有是區別?

  Error表示恢複不是不可能,但是很困難,Exception表示一種實際或實現問題,它表示程式運行正常不可以發生的。

17、UDP和TCP串連有和異同?

  ①TCP是傳輸控制通訊協定,提供的是連線導向的,是可靠的,位元組流服務,TCP提供逾時重撥,檢驗資料功能。

  ②UDP是使用者資料包通訊協定,是一個簡單的面向資料報的傳輸協議,是不可靠的串連。

18、new關鍵字的用法

 ①new 運算子 用於建立對象和調用建構函式。

②new 修飾符 用於向基類成員隱藏繼承成員。

③new 約束 用於在泛型聲明中約束可能用作型別參數的參數的類型。

19、Using關鍵字的用法

  ①引用命名空間;

  ②為命名空間或類型建立別名;(using + 別名 = 包括詳細命名空間資訊的具體的類型)

  ③釋放資源(關閉檔案流);

20、可訪問性層級有哪幾種

  ①pubic 訪問不受限制。

  ②protected 訪問僅限於包含類或從包含類派生的類型。

  ③internal 訪問僅限於當前程式集。

  ④protected internal 訪問僅限於從包含類派生的當前程式集或類型。

  ⑤private 訪問僅限於包含類型。

21、 一列數的規則如下: 1、1、2、3、5、8、13、21、34...... 求第30位元是多少, 用遞迴演算法實現。

22、冒泡排序

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.