C 面試基礎問題

2021-04-13 02:35:42 字數 4089 閱讀 7028

c#面試基礎問題

如果你的簡歷上面寫「熟悉/了解c#」,那麼你就應該能夠回答下面的這些基礎問題。下面給出的是簡要答案以供參考。

如果是「精通」,那麼請參考:http://www.cnblogs.com/dflying/archive/2006/04/01/364458.html

傳入某個屬性的set方法的隱含引數的名稱是什麼?

value,它的型別和屬性所聲名的型別相同。

如何在c#中實現繼承?

在類名後加上乙個冒號,再加上基類的名稱。

c#支援多重繼承麼?

不支援。可以用介面來實現。

被protected修飾的屬性/方法在何處可以訪問?

在繼承或間接繼承與這個類的子類中可以訪問。

私有成員會被繼承麼?

會,但是不能被訪問。所以看上去他們似乎是不能被繼承的,但實際上確實被繼承了。

請描述一下修飾符protected internal

被protected internal修飾的屬性/方法只能在它的在同乙個程式集(assembly)中的子類被訪問。

c#提供乙個預設的無引數建構函式,當我實現了另外乙個有乙個引數的建構函式時候,還想保留這個無引數的建構函式。這樣我應該寫幾個建構函式?

兩個,一旦你實現了乙個建構函式,c#就不會再提供預設的建構函式了,所以需要手動實現那個無引數建構函式。

c#中所有物件共同的基類是什麼?

system.object.

過載和覆寫有什麼區別?

過載提供了對乙個方法簽名的不同引數呼叫的實現。覆寫提供了子類中改變父類方法行為的實現。

在方法定義中,virtual有什麼含意?

被virtual修飾的方法可以被子類覆寫。

能夠將非靜態的方法覆寫成靜態方法麼?

不能,覆寫方法的簽名必須與被覆寫方法的簽名保持一致,除了將virtual改為override。

可以覆寫私有的虛方法麼?

不可以,甚至子類中無法訪問父類中的私有方法。

能夠阻止某乙個類被其他類繼承麼?

可以,使用關鍵字sealed。

能夠實現允許某個類被繼承,但不允許其中的某個方法被覆寫麼?

可以,標記這個類為public,並標記這個方法為sealed。

什麼是抽象類(abstract class)?

一種不可以被例項化的類。抽象類中一般含有抽象方法,當然也可有具體實現。繼承類只有實現過所有抽象類的抽象方法後才能被例項化。

何時必須宣告乙個類為抽象類?

當這個類中包含抽象方法時,或是該類並沒有完全實現父類的抽象方法時。

介面(inte***ce)是什麼?

只含有共有抽象方法(public abstract method)的類。這些方法必須在子類中被實現。

為什麼不能指定介面中方法的修飾符?

介面中的方法用來定義物件之間通訊的契約,指定介面中的方法為私有或保護沒有意義。他們預設為公有方法。

可以繼承多個介面麼?

當然。

那麼如果這些介面中有重複的方法名稱呢?

這種情況中你可以決定如何實現。當然需要特別得小心。但是在編譯環節是沒有問題的。

介面和抽象類的區別是什麼?

介面中所有方法必須是抽象的,並且不能指定方法的訪問修飾符。抽象類中可以有方法的實現,也可以指定方法的訪問修飾符。

如何區別過載方法?

不同的引數型別,不同的引數個數,不同的引數順序。

const和readonly有什麼區別?

const關鍵字用來宣告編譯時常量,readonly用來宣告執行時常量。

system.string和system.stringbuilder有什麼區別?

system.string是不可變的字串。system.stringbuilder存放了乙個可變的字串,並提供一些對這個字串修改的方法。

.net方向高階開發人員面試時應該事先考慮的問題

注:對於每個判斷是非問題,都要考慮「為什麼」與「為什麼不」。

windows service與普通的exe在執行過程中有什麼區別?

乙個程序可以訪問的windows位址空間有多大?等於系統的虛擬記憶體大小麼?這兩方面將對系統的設計產生什麼樣的影響?

exe和dll之間的區別是什麼?在系統設計中應該如何選擇使用它們?

普通的exe與.net exe的執行過程有什麼不同?

什麼是弱型別,什麼是強型別?在系統設計中應該首先考慮使用哪種型別?

pdb檔案是作什麼用的?裡面包含了什麼資訊?

cycloramic complexity是什麼?為什麼它很重要?

為建立乙個critical section以訪問某個變數書寫乙個標準的lock() 並加上double check。

為某個物件實現標準的dispose模式。

什麼是fulltrust? 存在於gac中的 assembly 擁有fulltrust麼?

下面這個命令是做什麼的?gacutil /l | find /i 「system」

下面這個命令是作什麼的? sn -t something.dll

跨防火牆的 dcom必須開啟哪個埠?埠135是用來做什麼的?

有什麼辦法可以與現有unmanaged code整合?在整合的時候應該考慮什麼問題?

簡要解釋一下oop與soa都是用來作什麼的?

xmlserializer是如何工作的?程序執行xmlserializer時候需要什麼樣的acl許可權?

在系統設計時,何時應該使用try catch?何時需要避免使用?

debug.write()和trace.write()之間有什麼區別?二者分別應該用於何處?

debug build和release build有什麼區別?在執行效率上有什麼明顯的區別麼?

jit是針對assembly還是method發生的?解釋一下為什麼.net的設計者要這樣做?

簡要描述一下gc的執行過程。

應該如何選擇使用abstract class還是inte***ce?

在設計乙個自定義型別時應如何選擇使用value type還是reference type?

對於value type和reference type,a.equals(b)的預設實現方式有什麼不同?

.net中為什麼不提供預設的deep copy?如果需要,要如何實現deep copy?

相對於.net 1.1,.net2.0為了避免過度的boxing/unboxing造成的系統開銷提供了哪些支援?

string是value type還是reference type?為什麼.net中的string物件被設定成immutable?

如果您能較完美的回答其中大多數問題,你已經可以毫無疑問的宣稱自己「精通.net」了。祝各位好運 

C 面試基礎問題

傳入某個屬性的set方法的隱含引數的名稱是什麼?value,它的型別和屬性所聲名的型別相同。如何在c 中實現繼承?在類名後加上乙個冒號,再加上基類的名稱。c 支援多重繼承麼?不支援。可以用介面來實現。被protected修飾的屬性 方法在何處可以訪問?在繼承或間接繼承與這個類的子類中可以訪問。私有成...

C 面試基礎問題

傳入某個屬性的set方法的隱含引數的名稱是什麼?value,它的型別和屬性所聲名的型別相同。如何在c 中實現繼承?在類名後加上乙個冒號,再加上基類的名稱。c 支援多重繼承麼?不支援。可以用介面來實現。被protected修飾的屬性 方法在何處可以訪問?在繼承或間接繼承與這個類的子類中可以訪問。私有成...

C 面試基礎問題

english version 如果你的簡歷上面寫 熟悉 了解c 那麼你就應該能夠回答下面的這些基礎問題。我將給出自己的簡要答案以供參考。歡迎討論。如果是 精通 那麼請參考 傳入某個屬性的set方法的隱含引數的名稱是什麼?value,它的型別和屬性所聲名的型別相同。如何在c 中實現繼承?在類名後加上...