《先進(jìn)軟件開發(fā)技術(shù)與工具》試題
1. 介紹創(chuàng)建.NET程序的基本步驟。(4分)
答:打開Visual Stdio 2008 文件菜單 新建 項(xiàng)目 選擇語言和項(xiàng)目類型 編寫代碼 編譯 運(yùn)行。
2. C#語言的特點(diǎn)?(5分)
●簡(jiǎn)潔的語法
●精心地面向?qū)ο笤O(shè)計(jì)
●與Web的緊密結(jié)合
●完整的安全性與錯(cuò)誤處理
●版本處理技術(shù)
●靈活性與兼容性
3. C#中參數(shù)傳遞有哪些方式?各有什么特點(diǎn)?(6分) 答:有傳值和傳引用方式。
傳值方式,是指將實(shí)際參數(shù)的值復(fù)制一份,存入形式參數(shù)中。在方法中對(duì)形式參數(shù)值的改變不會(huì)影響到實(shí)際參數(shù)。
傳引用方式,是指將實(shí)際參數(shù)的地址復(fù)制一份,存入形式參數(shù)中,在方法中通過地址可以改變實(shí)際參數(shù)的值。
4. e is T在什么時(shí)候返回true?e as T在什么時(shí)候返回非null?(6分) 答:e is T在對(duì)象e的類型為T時(shí)返回true。
e as T在對(duì)象e兼容于T類型時(shí),返回非null。
5. 給出C#語言效率低于C/C++語言的3個(gè)原因。(6分) 答:(不確定)
C#有高級(jí)內(nèi)存管理機(jī)制,方便了開發(fā),但降低了代碼效率;
C#代碼是托管運(yùn)行的,效率較低;
C#不能直接進(jìn)行內(nèi)存管理,效率低。
6. 解釋以下基本概念。(14分)
(1)托管代碼 (2)抽象類 (3)接口 (4)引用類型
(5)異常 (6)屬性 (7)值類型
答:
。1)托管代碼——由公共語言運(yùn)行庫環(huán)境(而不是直接由操作系統(tǒng))執(zhí)行的代碼。
。2)抽象類——至少包含一個(gè)抽象方法的類,該類不能被實(shí)例化。
。3)接口——只包含方法、屬性、索引器、事件,均為public權(quán)限,而且方法只有定義沒有方法體。
。4)引用類型——直接存儲(chǔ)變量值的引用,該類型的變量作參數(shù),傳遞的是值所在的地址。
。5)異!绦驁(zhí)行時(shí)遇到的任何錯(cuò)誤情況或意外行為
(6)屬性——屬性是這樣的成員:它提供靈活的`機(jī)制來讀取、編寫或計(jì)算某個(gè)私有字段的值。
。7)值類型——直接存儲(chǔ)變量的值,該類型的變量作參數(shù),傳遞的是變量的副本。
7. 虛方法、抽象方法、靜態(tài)方法、接口中的方法和密封方法有何區(qū)別?(10分)
答:虛方法:用virtual修飾,告訴編譯器這個(gè)方法可以在派生類中被改寫。
抽象方法:用abstract修飾,沒有方法體,它所在的類是抽象類。抽象方法必須由其所在類的派生類重寫,除非該派生類也是抽象方法。
靜態(tài)方法:用Static修飾,靜態(tài)方法存儲(chǔ)在類空間中,直接由類訪問。
接口中的方法:只有方法的聲明,沒有方法體,必須由接口的派生類重寫。
密封方法:用seal修飾,表示該方法不能被派生類重寫。
8. 抽象類、密封類和接口有何區(qū)別?各在什么情況下使用?(10分) 答:抽象類:至少含有一個(gè)抽象方法的類。用于各派生類有同樣的行為,但實(shí)現(xiàn)代碼各不一樣的情況,這時(shí)可以基類中定義即抽象方法,該基類就是抽象類。
密封類:表示該類不能被繼承。用于不希望該類被繼承或修改的情況。
接口:只包含方法、屬性、索引器、事件,均為public權(quán)限,而且方法只有定義沒有方法體。用于向外界聲明所具有的行為,用于實(shí)現(xiàn)多重繼承。
9. 下列程序片斷有何錯(cuò)誤?(12分)
(1)
class BaseClass
{ public virtual void f1() { }
} class DerivedClass : BaseClass { } public void f1() { }
答:DerivedClass中f1應(yīng)改為public override void f1(){},加上override。
(2)
class BaseClass
class DerivedClass : BaseClass { } public void f1() { } } { public sealed void f1() { } 答:DerivedClass中f1()不能被重寫。
(3)
abstract class BaseClass
class DerivedClass : BaseClass { } public void f2() { } } { public abstract void f1() { }
答:BaseClass中f1應(yīng)為public abstract void f1();,沒有方法體;
DerivedClass中應(yīng)添加public void f1(){……},實(shí)現(xiàn)抽象方法。
10. 寫出下列程序的輸出。(7分)
class BaseClass
} new public void f2() { } Console.WriteLine("DerivedClass.f2"); class DerivedClass : BaseClass { public override void f1() { } Console.WriteLine("DerivedClass.f1"); } public void f2() { } Console.WriteLine("BaseClass.f2"); { public virtual void f1() { } Console.WriteLine("BaseClass.f1");
} b.f1(); b.f2(); BaseClass b = d; static void Main(string[] args) { DerivedClass d = new DerivedClass();
答:(答案沒驗(yàn)證)
BaseClass.f1
BaseClass.f2
11. 編寫一個(gè)程序,接收用戶輸入的兩個(gè)數(shù)字(這兩個(gè)數(shù)字不能都大
于30,否則要求用戶重新輸入),計(jì)算兩數(shù)的乘積并輸出。(8分) 答:
static void Main(string[] args)
{
} Console.Write("請(qǐng)輸入小于30的數(shù)字:"); y = int.parse(Console.ReadLine()); while(y>30) { } z = x*y; Console.WriteLine("結(jié)果是:"+z); Console.Write("請(qǐng)輸重新入小于30的數(shù)字:"); y = int.parse(Console.ReadLine()); int x=100,y=100,z; Console.Write("請(qǐng)輸入小于30的數(shù)字:"); x = int.parse(Console.ReadLine()); while(x>30) { } Console.Write("請(qǐng)輸重新入小于30的數(shù)字:"); x = int.parse(Console.ReadLine());
12. 馬(Horse)、大象(Elephant)、老虎(Tiger)、獅子(Lion)是動(dòng)物(Animal),動(dòng)物能夠Eat,但是不同的動(dòng)物有不同的Eat行為。另外,有些動(dòng)物具有食肉特性(ICarnivore),食肉動(dòng)物能夠捕食(Prey)。定義類和接口用類繼承和接口實(shí)現(xiàn)來表示以上事物之間的關(guān)系。(12分)
答:
interface ICarnivore
{
} public void Prey(); //食肉特性
【《先進(jìn)軟件開發(fā)技術(shù)與工具》試題】相關(guān)文章:
軟件開發(fā)技術(shù)合同04-27
服務(wù)軟件開發(fā)技術(shù)思考論文01-12
信息技術(shù)試題03-01
信息技術(shù)《多變的刷子工具》教學(xué)設(shè)計(jì)08-09
軟件開發(fā)技術(shù)員的自我評(píng)價(jià)01-28
軟件開發(fā)技術(shù)經(jīng)理崗位職責(zé)10-07
電工技術(shù)試題及答案04-26
電子技術(shù)基礎(chǔ)試題03-19
信息技術(shù)試題及答案03-17