.net必問的面試題系列之面向對象

上個月離職了,這幾天整理了一些常見的面試題,整理成一個系列給你們分享一下,機會是給有準備的人,面試造火箭,工做擰螺絲,不慌,共勉。 1.net必問的面試題系列之基本概念和語法 2.net必問的面試題系列之面向對象 3.net必問的面試題系列之設計模式 4.net必問的面試題系列之集合、異常、泛型 5.net必問的面試題系列之簡單算法 6.net必問的面試題系列之數據庫 7.net必問的面試題系列之web前端 .net打雜工程師的面試感想和總結 ####問題目錄 1.一般採用的訪問修飾符有哪五種 2.多態的理解 3.什麼是構造函數 4.重寫和重載的區別 5.class和struct的異同 6.構造函數是否能被重寫? 7.簡述一下面向對象的三大特性 8.抽象類和接口有什麼區別? 9.類的執行順序 10.接口是否可繼承接口?抽象類是否可實現(implements)接口?抽象類是否可繼承實現類(concrete class)? 11.繼承最大的好處? 12.請說說引用和對象? 13.什麼是匿名類,有什麼好處 14.有哪些引用類型,有哪些值類型,有什麼區別 15.C#中有沒有靜態構造函數,若是有是作什麼用的? 16.怎樣理解靜態變量?靜態成員和非靜態成員的區別? 17.在項目中爲何使用接口?接口的好處是什麼?什麼是面向接口開發? 18.屬性能在接口中聲明嗎? 19.何時用重載?何時用重寫? 20.靜態方法能夠訪問非靜態變量嗎?若是不能夠爲何?html

1.一般採用的訪問修飾符有哪五種

public:公開,訪問無限制 internal:本項目內能夠訪問 internal protected:本項目的父子類能夠訪問 protected:子類能夠訪問 private:受保護的,只能在奔類中使用,對外徹底封閉前端

2.多態的理解

解釋:同一操做做用於不一樣的對象,實現不一樣的結果。 做用:加強代碼的靈活性,重用性,可讀性 實現:經過派生類,覆寫基類的虛方法、重寫基類的override方法。web

3.什麼是構造函數

概念:構造函數的方法名與類型相同、沒有返回類型 做用:完成對類的對象初始化 建立一個類的新對象時,系統會自動調用該構造函數初始化新對象, 若是沒有寫定義,那麼系統會自動提供一個不帶任何參數的public 構造函數面試

4.重寫和重載的區別

重寫方法:關鍵字用override修飾,派生類重寫基類的方法,方法命名、返回類型,參數必須相同, 重載方法:方法名必須相同,參數列表必須不相同,返回類型能夠不相同。 做用:重寫主要是實現面向對象的多態性、重載主要是實現實例化不一樣的對象算法

5.class和struct的異同?

相同點: 1.均可以實現接口 不一樣點: 1.class是引用類型,struct是值類型 2.class容許繼承、被繼承,struct不容許,只能繼承接口 3.class能夠初始化變量,struct不能夠 4.class能夠有無參的構造函數,struct不能夠,必須是有參的構造函數,並且在有參的構造函數必須初始化全部成員 使用場景: 1.Class比較適合大的和複雜的數據,表現抽象和多級別的對象層次時。Struct適用於做爲常常使用的一些數據組合成的新類型,表示諸如點、矩形等主要用來存儲數據的輕量級對象時,偏簡單值。 2.Struct有性能優點,Class有面向對象的擴展優點。數據庫

6.構造函數是否能被重寫?

構造器Constructor不能被繼承,所以不能重寫,但能夠被重載編程

7.簡述一下面向對象的三大特性

封裝、繼承、多態。 封裝:是經過把對象的屬性的實現細節隱藏起來,僅對外提供公共的訪問方法。 繼承:是經過子類繼承基類、繼承抽象類、繼承接口實現的。 多態:是經過重寫基類的override 方法、重寫虛方法實現的。 好處是,方便維護、易擴展。 缺點是:比面向過程性能低。設計模式

8.抽象類和接口有什麼區別?

相同點:都不能直接實例化 1.抽象類用abstract修飾、接口用interface修飾 2.抽象類中的方法能夠實現,也能夠不實現,有抽象方法的類必定要用abstract修飾,接口中的方法不容許實現 3.抽象類只能單繼承,接口支持多繼承 4.抽象類有構造方法,接口不能有構造方法 5.接口只負責功能的定義,經過接口來規範類的,(有哪些功能),而抽象類即負責功能的定義有能夠實現功能(實現了哪些功能)數組

9.類的執行順序

執行順序:父類,子類,靜態塊,靜態字段,非靜態塊,非靜態字段,構造器,方法微信

10.接口是否可繼承接口?抽象類是否可實現(implements)接口?抽象類是否可繼承實現類(concrete class)?

接口能夠繼承接口,抽象類能夠實現接口,抽象類能夠繼承實現類,但前提是實現類必須有明確的構造函數。

11.繼承最大的好處?

對父類成員進行重用,增長代碼的可讀性、靈活性。

12.請說說引用和對象?

對象和引用時分不開的,對象生成一個地址,放在堆裏面,引用則指向這個地址,放在棧裏面

13.什麼是匿名類,有什麼好處

不用定義、沒有名字的類,使用一次即可丟棄。好處是簡單、隨意、臨時的。

14.有哪些引用類型,有哪些值類型,有什麼區別

引用類型:類、接口、委託、字符串、數組 值類型:整形、浮點型、結構體、枚舉、bool 值類型和引用類型的區別在於,值類型的變量直接存放實際的數據,而引用類型的變量存放的則是數據的地址,即對象的引用。 默認值,值類型是0,引用類型null。

15.C#中有沒有靜態構造函數,若是有是作什麼用的?

有. 特色: 靜態構造函數既沒有訪問修飾符,也沒有參數。 在建立第一個實例或引用任何靜態成員以前,將自動調用靜態構造函數來初始化類。 沒法直接調用靜態構造函數。在程序中,用戶沒法控制什麼時候執行靜態構造函數。 用途: 當類使用日誌文件時,將使用這種構造函數向日志文件中寫入項。

16.怎樣理解靜態變量?靜態成員和非靜態成員的區別?

靜態變量屬於類,而不屬於對象;並對全部對象所享;靜態成員在加類的時候就被加載。

17.在項目中爲何使用接口?接口的好處是什麼?什麼是面向接口開發?

接口是一種約束,描述類的公共方法/公共屬性,不能有任何的實現 好處是:結構清晰,類之間通訊簡單易懂,擴展性好,提升複用性。 面向接口開發就是指面向抽象協議編程,實現者在實現時

#####18.屬性能在接口中聲明嗎? 能夠,不能有訪問修飾符,不能初始化賦值。

#####19.何時用重載?何時用重寫? 當一個類須要用不一樣的實現來作同一件事情,此時應該用重寫,而重載是用不一樣的輸入作同一件事情

20.靜態方法能夠訪問非靜態變量嗎?若是不能夠爲何?

靜態方法和非靜態變量不是同一輩子命週期,靜態方法屬於類,非靜態變量屬於具體的對象,靜態方法和具體的對象沒有任何關聯 有興趣的能夠關注一下個人微信公衆號[dotNet全棧開發],分享一些編程相關的經典文章

相關文章
相關標籤/搜索