首頁 後端開發 C#.Net教程 C# 一些面試題的實例教程

C# 一些面試題的實例教程

Jun 23, 2017 pm 02:30 PM
.net 總結 相關 試題 面試

最近一個搞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、冒泡排序

 

 

以上是C# 一些面試題的實例教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

總結Linux系統中system()函數的用法 總結Linux系統中system()函數的用法 Feb 23, 2024 pm 06:45 PM

Linux下system()函數的總結在Linux系統中,system()函數是一個非常常用的函數,它可以用來執行命令列指令。本文將對system()函數進行詳細的介紹,並提供一些特定的程式碼範例。一、system()函數的基本用法system()函數的聲明如下:intsystem(constchar*command);其中,command參數是一個字符

聊聊如何選擇一個最好的Node.js Docker映像? 聊聊如何選擇一個最好的Node.js Docker映像? Dec 13, 2022 pm 08:00 PM

選擇一個Node的Docker映像看起來像是小事,但是映像的大小和潛在漏洞可能會對你的CI/CD流程和安全造成重大的影響。那我們要如何選擇一個最好Node.js Docker映像呢?

如何解決跨域?常見解決方案淺析 如何解決跨域?常見解決方案淺析 Apr 25, 2023 pm 07:57 PM

跨域是開發中常會遇到的場景,也是面試中常會討論的問題。掌握常見的跨域解決方案及其背後的原理,不僅可以提高我們的開發效率,還能在面試中表現的更加

C#的就業前景如何 C#的就業前景如何 Oct 19, 2023 am 11:02 AM

無論您是初學者還是有經驗的專業人士,掌握C#將為您的職業發展鋪平道路。

分享幾個.NET開源的AI和LLM相關專案框架 分享幾個.NET開源的AI和LLM相關專案框架 May 06, 2024 pm 04:43 PM

當今人工智慧(AI)技術的發展如火如荼,它們在各個領域都展現了巨大的潛力和影響力。今天大姚給大家分享4個.NET開源的AI模型LLM相關的專案框架,希望能為大家提供一些參考。 https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel是一種開源的軟體開發工具包(SDK),旨在將大型語言模型(LLM)如OpenAI、Azure

golang框架面試題集錦 golang框架面試題集錦 Jun 02, 2024 pm 09:37 PM

Go框架是一組擴充Go內建程式庫的元件,提供預製功能(例如網路開發和資料庫操作)。受歡迎的Go框架包括Gin(Web開發)、GORM(資料庫操作)和RESTful(API管理)。中間件是HTTP請求處理鏈中的攔截器模式,用於在不修改處理程序的情況下新增身份驗證或請求日誌記錄等功能。 Session管理透過儲存使用者資料來保持會話狀態,可以使用gorilla/sessions管理session。

一文理解JavaScript中的單例模式 一文理解JavaScript中的單例模式 Apr 25, 2023 pm 07:53 PM

JS 單例模式是常用的設計模式,它可以保證一個類別只有一個實例。這種模式主要用於管理全域變量,避免命名衝突和重複加載,同時也可以減少記憶體佔用,提高程式碼的可維護性和可擴展性。

JavaScript怎麼判斷資料型別? 8 種方式分享 JavaScript怎麼判斷資料型別? 8 種方式分享 Feb 16, 2023 pm 02:48 PM

JavaScript怎麼判斷資料型別?這篇文章跟大家分享JS 判斷資料類型的 8 種方式,有效幫助工作和麵試,面試官看了微微一笑。

See all articles