(41) 在下列選項(xiàng)中,哪個(gè)不是一個(gè)算法一般應(yīng)該具有的基本特征______。
A. 確定性
B. 可行性
C. 無(wú)窮性
D. 擁有足夠的情報(bào)
(41)
[答案]C
[考點(diǎn)]程序設(shè)計(jì)基礎(chǔ)
[評(píng)析]
算法具有確定性、可行性,并擁有足夠的情報(bào)。
(42) 希爾排序法屬于哪一種類型的排序法______。
A. 交換類排序法
B. 插入類排序法
C. 選擇類排序法
D. 建堆排序法
(42)
[答案]B
[考點(diǎn)]數(shù)據(jù)結(jié)構(gòu)與算法
[評(píng)析]
Shell排序法 輸入:數(shù)組名稱(也就是數(shù)組首地址)、數(shù)組中元素個(gè)數(shù)思想為:在直接插入排序算法中,每次插入一個(gè)數(shù),使有序序列只增加1個(gè)節(jié)點(diǎn), 并且對(duì)插入下一個(gè)數(shù)沒(méi)有提供任何幫助。如果比較相隔較遠(yuǎn)距離(稱為增量)的數(shù),使得數(shù)移動(dòng)時(shí)能跨過(guò)多個(gè)元素,則進(jìn)行一次比較就可能消除多個(gè)元素交換。D.L.shell于1959年在以他名字命名的排序算法中實(shí)現(xiàn)了這一思想。算法先將要排序的一組數(shù)按某個(gè)增量d分成若干組,每組中記錄的下標(biāo)相差d.對(duì)每組中全部元素進(jìn)行排序,然后再用一個(gè)較小的增量對(duì)它進(jìn)行,在每組中再進(jìn)行排序。當(dāng)增量減到1時(shí),整個(gè)要排序的數(shù)被分成一組,排序完成。
下面的函數(shù)是一個(gè)希爾排序算法的一個(gè)實(shí)現(xiàn),初次取序列的一半為增量,
以后每次減半,直到增量為1。以C語(yǔ)言為例。
void shell_sort(int *x, int n)
{
int h, j, k, t;
for (h=n/2; h>0; h=h/2) /*控制增量*/
{
for (j=h; j {
t = *(x+j);
for (k=j-h; (k>=0 && t<*(x+k)); k-=h)
{
*(x+k+h) = *(x+k);
}
*(x+k+h) = t;
}
}
}
故屬于插入類排序法。
(43) 下列關(guān)于隊(duì)列的敘述中正確的是______。
A. 在隊(duì)列中只能插入數(shù)據(jù)
B. 在隊(duì)列中只能刪除數(shù)據(jù)
C. 隊(duì)列是先進(jìn)先出的線性表
D. 隊(duì)列是先進(jìn)后出的線性表
(43)
[答案]C
[考點(diǎn)]數(shù)據(jù)構(gòu)與算法
[評(píng)析]
隊(duì)列是先進(jìn)先出的,棧是先進(jìn)后出的,2者的區(qū)別一定要搞清楚。
(44) 對(duì)長(zhǎng)度為N的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為_(kāi)_____。
A. N+1
B. N
C. (N+1)/2
D. N/2
(44)
[答案]B
[考點(diǎn)]數(shù)據(jù)結(jié)構(gòu)與算法
[評(píng)析]
很簡(jiǎn)單,我們的二級(jí)程序設(shè)計(jì)語(yǔ)言書(shū)中都有此算法,另外還要掌握二分法查找,這也是我們二級(jí)中常考的。
那么二分法最壞的情況為多少次呢?
>log2 n的最小整數(shù)值。
比如n為4,最壞的情況要比較3次;
n為18,最壞的情況要比較5次。
二分法適用于已排序的順序表(我們二級(jí)語(yǔ)言中都是數(shù)組),考二級(jí)書(shū)里的,這里不再羅嗦。
(45) 信息隱蔽的概念與下述哪一種概念直接相關(guān)______。
A. 軟件結(jié)構(gòu)定義
B. 模塊獨(dú)立性
C. 模塊類型劃分
D. 模擬耦合度
(45)
[答案]B
[考點(diǎn)]軟件工程基礎(chǔ)
[評(píng)析]
模塊獨(dú)立性越強(qiáng),則信息隱蔽性越好。
舉個(gè)例,
VB:
在多重窗體設(shè)計(jì)時(shí),每個(gè)窗體里的變量盡量與其它窗體里變量無(wú)關(guān),比如少用Public聲明的變量,即全局變量,當(dāng)多個(gè)窗體共享全局變量越多時(shí),窗體的獨(dú)立性就越差。
C:
頭文件里的一些函數(shù),一般不用到全局變量,否則在主程序里出亂子的情況很多,我們?cè)谀K化開(kāi)發(fā)時(shí),盡量使每個(gè)模塊獨(dú)立,強(qiáng)功能內(nèi)聚,分工明確,調(diào)試程序也要方便得多。
C++:
考此項(xiàng)的朋友估計(jì)不用我多講,類的封裝性就是一個(gè)很好的說(shuō)明。
(46) 面向?qū)ο蟮脑O(shè)計(jì)方法與傳統(tǒng)的的面向過(guò)程的方法有本質(zhì)不同,它的基本原理是______。
A. 模擬現(xiàn)實(shí)世界中不同事物之間的聯(lián)系
B. 強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的算法而不強(qiáng)調(diào)概念
C. 使用現(xiàn)實(shí)世界的概念抽象地思考問(wèn)題從而自然地解決問(wèn)題
D. 鼓勵(lì)開(kāi)發(fā)者在軟件開(kāi)發(fā)的絕大部分中都用實(shí)際領(lǐng)域的概念去思考
(46)
[答案]C
[考點(diǎn)]軟件工程基礎(chǔ)
[評(píng)析]
我們舉個(gè)例,
從各種語(yǔ)言的結(jié)構(gòu)體類型出發(fā),我們知道,結(jié)構(gòu)體中可以定義很多變量,對(duì)每個(gè)變量執(zhí)行相同的操作,挨個(gè)挨個(gè)寫(xiě)出,很麻煩。假設(shè)該結(jié)構(gòu)體有如下變量:
草魚(yú)、田魚(yú)、鯽魚(yú)……
它們都在一口池塘里,現(xiàn)在執(zhí)行:它們都上來(lái)
傳統(tǒng)的程序設(shè)計(jì)是:
草魚(yú)上來(lái)
田魚(yú)上來(lái)
鯽魚(yú)上來(lái)
……
一條一條都寫(xiě)出,是不是很麻煩?
改進(jìn)一下,我們用個(gè)循環(huán):
n等于從1到10(假設(shè)共有10種魚(yú))
第n種魚(yú)上來(lái)
還是很麻煩,現(xiàn)實(shí)中我們很易想到用"面向?qū)ο蟮乃枷?,池塘里所有的魚(yú)都是一個(gè)結(jié)構(gòu)體變量,名為魚(yú),執(zhí)行:
魚(yú)上來(lái)
意思即所有的魚(yú)都上來(lái)。
現(xiàn)特定于面象對(duì)象語(yǔ)言中的類,魚(yú),就可以看作為一類。
這就屬于 C 項(xiàng):
使用現(xiàn)實(shí)世界的概念抽象地思考問(wèn)題從而自然地解決問(wèn)題
這樣羅嗦的解釋望大家別暈,旨在幫助部分人的確難想通的,為應(yīng)試,你能背下答案也行。
(47) 在結(jié)構(gòu)化方法中,軟件功能分解屬于下列軟件開(kāi)發(fā)中的階段是______。
A. 詳細(xì)設(shè)計(jì)
B. 需求分析
C. 總體設(shè)計(jì)
D. 編程調(diào)試
(47)
[答案]C
[考點(diǎn)]軟件工程基礎(chǔ)
[評(píng)析]
從先到后一排,是:
需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編程調(diào)試
需求分析遠(yuǎn)離在計(jì)算機(jī)上的實(shí)現(xiàn),談不上功能的分解;
有了需求分析的報(bào)告,軟件設(shè)計(jì)員可以思考我要讓軟件怎么做,開(kāi)始總體設(shè)計(jì),其間將軟件的功能分解,確定模塊之間的接口;
有了每個(gè)模塊功能的分解,再對(duì)每個(gè)模塊進(jìn)入詳細(xì)設(shè)計(jì)階段;
接下來(lái)再是程序員的任務(wù),編寫(xiě)代碼,開(kāi)始編程調(diào)試。
(48) 軟件調(diào)試的目的是______。
A. 發(fā)現(xiàn)錯(cuò)誤
B. 改正錯(cuò)誤
C. 改善軟件的性能
D. 挖掘軟件的潛能
(48)
[答案]B
[考點(diǎn)]軟件工程基礎(chǔ)
[評(píng)析]
倒!
一個(gè)程序調(diào)試是為了干什么?
還不是為了改正錯(cuò)誤?
發(fā)現(xiàn)錯(cuò)誤?這只是一個(gè)過(guò)程,改正錯(cuò)誤之前必須先發(fā)現(xiàn)錯(cuò)誤,總不能目的就僅為發(fā)現(xiàn)錯(cuò)誤吧。
(49) 按條件f對(duì)關(guān)系R進(jìn)行選擇,其關(guān)系代數(shù)表達(dá)式為_(kāi)_____。
A. R|X|R
B. R|X|R
f
C. бf(R)
D. ∏f(R)
(49)
[答案]C
[考點(diǎn)]數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)
[評(píng)析]
C是選擇一行,D是投影一列,二者要區(qū)分開(kāi)。
如果不僅談此題的話,有關(guān)關(guān)系代數(shù),內(nèi)容有些多,這里不是一兩句能說(shuō)清,可以看看相關(guān)《數(shù)據(jù)庫(kù)》的資料中的關(guān)系代數(shù),里面寫(xiě)得很詳細(xì)。為應(yīng)試,情急之下能記住幾個(gè)題答案就行。
(50) 數(shù)據(jù)庫(kù)概念設(shè)計(jì)的過(guò)程中,視圖設(shè)計(jì)一般有三種設(shè)計(jì)次序,以下各項(xiàng)中不對(duì)的是______。
A. 自頂向下
B. 由底向上
C. 由內(nèi)向外
D. 由整體到局部
(50)
[答案]D
[考點(diǎn)]數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)
[評(píng)析]
通常有如下幾種方法:
1、自頂向下。先全局框架,然后逐步細(xì)化
2、自底向上。先局部概念結(jié)構(gòu),再集成為全局結(jié)構(gòu)
3、由里向外。先核心結(jié)構(gòu),再向外擴(kuò)張
4、混合策略。1與2相結(jié)合,先自頂向下設(shè)計(jì)一個(gè)概念結(jié)構(gòu)的框架,再自底向上為框架設(shè)計(jì)局部概念結(jié)構(gòu)
(51) 在計(jì)算機(jī)中,算法是指______。
A. 查詢方法
B. 加工方法
C. 解題方案的準(zhǔn)確而完整的描述
D. 排序方法
(51)
[答案]C
[考點(diǎn)]數(shù)據(jù)結(jié)構(gòu)與算法
[評(píng)析]
A、B、D都過(guò)于片面,此題直接選答案也很簡(jiǎn)單。
(52) 棧和隊(duì)列的共同點(diǎn)是______。
A. 都是先進(jìn)后出
B. 都是先進(jìn)先出
C. 只允許在端點(diǎn)處插入和刪除元素
D. 沒(méi)有共同點(diǎn)
(52)
[答案]C
[考點(diǎn)]數(shù)據(jù)結(jié)構(gòu)與算法
[評(píng)析]
棧是先進(jìn)后出的,隊(duì)列是先進(jìn)先出的,共同點(diǎn)是只允許在端點(diǎn)處插入和刪除元素。棧都是在一端進(jìn)與出,而隊(duì)列是在一端進(jìn)在另一端出。
(53) 已知二叉樹(shù)后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是______。
A. cedba
B. acbed
C. decab
D. deabc
(53)
[答案]A
[考點(diǎn)]數(shù)據(jù)結(jié)構(gòu)與算法
[評(píng)析]
后序又叫后根,一次遞歸過(guò)程是先左再右最后根;中序是先左再根最后右。
比如下圖:
前序是:abc
中序是:bac
后序是:bca
題中據(jù)后序遍歷序列,一眼得知c結(jié)點(diǎn)是根,那么據(jù)中序deba結(jié)點(diǎn)都在一邊,或都在根結(jié)點(diǎn)左邊,或右邊;據(jù)中序遍歷序列得知全在根結(jié)點(diǎn)的左邊。
接下來(lái)?yè)?jù)后序得出e結(jié)點(diǎn)是緊挨著c結(jié)點(diǎn)的左子女,再據(jù)中序得知d是e的左子女,ba是右子樹(shù)。
再據(jù)后序得b是e的右子女,再據(jù)中序得a是b的右子女。
分析結(jié)果得二叉樹(shù)圖示如下:
因?yàn)槲颐~數(shù)據(jù)結(jié)構(gòu)是自學(xué)的,分析此類型的題我都是用自己的方法(遞歸分析的方法),要邊分析邊畫(huà)圖,一步一步連結(jié)起來(lái),最后再根據(jù)題中的遍歷檢查圖是否畫(huà)對(duì),如果都符合題目,最后再可根據(jù)圖來(lái)得所求的遍歷。
再次聲明,此所有二級(jí)公基題全是我一人的思路寫(xiě)的,如果你覺(jué)得不可靠,可以看其它的書(shū)。
(54) 在下列幾種排序方法中,要求內(nèi)存量的是______。
A. 插入排序
B. 選擇排序
C. 快速排序
D. 歸并排序
(54)
[答案]D
[考點(diǎn)]數(shù)據(jù)結(jié)構(gòu)與算法
[分析]
我們對(duì)比一個(gè)排序方法的優(yōu)越性有"平均時(shí)間"、"最壞情況時(shí)間"和"輔助空間"。其中輔助空間一般是排序中需要額外的內(nèi)存開(kāi)銷,這些內(nèi)存開(kāi)銷一般據(jù)一些如中間變量(暫存變量)、比較與交換等等來(lái)決定。
插入排序和選擇排序的輔助空間都是o(1),快速排序是o(nlog2n),歸并排序是o(n)。
可知?dú)w并排序要求內(nèi)存量,我們也可以從其變量及循環(huán)個(gè)數(shù)也以看出歸并排序要求內(nèi)存量。
(55) 在設(shè)計(jì)程序時(shí),應(yīng)采納的原則之一是______。
A. 程序結(jié)構(gòu)應(yīng)有助于讀者理解
B. 不限制goto語(yǔ)句的使用
C. 減少或取消注解行
D. 程序越短越好
(55)
[答案]A
[考點(diǎn)]程序設(shè)計(jì)基礎(chǔ)
[評(píng)析]
前面的題中已解釋過(guò),二級(jí)的各種程序設(shè)計(jì)語(yǔ)言教程都會(huì)對(duì)結(jié)構(gòu)化程序設(shè)有一定的介紹,比如goto語(yǔ)句的限制使用,基本上每本書(shū)上都會(huì)提到。
其中A,即易讀性比程序的效率更顯得重要,這是結(jié)構(gòu)化程序設(shè)計(jì)原則提倡的,也是我們進(jìn)行開(kāi)發(fā)時(shí)非常重要的一點(diǎn)。
(56) 下列不屬于軟件調(diào)試技術(shù)的是______。
A. 強(qiáng)行排錯(cuò)法
B. 集成測(cè)試法
C. 回溯法
D. 原因排除法
(56)
[答案]B
[考點(diǎn)]軟件工程基礎(chǔ)
[評(píng)析]
耍個(gè)小聰明:)
我們嚴(yán)格區(qū)分調(diào)試與測(cè)試,調(diào)試是已知有錯(cuò)誤而來(lái)找錯(cuò)誤,是被動(dòng)的;測(cè)試有很多種,比如未發(fā)現(xiàn)錯(cuò)誤但不能保證程序沒(méi)錯(cuò)而來(lái)找BUG,還比如我們運(yùn)行測(cè)試程序是否符合用戶的要求,是主動(dòng)的。不用說(shuō)答案就是B了 :)
A、C、D都是具體的程序調(diào)試方法,而B(niǎo)是宏觀的程序測(cè)試方法。
測(cè)試有單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試、系統(tǒng)測(cè)試。比如我們?cè)谶M(jìn)行單元測(cè)試時(shí),發(fā)現(xiàn)程序有錯(cuò)誤,我們?cè)倏梢愿鶕?jù)A、C、D的方法來(lái)找錯(cuò)誤。
題外話:
很多人學(xué)軟件工程時(shí)認(rèn)為軟件工程太無(wú)聊了,似乎全部都是些背背記記的東西,但對(duì)于一個(gè)軟件構(gòu)架師,軟件工程是非常重要的,這就不能是些背背的東西了,最重要的是理解,要徹底地理解,還得有些開(kāi)發(fā)經(jīng)驗(yàn)才行。《軟件工程》這學(xué)科是從實(shí)踐中得出來(lái)的,同樣也需要賦予給實(shí)踐中去,這樣才有用!
(57) 下列敘述中,不屬于軟件需求規(guī)格說(shuō)明書(shū)的作用的是______。
A. 便于用戶、開(kāi)發(fā)人員進(jìn)行理解和交流
B. 反映出用戶問(wèn)題的結(jié)構(gòu),可以作為軟件開(kāi)發(fā)工作的基礎(chǔ)和依據(jù)
C. 作為確認(rèn)測(cè)試和驗(yàn)收的依據(jù)
D. 便于開(kāi)發(fā)人員進(jìn)行需求分析
(57)
[答案]D
[考點(diǎn)]軟件工程基礎(chǔ)
[評(píng)析]
A、B、C都是作用,D說(shuō)法有一定的錯(cuò)誤,開(kāi)發(fā)人員包括很多,比如程序員的工作就不是進(jìn)行需求分析。
(58) 在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示______。
A. 控制程序的執(zhí)行順序
B. 模塊之間的調(diào)用關(guān)系
C. 數(shù)據(jù)的流向
D. 程序的組成成分
(58)
[答案]C
[考點(diǎn)]軟件工程基礎(chǔ)
[評(píng)析]
顧名思義,數(shù)據(jù)流圖就是帶有方框(外部實(shí)體)、圓圈(變換/加工)和帶有名字的箭頭以表示數(shù)據(jù)的流向。需求分析中常用的分析圖,它遠(yuǎn)離計(jì)算機(jī)上的具體實(shí)現(xiàn),軟件人員和用戶都能看懂,有益于和用戶交流。
(59) SQL語(yǔ)言又稱為_(kāi)_____。
A. 結(jié)構(gòu)化定義語(yǔ)言
B. 結(jié)構(gòu)化控制語(yǔ)言
C. 結(jié)構(gòu)化查詢語(yǔ)言
D. 結(jié)構(gòu)化操縱語(yǔ)言
(59)
[答案]C
[考點(diǎn)]數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)
[評(píng)析]
學(xué)VF和ACCESS的朋友輕而易舉選出答案,考其它的朋友們?nèi)魶](méi)學(xué)數(shù)據(jù)庫(kù)技術(shù)這一章節(jié),則要記一下了。
Structured Query Language
結(jié)構(gòu)化 查詢 語(yǔ)言(語(yǔ)句)
(60) 視圖設(shè)計(jì)一般有3種設(shè)計(jì)次序,下列不屬于視圖設(shè)計(jì)的是______。
A. 自頂向下
B. 由外向內(nèi)
C. 由內(nèi)向外
D. 自底向上
(60)
[答案]B
[考點(diǎn)]數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)
[評(píng)析]
通常有如下幾種方法:
1、自頂向下。先全局框架,然后逐步細(xì)化
2、自底向上。先局部概念結(jié)構(gòu),再集成為全局結(jié)構(gòu)
3、由里向外。先核心結(jié)構(gòu),再向外擴(kuò)張
4、混合策略。1與2相結(jié)合,先自頂向下設(shè)計(jì)一個(gè)概念結(jié)構(gòu)的框架,再自底向上為框架設(shè)計(jì)局部概念結(jié)構(gòu)
A. 確定性
B. 可行性
C. 無(wú)窮性
D. 擁有足夠的情報(bào)
(41)
[答案]C
[考點(diǎn)]程序設(shè)計(jì)基礎(chǔ)
[評(píng)析]
算法具有確定性、可行性,并擁有足夠的情報(bào)。
(42) 希爾排序法屬于哪一種類型的排序法______。
A. 交換類排序法
B. 插入類排序法
C. 選擇類排序法
D. 建堆排序法
(42)
[答案]B
[考點(diǎn)]數(shù)據(jù)結(jié)構(gòu)與算法
[評(píng)析]
Shell排序法 輸入:數(shù)組名稱(也就是數(shù)組首地址)、數(shù)組中元素個(gè)數(shù)思想為:在直接插入排序算法中,每次插入一個(gè)數(shù),使有序序列只增加1個(gè)節(jié)點(diǎn), 并且對(duì)插入下一個(gè)數(shù)沒(méi)有提供任何幫助。如果比較相隔較遠(yuǎn)距離(稱為增量)的數(shù),使得數(shù)移動(dòng)時(shí)能跨過(guò)多個(gè)元素,則進(jìn)行一次比較就可能消除多個(gè)元素交換。D.L.shell于1959年在以他名字命名的排序算法中實(shí)現(xiàn)了這一思想。算法先將要排序的一組數(shù)按某個(gè)增量d分成若干組,每組中記錄的下標(biāo)相差d.對(duì)每組中全部元素進(jìn)行排序,然后再用一個(gè)較小的增量對(duì)它進(jìn)行,在每組中再進(jìn)行排序。當(dāng)增量減到1時(shí),整個(gè)要排序的數(shù)被分成一組,排序完成。
下面的函數(shù)是一個(gè)希爾排序算法的一個(gè)實(shí)現(xiàn),初次取序列的一半為增量,
以后每次減半,直到增量為1。以C語(yǔ)言為例。
void shell_sort(int *x, int n)
{
int h, j, k, t;
for (h=n/2; h>0; h=h/2) /*控制增量*/
{
for (j=h; j {
t = *(x+j);
for (k=j-h; (k>=0 && t<*(x+k)); k-=h)
{
*(x+k+h) = *(x+k);
}
*(x+k+h) = t;
}
}
}
故屬于插入類排序法。
(43) 下列關(guān)于隊(duì)列的敘述中正確的是______。
A. 在隊(duì)列中只能插入數(shù)據(jù)
B. 在隊(duì)列中只能刪除數(shù)據(jù)
C. 隊(duì)列是先進(jìn)先出的線性表
D. 隊(duì)列是先進(jìn)后出的線性表
(43)
[答案]C
[考點(diǎn)]數(shù)據(jù)構(gòu)與算法
[評(píng)析]
隊(duì)列是先進(jìn)先出的,棧是先進(jìn)后出的,2者的區(qū)別一定要搞清楚。
(44) 對(duì)長(zhǎng)度為N的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為_(kāi)_____。
A. N+1
B. N
C. (N+1)/2
D. N/2
(44)
[答案]B
[考點(diǎn)]數(shù)據(jù)結(jié)構(gòu)與算法
[評(píng)析]
很簡(jiǎn)單,我們的二級(jí)程序設(shè)計(jì)語(yǔ)言書(shū)中都有此算法,另外還要掌握二分法查找,這也是我們二級(jí)中常考的。
那么二分法最壞的情況為多少次呢?
>log2 n的最小整數(shù)值。
比如n為4,最壞的情況要比較3次;
n為18,最壞的情況要比較5次。
二分法適用于已排序的順序表(我們二級(jí)語(yǔ)言中都是數(shù)組),考二級(jí)書(shū)里的,這里不再羅嗦。
(45) 信息隱蔽的概念與下述哪一種概念直接相關(guān)______。
A. 軟件結(jié)構(gòu)定義
B. 模塊獨(dú)立性
C. 模塊類型劃分
D. 模擬耦合度
(45)
[答案]B
[考點(diǎn)]軟件工程基礎(chǔ)
[評(píng)析]
模塊獨(dú)立性越強(qiáng),則信息隱蔽性越好。
舉個(gè)例,
VB:
在多重窗體設(shè)計(jì)時(shí),每個(gè)窗體里的變量盡量與其它窗體里變量無(wú)關(guān),比如少用Public聲明的變量,即全局變量,當(dāng)多個(gè)窗體共享全局變量越多時(shí),窗體的獨(dú)立性就越差。
C:
頭文件里的一些函數(shù),一般不用到全局變量,否則在主程序里出亂子的情況很多,我們?cè)谀K化開(kāi)發(fā)時(shí),盡量使每個(gè)模塊獨(dú)立,強(qiáng)功能內(nèi)聚,分工明確,調(diào)試程序也要方便得多。
C++:
考此項(xiàng)的朋友估計(jì)不用我多講,類的封裝性就是一個(gè)很好的說(shuō)明。
(46) 面向?qū)ο蟮脑O(shè)計(jì)方法與傳統(tǒng)的的面向過(guò)程的方法有本質(zhì)不同,它的基本原理是______。
A. 模擬現(xiàn)實(shí)世界中不同事物之間的聯(lián)系
B. 強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的算法而不強(qiáng)調(diào)概念
C. 使用現(xiàn)實(shí)世界的概念抽象地思考問(wèn)題從而自然地解決問(wèn)題
D. 鼓勵(lì)開(kāi)發(fā)者在軟件開(kāi)發(fā)的絕大部分中都用實(shí)際領(lǐng)域的概念去思考
(46)
[答案]C
[考點(diǎn)]軟件工程基礎(chǔ)
[評(píng)析]
我們舉個(gè)例,
從各種語(yǔ)言的結(jié)構(gòu)體類型出發(fā),我們知道,結(jié)構(gòu)體中可以定義很多變量,對(duì)每個(gè)變量執(zhí)行相同的操作,挨個(gè)挨個(gè)寫(xiě)出,很麻煩。假設(shè)該結(jié)構(gòu)體有如下變量:
草魚(yú)、田魚(yú)、鯽魚(yú)……
它們都在一口池塘里,現(xiàn)在執(zhí)行:它們都上來(lái)
傳統(tǒng)的程序設(shè)計(jì)是:
草魚(yú)上來(lái)
田魚(yú)上來(lái)
鯽魚(yú)上來(lái)
……
一條一條都寫(xiě)出,是不是很麻煩?
改進(jìn)一下,我們用個(gè)循環(huán):
n等于從1到10(假設(shè)共有10種魚(yú))
第n種魚(yú)上來(lái)
還是很麻煩,現(xiàn)實(shí)中我們很易想到用"面向?qū)ο蟮乃枷?,池塘里所有的魚(yú)都是一個(gè)結(jié)構(gòu)體變量,名為魚(yú),執(zhí)行:
魚(yú)上來(lái)
意思即所有的魚(yú)都上來(lái)。
現(xiàn)特定于面象對(duì)象語(yǔ)言中的類,魚(yú),就可以看作為一類。
這就屬于 C 項(xiàng):
使用現(xiàn)實(shí)世界的概念抽象地思考問(wèn)題從而自然地解決問(wèn)題
這樣羅嗦的解釋望大家別暈,旨在幫助部分人的確難想通的,為應(yīng)試,你能背下答案也行。
(47) 在結(jié)構(gòu)化方法中,軟件功能分解屬于下列軟件開(kāi)發(fā)中的階段是______。
A. 詳細(xì)設(shè)計(jì)
B. 需求分析
C. 總體設(shè)計(jì)
D. 編程調(diào)試
(47)
[答案]C
[考點(diǎn)]軟件工程基礎(chǔ)
[評(píng)析]
從先到后一排,是:
需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編程調(diào)試
需求分析遠(yuǎn)離在計(jì)算機(jī)上的實(shí)現(xiàn),談不上功能的分解;
有了需求分析的報(bào)告,軟件設(shè)計(jì)員可以思考我要讓軟件怎么做,開(kāi)始總體設(shè)計(jì),其間將軟件的功能分解,確定模塊之間的接口;
有了每個(gè)模塊功能的分解,再對(duì)每個(gè)模塊進(jìn)入詳細(xì)設(shè)計(jì)階段;
接下來(lái)再是程序員的任務(wù),編寫(xiě)代碼,開(kāi)始編程調(diào)試。
(48) 軟件調(diào)試的目的是______。
A. 發(fā)現(xiàn)錯(cuò)誤
B. 改正錯(cuò)誤
C. 改善軟件的性能
D. 挖掘軟件的潛能
(48)
[答案]B
[考點(diǎn)]軟件工程基礎(chǔ)
[評(píng)析]
倒!
一個(gè)程序調(diào)試是為了干什么?
還不是為了改正錯(cuò)誤?
發(fā)現(xiàn)錯(cuò)誤?這只是一個(gè)過(guò)程,改正錯(cuò)誤之前必須先發(fā)現(xiàn)錯(cuò)誤,總不能目的就僅為發(fā)現(xiàn)錯(cuò)誤吧。
(49) 按條件f對(duì)關(guān)系R進(jìn)行選擇,其關(guān)系代數(shù)表達(dá)式為_(kāi)_____。
A. R|X|R
B. R|X|R
f
C. бf(R)
D. ∏f(R)
(49)
[答案]C
[考點(diǎn)]數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)
[評(píng)析]
C是選擇一行,D是投影一列,二者要區(qū)分開(kāi)。
如果不僅談此題的話,有關(guān)關(guān)系代數(shù),內(nèi)容有些多,這里不是一兩句能說(shuō)清,可以看看相關(guān)《數(shù)據(jù)庫(kù)》的資料中的關(guān)系代數(shù),里面寫(xiě)得很詳細(xì)。為應(yīng)試,情急之下能記住幾個(gè)題答案就行。
(50) 數(shù)據(jù)庫(kù)概念設(shè)計(jì)的過(guò)程中,視圖設(shè)計(jì)一般有三種設(shè)計(jì)次序,以下各項(xiàng)中不對(duì)的是______。
A. 自頂向下
B. 由底向上
C. 由內(nèi)向外
D. 由整體到局部
(50)
[答案]D
[考點(diǎn)]數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)
[評(píng)析]
通常有如下幾種方法:
1、自頂向下。先全局框架,然后逐步細(xì)化
2、自底向上。先局部概念結(jié)構(gòu),再集成為全局結(jié)構(gòu)
3、由里向外。先核心結(jié)構(gòu),再向外擴(kuò)張
4、混合策略。1與2相結(jié)合,先自頂向下設(shè)計(jì)一個(gè)概念結(jié)構(gòu)的框架,再自底向上為框架設(shè)計(jì)局部概念結(jié)構(gòu)
(51) 在計(jì)算機(jī)中,算法是指______。
A. 查詢方法
B. 加工方法
C. 解題方案的準(zhǔn)確而完整的描述
D. 排序方法
(51)
[答案]C
[考點(diǎn)]數(shù)據(jù)結(jié)構(gòu)與算法
[評(píng)析]
A、B、D都過(guò)于片面,此題直接選答案也很簡(jiǎn)單。
(52) 棧和隊(duì)列的共同點(diǎn)是______。
A. 都是先進(jìn)后出
B. 都是先進(jìn)先出
C. 只允許在端點(diǎn)處插入和刪除元素
D. 沒(méi)有共同點(diǎn)
(52)
[答案]C
[考點(diǎn)]數(shù)據(jù)結(jié)構(gòu)與算法
[評(píng)析]
棧是先進(jìn)后出的,隊(duì)列是先進(jìn)先出的,共同點(diǎn)是只允許在端點(diǎn)處插入和刪除元素。棧都是在一端進(jìn)與出,而隊(duì)列是在一端進(jìn)在另一端出。
(53) 已知二叉樹(shù)后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是______。
A. cedba
B. acbed
C. decab
D. deabc
(53)
[答案]A
[考點(diǎn)]數(shù)據(jù)結(jié)構(gòu)與算法
[評(píng)析]
后序又叫后根,一次遞歸過(guò)程是先左再右最后根;中序是先左再根最后右。
比如下圖:
前序是:abc
中序是:bac
后序是:bca
題中據(jù)后序遍歷序列,一眼得知c結(jié)點(diǎn)是根,那么據(jù)中序deba結(jié)點(diǎn)都在一邊,或都在根結(jié)點(diǎn)左邊,或右邊;據(jù)中序遍歷序列得知全在根結(jié)點(diǎn)的左邊。
接下來(lái)?yè)?jù)后序得出e結(jié)點(diǎn)是緊挨著c結(jié)點(diǎn)的左子女,再據(jù)中序得知d是e的左子女,ba是右子樹(shù)。
再據(jù)后序得b是e的右子女,再據(jù)中序得a是b的右子女。
分析結(jié)果得二叉樹(shù)圖示如下:
因?yàn)槲颐~數(shù)據(jù)結(jié)構(gòu)是自學(xué)的,分析此類型的題我都是用自己的方法(遞歸分析的方法),要邊分析邊畫(huà)圖,一步一步連結(jié)起來(lái),最后再根據(jù)題中的遍歷檢查圖是否畫(huà)對(duì),如果都符合題目,最后再可根據(jù)圖來(lái)得所求的遍歷。
再次聲明,此所有二級(jí)公基題全是我一人的思路寫(xiě)的,如果你覺(jué)得不可靠,可以看其它的書(shū)。
(54) 在下列幾種排序方法中,要求內(nèi)存量的是______。
A. 插入排序
B. 選擇排序
C. 快速排序
D. 歸并排序
(54)
[答案]D
[考點(diǎn)]數(shù)據(jù)結(jié)構(gòu)與算法
[分析]
我們對(duì)比一個(gè)排序方法的優(yōu)越性有"平均時(shí)間"、"最壞情況時(shí)間"和"輔助空間"。其中輔助空間一般是排序中需要額外的內(nèi)存開(kāi)銷,這些內(nèi)存開(kāi)銷一般據(jù)一些如中間變量(暫存變量)、比較與交換等等來(lái)決定。
插入排序和選擇排序的輔助空間都是o(1),快速排序是o(nlog2n),歸并排序是o(n)。
可知?dú)w并排序要求內(nèi)存量,我們也可以從其變量及循環(huán)個(gè)數(shù)也以看出歸并排序要求內(nèi)存量。
(55) 在設(shè)計(jì)程序時(shí),應(yīng)采納的原則之一是______。
A. 程序結(jié)構(gòu)應(yīng)有助于讀者理解
B. 不限制goto語(yǔ)句的使用
C. 減少或取消注解行
D. 程序越短越好
(55)
[答案]A
[考點(diǎn)]程序設(shè)計(jì)基礎(chǔ)
[評(píng)析]
前面的題中已解釋過(guò),二級(jí)的各種程序設(shè)計(jì)語(yǔ)言教程都會(huì)對(duì)結(jié)構(gòu)化程序設(shè)有一定的介紹,比如goto語(yǔ)句的限制使用,基本上每本書(shū)上都會(huì)提到。
其中A,即易讀性比程序的效率更顯得重要,這是結(jié)構(gòu)化程序設(shè)計(jì)原則提倡的,也是我們進(jìn)行開(kāi)發(fā)時(shí)非常重要的一點(diǎn)。
(56) 下列不屬于軟件調(diào)試技術(shù)的是______。
A. 強(qiáng)行排錯(cuò)法
B. 集成測(cè)試法
C. 回溯法
D. 原因排除法
(56)
[答案]B
[考點(diǎn)]軟件工程基礎(chǔ)
[評(píng)析]
耍個(gè)小聰明:)
我們嚴(yán)格區(qū)分調(diào)試與測(cè)試,調(diào)試是已知有錯(cuò)誤而來(lái)找錯(cuò)誤,是被動(dòng)的;測(cè)試有很多種,比如未發(fā)現(xiàn)錯(cuò)誤但不能保證程序沒(méi)錯(cuò)而來(lái)找BUG,還比如我們運(yùn)行測(cè)試程序是否符合用戶的要求,是主動(dòng)的。不用說(shuō)答案就是B了 :)
A、C、D都是具體的程序調(diào)試方法,而B(niǎo)是宏觀的程序測(cè)試方法。
測(cè)試有單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試、系統(tǒng)測(cè)試。比如我們?cè)谶M(jìn)行單元測(cè)試時(shí),發(fā)現(xiàn)程序有錯(cuò)誤,我們?cè)倏梢愿鶕?jù)A、C、D的方法來(lái)找錯(cuò)誤。
題外話:
很多人學(xué)軟件工程時(shí)認(rèn)為軟件工程太無(wú)聊了,似乎全部都是些背背記記的東西,但對(duì)于一個(gè)軟件構(gòu)架師,軟件工程是非常重要的,這就不能是些背背的東西了,最重要的是理解,要徹底地理解,還得有些開(kāi)發(fā)經(jīng)驗(yàn)才行。《軟件工程》這學(xué)科是從實(shí)踐中得出來(lái)的,同樣也需要賦予給實(shí)踐中去,這樣才有用!
(57) 下列敘述中,不屬于軟件需求規(guī)格說(shuō)明書(shū)的作用的是______。
A. 便于用戶、開(kāi)發(fā)人員進(jìn)行理解和交流
B. 反映出用戶問(wèn)題的結(jié)構(gòu),可以作為軟件開(kāi)發(fā)工作的基礎(chǔ)和依據(jù)
C. 作為確認(rèn)測(cè)試和驗(yàn)收的依據(jù)
D. 便于開(kāi)發(fā)人員進(jìn)行需求分析
(57)
[答案]D
[考點(diǎn)]軟件工程基礎(chǔ)
[評(píng)析]
A、B、C都是作用,D說(shuō)法有一定的錯(cuò)誤,開(kāi)發(fā)人員包括很多,比如程序員的工作就不是進(jìn)行需求分析。
(58) 在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示______。
A. 控制程序的執(zhí)行順序
B. 模塊之間的調(diào)用關(guān)系
C. 數(shù)據(jù)的流向
D. 程序的組成成分
(58)
[答案]C
[考點(diǎn)]軟件工程基礎(chǔ)
[評(píng)析]
顧名思義,數(shù)據(jù)流圖就是帶有方框(外部實(shí)體)、圓圈(變換/加工)和帶有名字的箭頭以表示數(shù)據(jù)的流向。需求分析中常用的分析圖,它遠(yuǎn)離計(jì)算機(jī)上的具體實(shí)現(xiàn),軟件人員和用戶都能看懂,有益于和用戶交流。
(59) SQL語(yǔ)言又稱為_(kāi)_____。
A. 結(jié)構(gòu)化定義語(yǔ)言
B. 結(jié)構(gòu)化控制語(yǔ)言
C. 結(jié)構(gòu)化查詢語(yǔ)言
D. 結(jié)構(gòu)化操縱語(yǔ)言
(59)
[答案]C
[考點(diǎn)]數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)
[評(píng)析]
學(xué)VF和ACCESS的朋友輕而易舉選出答案,考其它的朋友們?nèi)魶](méi)學(xué)數(shù)據(jù)庫(kù)技術(shù)這一章節(jié),則要記一下了。
Structured Query Language
結(jié)構(gòu)化 查詢 語(yǔ)言(語(yǔ)句)
(60) 視圖設(shè)計(jì)一般有3種設(shè)計(jì)次序,下列不屬于視圖設(shè)計(jì)的是______。
A. 自頂向下
B. 由外向內(nèi)
C. 由內(nèi)向外
D. 自底向上
(60)
[答案]B
[考點(diǎn)]數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)
[評(píng)析]
通常有如下幾種方法:
1、自頂向下。先全局框架,然后逐步細(xì)化
2、自底向上。先局部概念結(jié)構(gòu),再集成為全局結(jié)構(gòu)
3、由里向外。先核心結(jié)構(gòu),再向外擴(kuò)張
4、混合策略。1與2相結(jié)合,先自頂向下設(shè)計(jì)一個(gè)概念結(jié)構(gòu)的框架,再自底向上為框架設(shè)計(jì)局部概念結(jié)構(gòu)