




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、一、問答題1. 值類型和引用類型的區(qū)別?值類型和引用類型的區(qū)別在于,值類型的變量直接存放實際的數(shù)據(jù),而引用類型的變量存放的則是數(shù)據(jù)的地址,即對象的引用。 值類型變量直接把變量的值保存在棧中,引用類型的變量把實際數(shù)據(jù)的地址保存在棧中,而實際數(shù)據(jù)則保存在堆中。注意,堆和棧是兩個不同的概念,在內(nèi)存中的存儲位置也不相同。堆(Heap)一般用于存儲可變長度的數(shù)據(jù),如字符串類型堆中保存值和對象,調(diào)用完畢之后依然存在,由垃圾回收器查找棧中有無指向該值或?qū)ο蟮囊茫瑹o則從堆中刪除;棧(Stack)則用于存儲固定長度的數(shù)據(jù),如整型類型的數(shù)據(jù)int(每個int變量占用四個字節(jié)),棧由系統(tǒng)管理生存期,存儲代碼執(zhí)行和
2、調(diào)用路徑,執(zhí)行或調(diào)用完畢即從棧中清除。 由數(shù)據(jù)存儲的位置可以得知,當(dāng)把一個值變量賦給另一個值變量時,會在堆棧中保存兩個完全相同的值;而把一個引用變量賦給另一個引用變量,則會在堆棧中保存對同一個堆位置的兩個引用,即在堆棧中保存的是同一個堆的地址。在進行數(shù)據(jù)操作時,對于值類型,由于每個變量都有自己的值,因此對一個變量的操作不會影響到其它變量;對于引用類型的變量,對一個變量的數(shù)據(jù)進行操作就是對這個變量在堆中的數(shù)據(jù)進行操作,如果兩個引用類型的變量引用同一個對象,實際含義就是它們在堆棧中保存的堆的地址相同,因此對一個變量的操作就會影響到引用同一個對象的另一個變量。(1) 值類型 包括:簡單類型、結(jié)構(gòu)類型
3、、枚舉類型。其中,簡單類型又分為:整型、布爾型、字符型、浮點型、小數(shù)型。 (2) 引用類型 包括:對象類型、類類型、接口、元數(shù)據(jù)、字符串類型、數(shù)組。/值類型與引用類型的例子static void Main(string args)/=值類型,操作的是值=int i1 = 10;int i2 = i1;i2 = 88;Console.WriteLine(i1 + + i2);/10 88由于值類型直接操作值,所以不會發(fā)生改變/=引用類型,操作的是引用,所謂的引用可以看作是指向內(nèi)存的地址,地址再對應(yīng)著內(nèi)容=int intArr1 = new int 1, 2, 3 ;int intArr2 = i
4、ntArr1;intArr20 = 9;intArr22 = 0;foreach (int i in intArr1) Console.Write(i);/結(jié)果:920由于引用類型intArr1的引用賦值給了intArr2,所以他們是持有同一個引用,當(dāng)intArr2的引用發(fā)生改變的時候,intArr1的引用也將發(fā)生變化foreach (int j in intArr2) Console.Write(j);/結(jié)果:9 2 0Console.Read();下面代碼的輸出結(jié)果是什么?class Program static void Main(string args) string b; b = o
5、ld; Func1(ref b); Console.WriteLine(b);int c; c = 3; Func1(ref c); Console.WriteLine( c); public static void Func1(ref string a) a = new; public static void Func1(ref int a) a = 6; 答案:new6題目2:下面代碼的輸出結(jié)果是什么? class Program static void Main(string args) string b; b = old; Func1( b); Console.WriteLine(b)
6、; int c; c = 3; Func1( c); Console.WriteLine( c); public static void Func1( string a) a = new; public static void Func1( int a) a = 6; 答案: old 32. 簡述裝箱和拆箱的過程。 裝箱(boxing)是將值類型隱式地轉(zhuǎn)換為引用類型。如int i=3; object o = i ;便是裝箱過程,裝箱一個數(shù)值會為其分配一個對象實例,并把該數(shù)值拷貝到新對象中。拆箱(unboxing)是顯式地把引用類型轉(zhuǎn)換成值類型,如int j = (int)o char j= (
7、char)o。3. 結(jié)構(gòu)和類的區(qū)別是什么? 1) 結(jié)構(gòu)是一個值類型,保存在棧上,而類是一個引用類型,保存在受管制的堆上。 2) 對結(jié)構(gòu)中的數(shù)據(jù)進行操作比對類或?qū)ο笾械臄?shù)據(jù)進行操作速度要快。 3) 一般用結(jié)構(gòu)存儲多種類型的數(shù)據(jù),當(dāng)創(chuàng)建一個很多類或?qū)ο蠊灿玫男⌒蛯ο髸r,使用結(jié)構(gòu)效率更高。 4. 什么是靜態(tài)變量?類的數(shù)據(jù)成員可以分靜態(tài)變量、非靜態(tài)變量兩種. 靜態(tài)成員:靜態(tài)類中的成員加入static修飾符,即是靜態(tài)成員.可以直接使用類名+靜態(tài)成員名訪問此靜態(tài)成員,因為靜態(tài)成員存在于內(nèi)存,非靜態(tài)成員需要實例化才會分配內(nèi)存,所以靜態(tài)成員不能訪問非靜態(tài)的成員.因為靜態(tài)成員存在于內(nèi)存,所以非靜態(tài)成員可以直接訪
8、問類中靜態(tài)的成員.非成靜態(tài)員:所有沒有加Static的成員都是非靜態(tài)成員,當(dāng)類被實例化之后,可以通過實例化的類名進行訪問.非靜態(tài)成員的生存期決定于該類的生存期.而靜態(tài)成員則不存在生存期的概念,因為靜態(tài)成員始終駐留在內(nèi)容中。一個類中可以同時包含靜態(tài)成員和非靜態(tài)成員,類中也包括靜態(tài)構(gòu)造函數(shù)和非靜態(tài)構(gòu)造函數(shù)。5. abstract class和interface有什么區(qū)別?聲明方法的存在而不去實現(xiàn)它的類被叫做抽像類(abstract class),它用于要創(chuàng)建一個體現(xiàn)某些基本行為的類,抽象類不能被實例化。abstact class AA a = new A(); /這個是錯誤的class B:AB
9、b = new B();A a = b;然而可以創(chuàng)建一個變量,其類型是一個抽像類,并讓它指向【具體子類】的一個實例。不能有抽像構(gòu)造函數(shù)或抽像靜態(tài)方法。抽象類的方法必須全部被子類繼承:如果子類也是抽象的,那么就不必全部繼承接口(interface)是抽像類的【變體】。在接口中,所有方法都是抽像的;在抽象類中,有些方法可以不是抽象的。多繼承性可通過接口實現(xiàn)。接口中的所有方法都是抽像的,沒有一個有【方法體】。interface Ainterface Babstract class A1()abstract class A2class c:A1,A,B6. 接口是否可繼承接口? 抽象類是否可實現(xiàn)(im
10、plements)接口? 抽象類是否可繼承實體類(concrete class)?接口可以繼承接口。抽象類可以實現(xiàn)(implements)接口,抽象類是可繼承實體類,但前提是實體類必須有明確的構(gòu)造函數(shù)。7. 進程和線程分別怎么理解?1)定義解釋進程是具有一定獨立功能程序在關(guān)于某個數(shù)據(jù)集上的一次運行活動。進程是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。線程是進程的一個實體,是Cup調(diào)度的基本單位。它是比進程更小的能獨立運行的基本單位,線程只擁有一點在運行中必不可少的資源,可與同一個進程中其他線程共享進程中所擁有的所有資源。一個線程可以創(chuàng)建和銷毀另一個線程,同一進程中的多個線程可以同時并發(fā)執(zhí)行;2)區(qū)
11、別解釋一個程序至少有一個進程,一個進程至少有一個線程。線程的劃分尺度小于進程,使得多線程程序并發(fā)行高,另外,進程在執(zhí)行過程中擁有獨立的內(nèi)存單元,而多個線程共享內(nèi)存從而極大的提高程序的運行效率。進程有獨立的地址空間一個進程崩潰后在保護模式下不會對其他進程產(chǎn)生影響,而線程只是一個進程中的不同執(zhí)行路徑;線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等于整個進程死掉。所以多進程的程序要比多線程的程序健壯,但在進程切換時耗費資源較大,效率要差一些。但對一些要同時進行并且又要共享某些變量的并發(fā)操作,只能用線程,不能用進程。8. 簡述“開-閉”原則的基本思想。請舉出一個使用了軟件“
12、開-閉”原則的軟件設(shè)計模式,其中何處體現(xiàn)了“開-閉”原則。答:“開閉”原則:軟件實體應(yīng)當(dāng)對擴展開放,而對修改關(guān)閉,“開-閉”原則要求軟件系統(tǒng)能夠在不需要修改原有類的基礎(chǔ)上,通過增加類達到擴展功能的目的。Abstract factory體現(xiàn)了這個原則,如果想增加一類新的products,只需在product類體系中增加各個products,然后在factory類體系結(jié)構(gòu)中增加一個concrete factory就可以了,而不需要對現(xiàn)有類做任何修改,The Open-closed principleocp在不改動過模塊源代碼的情況下擴展模塊的行為。9. 簡述依賴倒置原則的基本思想。請舉出一個使用了
13、軟件依賴原則的軟件設(shè)計模式,其中何處體現(xiàn)了依賴原則。答:依賴倒置原則的基本思想是:高層模塊不應(yīng)該依賴于低層模塊,二者都應(yīng)該依賴于抽象。抽象不應(yīng)該依賴于細節(jié),細節(jié)應(yīng)該依賴于抽象。Template method就體現(xiàn)了這個原則,它定義了一個操作中的算法骨架,而將一些步驟延遲到子類中,template method使得子類不改變一個算法的結(jié)構(gòu),即可重定義該算法的某些特定步驟。10. 什么是單一職責(zé)原則?請舉出一個使用了單一職責(zé)原則的軟件設(shè)計模式,其中何處體現(xiàn)了單一職責(zé)原則。答:基本思想:SRP使得一個類或一個模塊承擔(dān)的責(zé)任盡可能的少,使盡可能少的因素或動機影響該類或該模塊,即增大類或模塊的內(nèi)聚性,減
14、少其耦合度,SRP是所有原則中最簡單的之一,也是最難正確運用的之一。COMMAND模式體現(xiàn)了SRP原則,大多數(shù)類都是一組方法和相應(yīng)的一組變量的結(jié)合,而該模式只是封裝了一個沒有任何變量的函數(shù),它對函數(shù)的關(guān)注超過了類,將一個請求封裝為一個對象,從而可用不同的請求對客戶進行參數(shù)化。11. 軟件復(fù)用可采用類的繼承方式和類的聚合方式,比較兩者的優(yōu)缺點。答:聚合:一個對象擁有另一個對象或?qū)α硪粋€對象負(fù)責(zé)(即一個對象包含另一個對象或是另一個對象的一部分)并且聚合對象和其所有具有相同的生命周期(即所謂的“同生共死”關(guān)系)。聚合復(fù)用優(yōu)點:容器類僅能通過被包含對象的接口來對其進行訪問。“黑盒”復(fù)用,因為被包含對象
15、的內(nèi)部細節(jié)對外是不可見。包裝性好。實現(xiàn)上的相互依賴性比較小。每一個類只專注于一項任務(wù)。通過獲取指定其他的具有相同類型的對象的使用,可以在運行期間動態(tài)地定義(對象的)組合。聚合的缺點:導(dǎo)致系統(tǒng)中的對象過多 為了能將多個不同的對象作為組合塊來使用,必須仔細地對接口進行定義。類繼承:是一種通過擴展(一個已有對象的)實現(xiàn),從而獲得新功能的復(fù)用方法。繼承的優(yōu)點:容易進行新的實現(xiàn),因為其大多數(shù)可繼承而來 易于修改或擴展那些被復(fù)用的實現(xiàn)。繼承的缺點:破壞了封裝性,因為這會將父類的實現(xiàn)細節(jié)暴露給子類 “白盒”復(fù)用,因為父類的內(nèi)部細節(jié)對于子類而言通常是可見的 當(dāng)父類的實現(xiàn)更改時,子類也不得不隨之更改 從父類繼承
16、來的實現(xiàn)將不能在運行期間進行改變。12. 比較Adapter和Proxy模式使用上的異同之處。適配器模式(Adapter):將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。代理模式有兩個英文名字:Proxy Pattern 和 Surrogate Pattern。代理模式:為其他對象提供一種代理以控制對這個對象的訪問。說白了就是,在一些情況下客戶不想或者不能直接引用一個對象,而代理對象可以在客戶和目標(biāo)對象之間起到中介作用,去掉客戶不能看到的內(nèi)容和服務(wù)或者增添客戶需要的額外服務(wù)。兩者的主要區(qū)別在于代理模式應(yīng)用的情況是不改變
17、接口命名的,而且是對已有接口功能的一種控制;而適配器模式則強調(diào)接口轉(zhuǎn)換。二、選擇題1 關(guān)于信息隱藏的描述錯誤的是( )A 信息隱藏是指對象在與外界的交互中,盡可能地隱藏對象的內(nèi)部細節(jié),僅保留有限的對外接口與外部進行聯(lián)系。 B 信息隱藏既可以隱藏屬性,也可以隱藏操作。 C 一個對象信息隱藏的內(nèi)容對任何對象都是一樣的,并不隨與之交互的對象的不同而改變。 D 信息隱藏的原則是公開不變的操作,隱藏易變的操作。2 關(guān)于多態(tài)的描述正確的是( )A 多態(tài)是指在聚合關(guān)系中的各個類中名字相同的屬性和操作具有不同的意義。 B 多態(tài)的實現(xiàn)機制是編譯時靜態(tài)鏈接。C 函數(shù)名重載(overload) 會導(dǎo)致多態(tài)現(xiàn)象出現(xiàn)。
18、D 多態(tài)可實現(xiàn)接口復(fù)用,節(jié)省大量的編碼工作量. 3 關(guān)于重載(overload)與覆蓋(override)的說法正確的是( )。A 如果子類中的成員函數(shù)f(x)具有父類中成員函數(shù)f(x)相同的函數(shù)名,那么稱子類對父類的f(x)進行了覆蓋。B 如果子類中的成員函數(shù)f(x)具有父類中成員函數(shù)f(x)相同的基調(diào),那么稱子類對父類的f(x)進行了重載。 C 重載導(dǎo)致多態(tài),覆蓋與多態(tài)無關(guān)。D 覆蓋由動態(tài)鏈接實現(xiàn),重載由靜態(tài)鏈接實現(xiàn)。 4 關(guān)于用例圖與類圖的描述正確的是( )。A. 參與者是用例圖中的元素,類是類圖中的元素,二者沒有關(guān)系。B. 用例圖中用例應(yīng)全部識別為類圖中的同名類。C. 用例圖中參與者應(yīng)
19、全部識別為類圖中的同名類。D. 用例圖中參與者有可能識別為類圖中的主動類5. 關(guān)于狀態(tài)圖的陳述正確的是( )A 一個對象自身的屬性值變化不能作為其狀態(tài)圖中的事件。B 歷史狀態(tài)是指一個對象以前曾經(jīng)所處的狀態(tài)集合。C 動作是在狀態(tài)內(nèi)或在轉(zhuǎn)化時所做的操作,是原子的和即時的。D 一個狀態(tài)的內(nèi)部轉(zhuǎn)換與自轉(zhuǎn)換的意義是相同的。6. 關(guān)于關(guān)聯(lián)與消息之間的關(guān)系的說法正確的是( )A. 關(guān)聯(lián)的目的是為了提供服務(wù),必然導(dǎo)致消息傳遞B. 只有兩個類之間存在關(guān)聯(lián),才能互發(fā)消息C. 兩個類的實例之間沒有關(guān)聯(lián)鏈,但仍可以傳遞消息D. 若兩個對象之間有鏈,則二者一定具有消息傳遞關(guān)系7. 下列關(guān)于面向?qū)ο蟮姆治雠c設(shè)計的描述,正
20、確的是 ( )。 A 面向?qū)ο蠓治鲕浖鍪裁?,設(shè)計描述軟件要怎么做。B 面向?qū)ο蠓治雒枋鰡栴}域與系統(tǒng)責(zé)任,面向?qū)ο蟮脑O(shè)計考慮與軟件實現(xiàn)有關(guān)的問題。C 面向?qū)ο蠓治雠c面向?qū)ο蟮脑O(shè)計遵循不同的范型。D 面向?qū)ο蠓治鲱悎D與面向?qū)ο蟮脑O(shè)計類圖具有相同的類與關(guān)系8. 設(shè)計模式具有的優(yōu)點( ) 。A適應(yīng)需求變化 B.程序易于理解C減少開發(fā)過程中的代碼開發(fā)工作量 D.簡化軟件系統(tǒng)的設(shè)計9. 設(shè)計模式一般用來解決什么樣的問題( )。A. 同一問題的不同表相 B 不同問題的同一表相C.不同問題的不同表相 D.以上都不是10. 設(shè)計模式的兩大主題是( )。A.系統(tǒng)的維護與開發(fā) B.對象組合與類的繼承C.系統(tǒng)架構(gòu)與
21、系統(tǒng)開發(fā) D. 系統(tǒng)復(fù)用與系統(tǒng)擴展11. 以下哪些問題通過應(yīng)用設(shè)計模式不能夠解決 。 ( )A)指定對象的接口 B)針對接口編程C)確定軟件的功能都正確實現(xiàn) D)設(shè)計應(yīng)支持變化12. Adapter(適配器)模式的意圖是( ) 。A. 希望簡化現(xiàn)有系統(tǒng)的使用方法。你需要定義自己的接口。B 將一個無法控制的現(xiàn)有對象與一個特定接口相匹配。C. 將一組實現(xiàn)部分從另一組使用它們的對象中分離出來。D你需要為特定的客戶(或情況)提供特定系列的對象。13. 下面不屬于創(chuàng)建型模式的有( ) 。A抽象工廠模式( Abstract Factory ) B工廠方法模式(Factory Method)C 適配器模式 ( Adapter ) D單例模式(Singleton)14. 將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口。這句話是對下列哪種模式的描述( ) 。A. 策略模式(Strategies) B橋接模式(Bridge)C 適配器模式( Adapter ) D單例模式(Singleton)15. 以下關(guān)于結(jié)構(gòu)型模式說法不正確的是 。 ( )A)結(jié)構(gòu)型模式可以在不破壞類封
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年山東省煙臺市、龍口市英語七下期中學(xué)業(yè)水平測試試題含答案
- 數(shù)字化運營視角下的2025年商業(yè)地產(chǎn)客戶滿意度提升策略報告
- 2025年虛擬偶像產(chǎn)業(yè)發(fā)展趨勢與市場分析報告
- 文化遺產(chǎn)數(shù)字化展示與傳播在數(shù)字博物館建設(shè)中的應(yīng)用策略報告
- 2025年廣東省佛山市南海區(qū)新芳華學(xué)校八下英語期末調(diào)研模擬試題含答案
- 2025年醫(yī)藥企業(yè)CRO研發(fā)外包的合作模式與項目風(fēng)險控制報告
- 準(zhǔn)備培訓(xùn)課件的通知
- 新能源汽車生產(chǎn)基地產(chǎn)業(yè)競爭力評估與初步設(shè)計報告
- 爆破考試試題及答案
- 2025年金融業(yè)人工智能算法審計在審計效率提升中的實踐報告
- 2025年人教版小學(xué)數(shù)學(xué)三年級下冊期末考試卷(帶答案)
- 國家開放大學(xué)電大《國際私法》形考任務(wù)1-5題庫及答案
- 2025年山西焦煤西山煤電集團招聘筆試參考題庫含答案解析
- 山東省濟南市歷城區(qū)2023-2024學(xué)年七年級下學(xué)期期末語文試題(解析版)
- 零碳園區(qū)解決方案
- 融資并購項目財務(wù)顧問協(xié)議賣方大股東為個人模版
- 智能制造MES項目實施方案(注塑行業(yè)MES方案建議書)
- 北京市朝陽區(qū)2020-2021學(xué)年五年級下學(xué)期期末考試語文試卷(含答案解析)
- 初二物理上冊各章知識點廣州人教版
- 未達交付條件的房屋拒收函
- 精裝項目施工策劃
評論
0/150
提交評論