C 面試題 (四)

2022-06-06 09:21:09 字數 3055 閱讀 2191

1, 請你說說.net中類和結構的區別?

答:結構和類具有大體的語法,但是結構受到的限制比類要多。    

結構不能申明有預設的建構函式,為結構的副本是又編譯器建立和銷毀的,所以不需要預設的建構函式和析構函式。    

結構是值型別,所以對結構變數所做的改變不會影響其的原值,而類是應用型別,改變其變數的值會改變其原值。    

申明結構用struck關鍵字,申明類用class關鍵字,向方法傳遞結構是時是通過值傳遞的,而不是通過引用。    

與類不同,結構的例項化可以不使用new關鍵字。類可以實現介面。

2, 死鎖的必要條件?怎麼克服?

答:系統的資源不足,程序的推進的順序不合適,資源分配不當,乙個資源每次只能被乙個程序使用,    

乙個資源請求資源時,而此時這個資源已阻塞,對已獲得資源不放,程序獲得資源時,未使用完前,不能強行剝奪。

3, 介面是否可以繼承介面?抽象類是否可以實現介面?抽象類是否可以繼承實體類?

答:介面是可以繼承介面的,抽象類是可以實現介面的,抽象類可以繼承實體類,    

但是有個條件,條件是,實體類必須要有明確的建構函式

4, 構造器constructor是否可以被繼承?是否可以被override?

答:constructor不可以被繼承,因此不能被重寫(overriding),但可以被過載(overloading).

5、談談final,finally,finallize的區別?

答:final用於申明屬性,方法和類,表示屬性不可變,方法不可以被覆蓋,類不可以被繼承。    

finally是異常處理語句結構中,表示總是執行的部分。    

finallize表示是object類乙個方法,在垃圾**機制中執行的時候會被呼叫被**物件的方法。

6、new有種用法?

答:有3種,第一種是,例項化如:new class()    

第二種是,public new 隱藏基類的方法    

第三種是,在泛型類申明中的任何型別引數都必須有公共的無參建構函式。

7、const和readonly?

答:const用來申明程式設計時申明常量,readonly用來申明執行時常量

8、udp和tcp連線有和異同?

答:tcp是傳輸控制協議,提供的是面向連線的,是可靠的,位元組流服務,    

當使用者和伺服器彼此進行資料互動的時候,必須在他們資料互動前要     進行tcp連線之後才能傳輸資料。

tcp提供超時重撥,檢驗資料功能。    

udp是使用者資料報協議,是乙個簡單的面向資料報的傳輸協議,是不可靠的連線。

9、public,internal,private,protected,protected internal各個訪問修飾符的區別?

public:任何地方都可以呼叫。

internal:同一應用程式集內均可呼叫(vs.net的乙個工程中)

protected:只能在類以及它的子類中呼叫。 private:只能在類成員呼叫。

protected internal:只能被同一應用程式集內類和它的子類呼叫。

10、out 和 ref的區別與相同點?

out 和 ref都指示編譯器傳遞引數位址,在行為上是相同的;

他們的使用機制稍有不同,ref要求引數在使用之前要顯式初始化,out要在方法內部初始化;

out 和 ref不可以過載,就是不能定義method(ref int a)和method(out int a)這樣的過載,從編譯角度看,二者的實質是相同的,只是使用時有區別;

11、介面和類有什麼異同?

不同點:

1)、介面不能直接例項化。

2)、介面只包含方法或屬性的宣告,不包含方法的實現。

3)、介面可以多繼承,類只能單繼承。

4)、類有分部類的概念,定義可在不同的原始檔之間進行拆分,而介面沒有。(這個地方確實不對,介面也可以分部,謝謝@xclin163的指正)

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

相同點:

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

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

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

12、抽象類和介面有什麼區別?

1)、繼承:介面支援多繼承;抽象類不能實現多繼承。

2)、表達的概念:介面用於規範,更強調契約,抽象類用於共性,強調父子。抽象類是一類事物的高度聚合,那麼對於繼承抽象類的子類來說,對於抽象類來說,屬於"is a"的關係;而介面是定義行為規範,強調「can do」的關係,因此對於實現介面的子類來說,相對於介面來說,是"行為需要按照介面來完成"。

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

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

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

6)、介面可以作用於值型別(列舉可以實現介面)和引用型別;抽象類只能作用於引用型別。

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

13、過載與覆蓋的區別?

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

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

主要區別:

1)、方法的覆蓋是子類和父類之間的關係,是垂直關係;方法的過載是同乙個類中方法之間的關係,是水平關係。

2)、覆蓋只能由乙個方法,或只能由一對方法產生關係;方法的過載是多個方法之間的關係。

3)、覆蓋要求引數列表相同;過載要求引數列表不同。

4)、覆蓋關係中,呼叫那個方法體,是根據物件的型別來決定;過載關係,是根據呼叫時的實參表與形參表來選擇方法體的。

大資料面試題 四 YARN面試題

無意中發現了乙個巨牛的人工智慧教程,忍不住分享一下給大家。教程不僅是零基礎,通俗易懂,而且非常風趣幽默,像看 一樣!覺得太牛了,所以分享給大家。點這裡可以跳轉到教程。大資料面試寶典目錄,簡述hadoop1 與hadoop2 的架構異同 加入了yarn 解決了資源排程的問題。加入了對zookeeper...

php面試題四

php面試題二 8.談談事務處理 答案是 事物只是一組sql語句,通常因為它們是彼此相互依賴的。所有要在全有或者 全無的模式下執行,只有當所有的語句都執行成功了,乙個事物才算成功了,任何乙個語句中的失敗應該都會導致系統 回滾 到它先前的狀態,以避免資料連線 崩潰問題。9.apache mysql p...

演算法面試題四

螺旋佇列問題2 如矩陣 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 找出規律,並列印乙個nxn的矩陣,規律就是從首座標開始順時針依次增大。如下,用到了演算法面試題三裡面的函式 如下 include include...