1.在軟件開發過程中,我們可以采用不同的過程模型,下列有關 增量模型描述正確的是()
A 是一種線性開發模型,具有不可回溯性
B 把待開發的軟件系統模塊化,將每個模塊作為一個增量組件,從而分批次地分析、設計、編碼和測試這些增量組件
C 適用於已有產品或產品原型(樣品),只需客戶化的工程項目
D 軟件開發過程每迭代一次,軟件開發又前進一個層次
解析:增量模型是把待開發的軟件系統模塊化,將每個模塊作為一個增量組件,從而分批次地分析、設計、編碼和測試這些增量組件。運用增量模型的軟件開發過程是遞增式的過程。相對於瀑布模型而言,采用增量模型進行開發,開發人員不需要一次性地把整個軟件產品提交給用戶,而是可以分批次進行提交。
2.下面有關值類型和引用類型描述正確的是()?
A 值類型的變量賦值只是進行數據復制,創建一個同值的新對象,而引用類型變量賦值,僅僅是把對象的引用的指針賦值給變量,使它們共用一個內存地址。
B 值類型數據是在棧上分配內存空間,它的變量直接包含變量的實例,使用效率相對較高。而引用類型數據是分配在堆上,引用類型的變量通常包含一個指向實例的指針,變量通過指針來引用實例。
C 引用類型一般都具有繼承性,但是值類型一般都是封裝的,因此值類型不能作為其他任何類型的基類。
D 值類型變量的作用域主要是在棧上分配內存空間內,而引用類型變量作用域主要在分配的堆上。
解析:
3.如何在多線程中避免發生死鎖?
A 允許進程同時訪問某些資源。
B 允許進程強行從占有者那里奪取某些資源。
C 進程在運行前一次性地向系統申請它所需要的全部資源。
D 把資源事先分類編號,按號分配,使進程在申請,占用資源時不會形成環路。
解析:死鎖:在多道程序設計環境下,多個進程可能競爭一定數量的資源,。一個進程申請資源,如果資源不可用,那么進程進入等待狀態。如果所申請的資源被其他等待進程占有,那么該等待的進程有可能無法改變狀態,這種情況下稱之為死鎖。
死鎖的四個條件:
互斥:至少有一個資源必須處在非共享模式,即一次只能有一個進程使用,如果另一進程申請該資源,那么申請進程必須延遲直到該資源釋放為止。
占有並等待:一個進程必須占有至少一個資源,並等待另一個資源,而該資源為其他進程所占有。
非搶占:資源不能被搶占
循環等待:有一組進程{P0,P1,...Pn},P0等待的資源被P1占有,P1等待的資源被P2占有,Pn-1等待的資源被Pn占有,Pn等待的資源被P0占有。
int s = 0; for(int i = 1 ;i<=1000;i+=2){ s = s+ i; } System.out.println(s);
5.關於遞歸法的說法不正確的是( )
A 程序結構更簡潔
B 占用CPU的處理時間更多
C 要消耗大量的內存空間,程序執行慢,甚至無法執行
D 遞歸法比遞推法的執行效率更高
解析:遞歸就是一層一層的調用函數進棧,會大量存儲重復的數據,占用大量內存,且會有棧溢出的可能。而遞推就是不用存儲重復的數據,從底層獲得了數據直接遞給上一層即可。
6.字符串”ABCD”和字符串”DCBA”進行比較,如果讓比較的結果為真,應選用關系運算符()
A >
B <
C =
D >=
解析:比較的時候比的是ASCII碼,從第一位開始比,如果第一位能比較出誰大誰小則直接返回,若相等,比較下一個字符,因此選B
7.下面是一段關於計算變量s的算法: ①變量s的初值是0 ②變量i從1起循環到n,此時變量s的值由下面的式子表達式計算 ③s=s+(-1)*i ④輸出變量s的值 這個計算s值的算法中,s的代數式表示是( )。
A 1-2+3-4+„+(-1)n*(n-1)
B 1-2+3-4+„+(-1)n-1*n
C 1+2+3+4+...+(n-1)+n
D -1-2-3-4-...-n
解析:對於s=s+(-1)*i,(-1)乘i(0到n)永遠為負,說明計算式一直在減,可以排除abc
8.以下運算符中運算優先級最高的是( )
A +
B OR
C >
D /
解析:數字越小表示優先級越高。
9.采用哪種遍歷方法可唯一確定一棵二叉樹?( )
A 給定一棵二叉樹的先序和后序遍歷序列
B 給定一棵二叉樹的后序和中序遍歷序列
C 給定先序、中序和后序遍歷序列中的任意一個即可
D 給定一棵二叉樹的先序和中序遍歷序列
解析:給出中序遍歷之后再給一個其他的遍歷就能夠確定了,前序和后續不能確定。
例如:先序abdecf,中序dbeafc。
分析思路.
1、先序就是根左右,中序就是左根右。所以在先序中a在前即為根。在中序中找到a,則dbe為其左子樹,fc為其右子樹。
2、dbe左子樹在先序中b在前說明b為根,則中序中d為b左子樹,e為b右子樹。
3、同理fc在先序中c在前說明c為根,中序中f在c前,說明f為c的左子樹。
即得如下圖:
a
/ \
b c
/ \ /
d e f