最近找工作面的面试题目汇总(一)
網(wǎng)址:http://www.cnblogs.com/renyiqiu/p/6504839.html
目錄
- 1.抽象類的介紹,抽象類里的虛函數(shù)和抽象函數(shù)
- 參考文檔
- 抽象類特征
- 抽象方法特征
- 2.虛函數(shù)和抽象方法
- 參考文檔
- 虛方法的特點(diǎn)
- 虛方法(virtual)和抽象方法(abstract)的區(qū)別
- 3.靜態(tài)類和靜態(tài)類成員
- 參考文檔
- (一).C#靜態(tài)方法與非靜態(tài)方法比較一、C#靜態(tài)成員
- (二).C#靜態(tài)方法與非靜態(tài)方法比較二、C#靜態(tài)方法
- (三).C#靜態(tài)方法與非靜態(tài)方法比較三、C#靜態(tài)方法是一種特殊的成員方法
- (四).C#靜態(tài)方法與非靜態(tài)方法比較四、C#靜態(tài)方法中獲取類的名稱
- 4.靜態(tài)構(gòu)造函數(shù)
- 5.接口和抽象類
- 參考文檔
- ①.抽象類和接口的區(qū)別:
- ②.抽象類和接口的使用
- 6.mvc和webform
- 7.mvc的filter
- 8.項(xiàng)目中前端用了啥框架,怎么實(shí)現(xiàn),以及如何自定義jquery插件
?
正文
簡(jiǎn)介
最近面了幾間公司,每次面試完我都特意把題目記住并寫在云筆記上,用于寫博客文章,也為了給新手們補(bǔ)補(bǔ)基礎(chǔ)。
回到頂部1.抽象類的介紹,抽象類里的虛函數(shù)和抽象函數(shù)
參考文檔
abstract(C# 參考)
簡(jiǎn)介
不能初始化的類被叫做抽象類,它們只提供部分實(shí)現(xiàn),但是另一個(gè)類可以繼承它并且能創(chuàng)建它們
的實(shí)例。抽象類能夠被用于類,方法,屬性,索引器和事件,使用abstract 在一個(gè)類聲明中表示該類傾向要作為其它類的基類,成員被標(biāo)示成abstract,或被包含進(jìn)一個(gè)抽象類,必須被其派生類實(shí)現(xiàn)。
一個(gè)抽象類必須為所有的接口成員提供實(shí)現(xiàn)
一個(gè)用于實(shí)現(xiàn)接口的抽象類可能把接口方法安排到抽象方法上。例如
interface I {void M(); } abstract class C: I { public abstract void M(); }抽象類特征
抽象方法特征
*一個(gè)抽象屬性能夠通過(guò)派生類使用 override 實(shí)現(xiàn).
2.虛函數(shù)和抽象方法
參考文檔
虛方法(virtual)和抽象方法(abstract)的區(qū)別
虛方法與非虛方法的最大不同是,虛方法的實(shí)現(xiàn)可以由派生類所取代,這種取代是通過(guò)方法的重寫實(shí)現(xiàn)的。
虛方法的特點(diǎn)
其中那個(gè)申明時(shí)定義的類叫申明類,那個(gè)執(zhí)行時(shí)實(shí)例化的類叫實(shí)例類。
如:A a =new B(); 其中A是申明類,B是實(shí)例類。
- 當(dāng)調(diào)用一個(gè)對(duì)象的函數(shù)時(shí),系統(tǒng)會(huì)直接去檢查這個(gè)對(duì)象申明定義的類,即申明類,看所調(diào)用的函數(shù)是否為虛函數(shù);
- 如果不是虛函數(shù),那么它就直接執(zhí)行該函數(shù)。而如果是一個(gè)虛函數(shù),那么這個(gè)時(shí)候它就不會(huì)立刻執(zhí)行該函數(shù)了,而是開(kāi)始檢查對(duì)象的實(shí)例類。
- 在這個(gè)實(shí)例類里,他會(huì)檢查這個(gè)實(shí)例類的定義中是否有實(shí)現(xiàn)該虛函數(shù)或者重新實(shí)現(xiàn)該虛函數(shù)(通過(guò)override關(guān)鍵字)的方法,如果有,它就不會(huì)再找了,而是馬上執(zhí)行該實(shí)例類中實(shí)現(xiàn)的虛函數(shù)的方法。而如果沒(méi)有的話,系統(tǒng)就會(huì)不停地往上找實(shí)例類的父類,并對(duì)父類重復(fù)剛才在實(shí)例類里的檢查,直到找到第一個(gè)重載了該虛函數(shù)的父類為止,然后執(zhí)行該父類里重載后的函數(shù)。
虛方法(virtual)和抽象方法(abstract)的區(qū)別
編譯器會(huì)報(bào)錯(cuò):
Main.cs(10): 'VSTest.Animal.Sleep()' is abstract but it is contained in nonabstract class 'VSTest.Animal'
Main.cs(11): 'VSTest.Animal.Eat()' is abstract but it is contained in nonabstract class 'VSTest.Animal'
編譯器會(huì)報(bào)錯(cuò):Main.cs(14): 'VSTest.Cat' does not implement inherited abstract member 'VSTest.Animal.Eat()'
因?yàn)槲覀儧](méi)有實(shí)現(xiàn)抽象類中所有抽象方法。
3.靜態(tài)類和靜態(tài)類成員
參考文檔
(一).C#靜態(tài)方法與非靜態(tài)方法比較一、C#靜態(tài)成員
- 靜態(tài)成員屬于類所有,非靜態(tài)成員屬于類的實(shí)例所有。
- 每創(chuàng)建一個(gè)類的實(shí)例,都會(huì)在內(nèi)存中為非靜態(tài)成員新分配一塊存儲(chǔ);非靜態(tài)成員屬于類所有,為各個(gè)類的實(shí)例所公用,無(wú)論類創(chuàng)建了多少實(shí)例;類的靜態(tài)成員在內(nèi)存中只占同一塊區(qū)域。
(二).C#靜態(tài)方法與非靜態(tài)方法比較二、C#靜態(tài)方法
- C#靜態(tài)方法屬于類所有,類實(shí)例化前即可使用。
- 非靜態(tài)方法可以訪問(wèn)類中的任何成員,靜態(tài)方法只能訪問(wèn)類中的靜態(tài)成員。
- 因?yàn)殪o態(tài)方法在類實(shí)例化前就可以使用,而類中的非靜態(tài)變量必須在實(shí)例化之后才能分配內(nèi)存,這樣,C#靜態(tài)方法調(diào)用時(shí)無(wú)法判斷非靜態(tài)變量使用的內(nèi)存地址。所以無(wú)法使用。而靜態(tài)變量的地址對(duì)類來(lái)說(shuō)是固定的,故可以使用。
(三).C#靜態(tài)方法與非靜態(tài)方法比較三、C#靜態(tài)方法是一種特殊的成員方法
它不屬于類的某一個(gè)具體的實(shí)例,而是屬于類本身。所以對(duì)靜態(tài)方法不需要首先創(chuàng)建一個(gè)類的實(shí)例,而是采用類名.靜態(tài)方法的格式 。
-
static方法是類中的一個(gè)成員方法,屬于整個(gè)類,即不用創(chuàng)建任何對(duì)象也可以直接調(diào)用!
static內(nèi)部只能出現(xiàn)static變量和其他static方法!而且static方法中還不能使用this....等關(guān)鍵字..因?yàn)樗菍儆谡麄€(gè)類!
- 靜態(tài)方法效率上要比實(shí)例化高,靜態(tài)方法的缺點(diǎn)是不自動(dòng)進(jìn)行銷毀,而實(shí)例化的則可以做銷毀。
- 靜態(tài)方法和靜態(tài)變量創(chuàng)建后始終使用同一塊內(nèi)存,而使用實(shí)例的方式會(huì)創(chuàng)建多個(gè)內(nèi)存.
-
C#中的方法有兩種:實(shí)例方法,靜態(tài)方法.
(四).C#靜態(tài)方法與非靜態(tài)方法比較四、C#靜態(tài)方法中獲取類的名稱
靜態(tài)方法中用:
string className = System.Reflection.MethodBase. GetCurrentMethod().ReflectedType.FullName;非靜態(tài)方法中還可以用:
string className = this.GetType().FullName; 回到頂部4.靜態(tài)構(gòu)造函數(shù)
定義:靜態(tài)構(gòu)造函數(shù)用于初始化任何 靜態(tài) 數(shù)據(jù),或用于執(zhí)行僅需執(zhí)行一次的特定操作。 在創(chuàng)建第一個(gè)實(shí)例或引用任何靜態(tài)成員之前,將自動(dòng)調(diào)用靜態(tài)構(gòu)造函數(shù)。
靜態(tài)構(gòu)造函數(shù)具有以下特點(diǎn):
5.接口和抽象類
參考文檔
①.抽象類和接口的區(qū)別:
盡量避免使用繼承來(lái)實(shí)現(xiàn)組建功能,而是使用黑箱復(fù)用,即對(duì)象組合。因?yàn)槔^承的層次增多,造成最直接的后果就是當(dāng)你調(diào)用這個(gè)類群中某一類,就必須把他們?nèi)考虞d到棧中!后果可想而知。(結(jié)合堆棧原理理解)。同時(shí),有心的朋友可以留意到微軟在構(gòu)建一個(gè)類時(shí),很多時(shí)候用到了對(duì)象組合的方法。比如 asp.net中,Page類,有Server Request等屬性,但其實(shí)他們都是某個(gè)類的對(duì)象。使用Page類的這個(gè)對(duì)象來(lái)調(diào)用另外的類的方法和屬性,這個(gè)是非常基本的一個(gè)設(shè)計(jì)原則;
如果抽象類實(shí)現(xiàn)接口,則可以把接口中方法映射到抽象類中作為抽象方法而不必實(shí)現(xiàn),而在抽象類的子類中實(shí)現(xiàn)接口中方法。
②.抽象類和接口的使用
以下是我在網(wǎng)上看到的幾個(gè)形象比喻。
1.飛機(jī)會(huì)飛,鳥(niǎo)會(huì)飛,他們都繼承了同一個(gè)接口“飛”;但是F22屬于飛機(jī)抽象類,鴿子屬于鳥(niǎo)抽象類;
2. 就像鐵門木門都是門(抽象類),你想要個(gè)門我給不了(不能實(shí)例化),但我可以給你個(gè)具體的鐵門或木門(多態(tài));而且只能是門,你不能說(shuō)它是窗(單繼承),一個(gè)門可以有鎖(接口)也可以有門鈴(多實(shí)現(xiàn))。門(抽象類)定義了你是什么,接口(鎖)規(guī)定了你能做什么(一個(gè)接口最好只能做一件事,你不能要求鎖也能發(fā)出聲音吧(接口污染))。
6.mvc和webform
7.mvc的filter
8.項(xiàng)目中前端用了啥框架,怎么實(shí)現(xiàn),以及如何自定義jquery插件
學(xué)習(xí)閉包:
(1).學(xué)習(xí)Javascript閉包(Closure)
(2).javascript的閉包
(3).圖解閉包
當(dāng)你自認(rèn)為做出了不錯(cuò)的功能但描述出來(lái)時(shí)又支支吾吾的時(shí)候,不要為自己說(shuō)不出來(lái)而懊惱,因?yàn)椴皇悄惆l(fā)揮有問(wèn)題,更不要向別人解釋用了啥高大上插件,別讓自己成為接口程序員,請(qǐng)靜下心回去補(bǔ)補(bǔ)基礎(chǔ)。總結(jié)
以上是生活随笔為你收集整理的最近找工作面的面试题目汇总(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux的strace命令(详解)
- 下一篇: GCC优化选项:一般的文档里不容易找到的