- 相關(guān)推薦
Visual C#程序員面試問(wèn)題及答案
如果你的簡(jiǎn)歷上面寫(xiě)“熟悉/了解C#”,那么你就應該能夠回答下面的這些基礎問(wèn)題。我將給出自己的簡(jiǎn)要答案以供參考。歡迎討論。
傳入某個(gè)屬性的set方法的隱含參數的名稱(chēng)是什么?
value,它的類(lèi)型和屬性所聲名的類(lèi)型相同。
如何在C#中實(shí)現繼承?
在類(lèi)名后加上一個(gè)冒號,再加上基類(lèi)的名稱(chēng)。
C#支持多重繼承么?
不支持?梢杂媒涌趤(lái)實(shí)現。
被protected修飾的屬性/方法在何處可以訪(fǎng)問(wèn)?
在繼承或間接繼承與這個(gè)類(lèi)的子類(lèi)中可以訪(fǎng)問(wèn)。
私有成員會(huì )被繼承么?
會(huì ),但是不能被訪(fǎng)問(wèn)。所以看上去他們似乎是不能被繼承的,但實(shí)際上確實(shí)被繼承了。
請描述一下修飾符protected internal。
被protected internal修飾的屬性/方法只能在它的在同一個(gè)程序集(Assembly)中的子類(lèi)被訪(fǎng)問(wèn)。
C#提供一個(gè)默認的無(wú)參數構造函數,當我實(shí)現了另外一個(gè)有一個(gè)參數的構造函數時(shí)候,還想保留這個(gè)無(wú)參數的構造函數。這樣我應該寫(xiě)幾個(gè)構造函數?
兩個(gè),一旦你實(shí)現了一個(gè)構造函數,C#就不會(huì )再提供默認的構造函數了,所以需要手動(dòng)實(shí)現那個(gè)無(wú)參數構造函數。
C#中所有對象共同的基類(lèi)是什么?
System.Object.
重載和覆寫(xiě)有什么區別?
重載提供了對一個(gè)方法簽名的不同參數調用的實(shí)現。覆寫(xiě)提供了子類(lèi)中改變父類(lèi)方法行為的實(shí)現。
在方法定義中,virtual有什么含意?
被virtual修飾的方法可以被子類(lèi)覆寫(xiě)。
能夠將非靜態(tài)的方法覆寫(xiě)成靜態(tài)方法么?
不能,覆寫(xiě)方法的簽名必須與被覆寫(xiě)方法的簽名保持一致,除了將virtual改為override。
可以覆寫(xiě)私有的虛方法么?
不可以,甚至子類(lèi)中無(wú)法訪(fǎng)問(wèn)父類(lèi)中的私有方法。
能夠阻止某一個(gè)類(lèi)被其他類(lèi)繼承么?
可以,使用關(guān)鍵字sealed。
能夠實(shí)現允許某個(gè)類(lèi)被繼承,但不允許其中的某個(gè)方法被覆寫(xiě)么?
可以,標記這個(gè)類(lèi)為public,并標記這個(gè)方法為sealed。
什么是抽象類(lèi)(abstract class)?
一種不可以被實(shí)例化的類(lèi)。抽象類(lèi)中一般含有抽象方法,當然也可有具體實(shí)現。繼承類(lèi)只有實(shí)現過(guò)所有抽象類(lèi)的抽象方法后才能被實(shí)例化。
何時(shí)必須聲明一個(gè)類(lèi)為抽象類(lèi)?
當這個(gè)類(lèi)中包含抽象方法時(shí),或是該類(lèi)并沒(méi)有完全實(shí)現父類(lèi)的抽象方法時(shí)。
接口(interface)是什么?
只含有共有抽象方法(public abstract method)的類(lèi)。這些方法必須在子類(lèi)中被實(shí)現。
為什么不能指定接口中方法的修飾符?
接口中的方法用來(lái)定義對象之間通信的契約,指定接口中的方法為私有或保護沒(méi)有意義。他們默認為公有方法。
可以繼承多個(gè)接口么?
當然。
那么如果這些接口中有重復的方法名稱(chēng)呢?
這種情況中你可以決定如何實(shí)現。當然需要特別得小心。但是在編譯環(huán)節是沒(méi)有問(wèn)題的。
接口和抽象類(lèi)的區別是什么?
接口中所有方法必須是抽象的,并且不能指定方法的訪(fǎng)問(wèn)修飾符。抽象類(lèi)中可以有方法的實(shí)現,也可以指定方法的訪(fǎng)問(wèn)修飾符。
如何區別重載方法?
不同的參數類(lèi)型,不同的參數個(gè)數,不同的參數順序。
const和readonly有什么區別?
const關(guān)鍵字用來(lái)聲明編譯時(shí)常量,readonly用來(lái)聲明運行時(shí)常量。
System.String 和System.StringBuilder有什么區別?
System.String是不可變的字符串。System.StringBuilder存放了一個(gè)可變的字符串,并提供一些對這個(gè)字符串修改的方法。
【Visual C#程序員面試問(wèn)題及答案】相關(guān)文章:
面試問(wèn)題及答案01-02
面試司機的問(wèn)題及答案04-26
面試問(wèn)題及答案07-25
面試后勤問(wèn)題及答案09-23
物流面試問(wèn)題及答案02-10
銀行面試問(wèn)題及答案10-14
求職面試問(wèn)題及答案09-20
小升初面試問(wèn)題及答案08-15