1 在進(jìn)行順序查找過程中,如果線性表中被查的元素是線性表中的最后一個,或者被查元素根本不在線性表中,則為了查找這個元素需要與線性表中所有元素進(jìn)行比較,這是順序查找最壞的情況。
信息隱蔽是指在一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。
2 模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。
衡量軟件的模塊獨立性的度量標(biāo)準(zhǔn)是耦合性和內(nèi)聚性。一個模塊的內(nèi)聚性越強(qiáng),則該模塊的模塊獨立性越強(qiáng)。而內(nèi)聚性是信息隱蔽和局部化概念的自然擴(kuò)展。
面向?qū)ο蟮脑O(shè)計方法與傳統(tǒng)的的面向過程的方法有本質(zhì)不同,它的基本原理是,使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。它強(qiáng)調(diào)模擬現(xiàn)實世界中的概念而不強(qiáng)調(diào)算法,它鼓勵開發(fā)者在軟件開發(fā)的絕大部分中都用應(yīng)用領(lǐng)域的概念去思考。
總體設(shè)計過程通常由兩個主要階段組成:系統(tǒng)設(shè)計,確定系統(tǒng)的具體實現(xiàn)方案;結(jié)構(gòu)設(shè)計,確定軟件結(jié)構(gòu)。為確定軟件結(jié)構(gòu),首先需要從實現(xiàn)角度把復(fù)雜的功能進(jìn)一步分解。分析員結(jié)合算法描述仔細(xì)分析數(shù)據(jù)流圖中的每個處理,如果一個處理的功能過分復(fù)雜,必須把它的功能適當(dāng)?shù)胤纸獬梢幌盗斜容^簡單的功能。
3 數(shù)據(jù)庫概念設(shè)計的過程中,視圖設(shè)計一般有三種設(shè)計次序,它們是:
1、自頂向下。這種方法是先從抽象級別高且普遍性強(qiáng)的對象開始逐步細(xì)化、具體化與特殊化。
2、由底向上。這種設(shè)計方法是先從具體的對象開始,逐步抽象,普遍化與一般化,最后形成一個完整的視圖設(shè)計。
3、由內(nèi)向外。這種設(shè)計方法是先從最基本與最明顯的對象著手逐步擴(kuò)充至非基本、不明顯的其它對象。
4 在方法中定義的局部變量在方法退出時被自動撤消,只有靜態(tài)變量不會被撤消。如果未對變量指定修釋符,在JAVA中將自動將其設(shè)置為局部變量,局部變量也叫自動變量,對于方法外面的變量,將在對象被創(chuàng)建時一起被創(chuàng)建,其初值可通過構(gòu)造函數(shù)對其進(jìn)行初始化。如果方法中是一個簡單類型的形參,由于其是按值傳遞,在編譯時會占用存儲空間,直到該對象釋放時為止。如果形參為一個類類型,其參數(shù)是按地址傳遞,編譯時不會為其分配空間,因此該參變量不會存在于方法中。
5 類加載器(class loader)加載程序運行所需要的所有類,它通過區(qū)分本機(jī)文件系統(tǒng)的類和網(wǎng)絡(luò)系統(tǒng)導(dǎo)入的類增加安全性,這可以限制任何的特洛伊木馬程序,因為本機(jī)類總是先被加載,一旦所有的類被加載完,執(zhí)行文件的內(nèi)存劃分就固定了,在這個時候特定的內(nèi)存地址被分配給對應(yīng)的符號引用,查找表(lookup table)也被建立,由于內(nèi)存劃分發(fā)生在運行時,解釋器在受限制的代碼區(qū)增加保護(hù)防止未授權(quán)的訪問;然后字節(jié)碼校驗器(byte code verifier)進(jìn)行校驗,主要執(zhí)行下面的檢查:類符合JVM規(guī)范的類文件格式,沒有違反訪問限制,代碼沒有造成堆棧的上溢或者下溢,所有操作代碼的參數(shù)類型都是正確的,沒有非法的數(shù)據(jù)類型轉(zhuǎn)換(例如將整型數(shù)轉(zhuǎn)換成對象類型)發(fā)生;校驗通過的字節(jié)碼被解釋器(interpreter)執(zhí)行,解釋器在必要時通過運行時系統(tǒng)執(zhí)行對底層硬件的合適調(diào)用。
7 public class Parent {
public int addValue( int a, int b) {
int s;
s = a+b;
return s;
}
}
class Child extends Parent {
}
選項中__B____方法可以正確加入類Child中且父類的方法不會被覆蓋。
A、int addValue( int a, int b ){// do something...}
B、public void addValue (){// do something...}
C、public int addValue( int a, int b )throws MyException {//do something...}
D、public float addValue ( int a ,int b, float b=1.0 ){// do something...}
解析:此題涉及方法重載(overload),方法重寫(override)以及類派生時方法重寫的規(guī)則。方法重載的規(guī)則是:
一、參數(shù)列表必須不同,個數(shù)的不同完全可以,如果個數(shù)相同,則參數(shù)類型的不同不會引起歧意,例如int和long,float和double就不能作為唯一的類型不同;
二、返回值可以不同,但是不能是重載時唯一的不同點(這點和c++中不同,c++中返回類型必須一致)。
方法重寫發(fā)生在類繼承時,子類可以重寫一個父類中已有的方法,必須在返回類型和參數(shù)列表一樣時才能說是重寫,否則就是重載,java中方法重寫的一個重要而且容易被忽略的規(guī)則是重寫的方法的訪問權(quán)限不能比被重寫的方法的訪問權(quán)限低!
重寫的另一個規(guī)則是重寫的方法不能比被重寫的方法拋棄(throws)更多種類的異常,其拋棄的異常只能少,或者是其子類,不能以拋棄異常的個數(shù)來判斷種類,而應(yīng)該是異常類層次結(jié)果上的種類。
此題中選取項A的錯誤就是重寫的訪問權(quán)限比被重寫的方法的低,而B屬于重載,選項C的錯誤在于比被重寫的方法拋棄了更多種類的異常。選項D中,當(dāng)只傳遞兩個變量的值的時候,那系統(tǒng)就不知道倒底調(diào)用哪個方法了,因為b為常量,可以不指定,所以只有選項B是符合題意的。
8 假設(shè)有以下代碼
String s= "hello";
String t = "hello";
char c[] = {’h’,’e’,’l’,’l’,’o’} ;
下列選項中返回false的語句是 B 。
A、s.equals(t); B、t.equals(c); C、s==t; D、t.equals(new String("hello"));
解析:==操作符比較的是操作符兩端的操作數(shù)是否是同一個對象,而String的equals()方法比較的是兩個String對象的內(nèi)容是否一樣,其參數(shù)是一個String對象時才有可能返回true,其它對象都返回假。需要指出的是由于s和t并非使用new創(chuàng)建的,他們指向內(nèi)存池中的同一個字符串常量,因此其地址實際上是相同的(這個可以從反編譯一個簡單的測試程序的結(jié)果得到,限于篇幅不列出測試代碼和反編譯的分析),因此答案C也是正確的。
希望與更多計算機(jī)等級考試的網(wǎng)友交流,請進(jìn)入計算機(jī)等級考試論壇
更多信息請訪問:考試吧計算機(jī)等級考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |