對于軟件工程師,不太重視學(xué)歷,但并不是對學(xué)歷沒有要求,重點(diǎn)關(guān)注項(xiàng)目的經(jīng)驗(yàn)和學(xué)習(xí)知識的能力,能否利用軟件工程專業(yè)知識來解決問題,根據(jù)崗位不同,對軟件工程師的要求也有所不同。接下來傳智播客搜集了軟件工程師筆試題及答案,僅供大家參考。
軟件工程師筆試題及答案一
一、判斷題
1、軟件測試就是為了驗(yàn)證軟件功能實(shí)現(xiàn)的是否正確,是否完成既定目標(biāo)的活動,所以軟件測試在軟件工程的后期才開始具體的工作。(初級)( × )
2、發(fā)現(xiàn)錯誤多的模塊,殘留在模塊中的錯誤也多。( √ ) (初級)
3、測試人員在測試過程中發(fā)現(xiàn)一處問題,如果問題影響不大,而自己又可以修改,應(yīng)立即將此問題正確修改,以加快、提高開發(fā)的進(jìn)程。( × )(初級)
4、單元測試通常應(yīng)該先進(jìn)行“人工走查”,再以白盒法為主,輔以黑盒法進(jìn)行動態(tài)測試。( √ )(中級)
5、功能測試是系統(tǒng)測試的主要內(nèi)容,檢查系統(tǒng)的功能、性能是否與需求規(guī)格說明相同。( √ )(中級)
6、軟件質(zhì)量管理即QM由QA和QC構(gòu)成,軟件測試屬于QC的核心工作內(nèi)容。(√)(高級)
7、軟件測試只能發(fā)現(xiàn)錯誤,但不能保證測試后的軟件沒有錯誤。(√)
8、軟件就是程序。(X)
9、測試只要做到語句覆蓋和分支覆蓋,就可以發(fā)現(xiàn)程序中的所有錯誤。(X)
10、I18N測試是指對產(chǎn)品做出具有國際性的規(guī)劃,而L10N測試則是指對軟件做出符合本地需求更改工作。(√)【高級】
二、選擇題
1、 進(jìn)行軟件質(zhì)量管理的重要性有:(ABCD)【中級】
A、維護(hù)降低成本 B、法律上的要求 C、市場競爭的需要 D、質(zhì)量標(biāo)準(zhǔn)化的趨勢 E、軟件工程的需要 F、CMM過程的一部分 G、方便與客戶進(jìn)一步溝通為后期的實(shí)施打好基礎(chǔ)
2、以測試的形態(tài)分測試可以分為:(ABC)【中級】
A、建構(gòu)性測試 B、系統(tǒng)測試 C、專項(xiàng)測試 D、單元測試 E、組件測試 F、集成測試
3、選出屬于黑盒測試方法的選項(xiàng)(ABC)【初級】
A、測試用例覆蓋 B、輸入覆蓋 C、輸出覆蓋 D、分支覆蓋 E、語句覆蓋 F、條件覆蓋
4、編寫測試計(jì)劃的目的是:(ABC)【中級】
A、使測試工作順利進(jìn)行 B、使項(xiàng)目參與人員溝通更舒暢 C、使測試工作更加系統(tǒng)化 D、軟件工程以及軟件過程的需要 E、軟件過程規(guī)范化的要求 F、控制軟件質(zhì)量
5、依存關(guān)系有4種,分別是:(ABCD)【高級】
A、開始-結(jié)束 B、開始-開始 C、結(jié)束-開始 D、結(jié)束-結(jié)束 E、開始-實(shí)施-結(jié)束 F、結(jié)束-審核-開始
6、軟件質(zhì)量管理(QM)應(yīng)有質(zhì)量保證(QA)和質(zhì)量控制(QC)組成,下面的選項(xiàng)屬于QC得是:(ABC)【高級】
A、測試 B、跟蹤 C、監(jiān)督 D、制定計(jì)劃 E、需求審查 F、程序代碼審查
7、實(shí)施缺陷跟蹤的目的是:(ABCD)【中級】
A、軟件質(zhì)量無法控制 B、問題無法量化 C、重復(fù)問題接連產(chǎn)生 D、解決問題的知識無法保留 E、確保缺陷得到解決 F、使問題形成完整的閉環(huán)處理
8、使用軟件測試工具的目的:(ABC)【中級】
A、幫助測試尋找問題 B、協(xié)助問題的診斷 C、節(jié)省測試時(shí)間 D、提高Bug的發(fā)現(xiàn)率 E、更好的控制缺陷提高軟件質(zhì)量 F、更好的協(xié)助開發(fā)人員
9、典型的瀑布模型的四個階段是:(ABCD)【高級】
A、分析 B、設(shè)計(jì) C、編碼 D、測試 E、需求調(diào)研 F、實(shí)施
10、PSP是指個人軟件過程 ,是一種可用于( A )、( B )和( C )個人軟件工作方式的自我改善過程。【高級】
A、控制 B、管理 C、改進(jìn) D、高效 E、充分 F、適宜
三、問答題
1、 測試人員在軟件開發(fā)過程中的任務(wù)是什么?(初級)
答:1、尋找Bug;
2、避免軟件開發(fā)過程中的缺陷;
3、衡量軟件的品質(zhì);
4、關(guān)注用戶的需求。
總的目標(biāo)是:確保軟件的質(zhì)量。
2、在您以往的工作中,一條軟件缺陷(或者叫Bug)記錄都包含了哪些內(nèi)容?如何提交高質(zhì)量的軟件缺陷(Bug)記錄?(初級)
答:一條Bug記錄最基本應(yīng)包含:編號、Bug所屬模塊、Bug描述、Bug級別、發(fā)現(xiàn)日期、發(fā)現(xiàn)人、修改日期、修改人、修改方法、回歸結(jié)果等等;要有效的發(fā)現(xiàn)Bug需參考需求以及詳細(xì)設(shè)計(jì)等前期文檔設(shè)計(jì)出高效的測試用例,然后嚴(yán)格執(zhí)行測試用例,對發(fā)現(xiàn)的問題要充分確認(rèn)肯定,然后再向外發(fā)布如此才能提高提交Bug的質(zhì)量。
3、黑盒測試和白盒測試是軟件測試的兩種基本方法,請分別說明各自的優(yōu)點(diǎn)和缺點(diǎn)!(中級)
答:黑盒測試的優(yōu)點(diǎn)有:
1)比較簡單,不需要了解程序內(nèi)部的代碼及實(shí)現(xiàn);
2)與軟件的內(nèi)部實(shí)現(xiàn)無關(guān);
3)從用戶角度出發(fā),能很容易的知道用戶會用到哪些功能,會遇到哪些問題;
4)基于軟件開發(fā)文檔,所以也能知道軟件實(shí)現(xiàn)了文檔中的哪些功能;
5)在做軟件自動化測試時(shí)較為方便。
黑盒測試的缺點(diǎn)有:
1)不可能覆蓋所有的代碼,覆蓋率較低,大概只能達(dá)到總代碼量的30%;
2)自動化測試的復(fù)用性較低。
白盒測試的優(yōu)點(diǎn)有:幫助軟件測試人員增大代碼的覆蓋率,提高代碼的質(zhì)量,發(fā)現(xiàn)代碼中隱藏的問題。
白盒測試的缺點(diǎn)有:
1)程序運(yùn)行會有很多不同的路徑,不可能測試所有的運(yùn)行路徑;
2)測試基于代碼,只能測試開發(fā)人員做的對不對,而不能知道設(shè)計(jì)的正確與否,可能會漏掉一些功能需求;
3)系統(tǒng)龐大時(shí),測試開銷會非常大。
4、根據(jù)自己的理解回答什么是軟件測試,軟件測試分為哪幾個階段。(初級)
答:軟件測試是一個為了尋找軟件中的錯誤而運(yùn)行軟件的過程,一個成功的測試是指找到了迄今為止尚未發(fā)現(xiàn)的錯誤的測試。
軟件測試一般分為單元測試、集成測試和系統(tǒng)測試。
5、根據(jù)自己的理解什么是測試用例和測試規(guī)程,設(shè)計(jì)一個測試用例應(yīng)當(dāng)從哪幾方面考慮?(中級)
答:狹義的講,一個測試用例就是測試人員用以測試被測軟件的某個特性或特性組合的一組數(shù)據(jù)。這組數(shù)據(jù)可能是從用戶處得來的實(shí)際的一組數(shù)據(jù),也可能是測試人員專門設(shè)計(jì)出來的測試軟件某些功能的一組數(shù)據(jù)。
測試規(guī)程就是詳細(xì)的對測試用例設(shè)計(jì)方法、測試方法、測試工具、測試環(huán)境和測試數(shù)據(jù)進(jìn)行描述的文檔,還可以包括能把某個或某一組測試用例應(yīng)用到被測軟件上完成某項(xiàng)測試的一系列的操作步驟。
設(shè)計(jì)測試用例應(yīng)當(dāng)從以下幾方面考慮:邊界值,等價(jià)類劃分,有效/無效值等。
6、什么是軟件質(zhì)量保證?軟件質(zhì)量保證人員與開發(fā)人員的關(guān)系如何?(高級)
答:軟件質(zhì)量保證就是通過確保軟件過程的質(zhì)量,來保證軟件產(chǎn)品的質(zhì)量。
軟件質(zhì)量保證人員和開發(fā)人員之間具有管理上的嚴(yán)格的獨(dú)立性,兩個小組的管理員都不能越權(quán)管理另一組,但都可以向更高層的管理者匯報(bào)軟件開發(fā)中的問題。
軟件工程師筆試題及答案二
一、選擇題
1、設(shè)float a=2, b=4, c=3;,以下C語言表達(dá)式與代數(shù)式 (a+b)+c計(jì)算結(jié)果不一致的是
A.(a+b)*c/2
B.(1/2)*(a+b)*c
C.(a+b)*c*1/2
D.c/2*(a+b)
參考答案:B,因?yàn)閍,b,c三個變量都是浮點(diǎn)數(shù),所以在B答案中其結(jié)果是0,因?yàn)樵谟?jì)算1/2是就是0,如果改成1/2.0就正確了。
2、為了向二進(jìn)制文件尾部增加數(shù)據(jù),打開文件的方式應(yīng)采用
A.″ab″
B.″rb+″
C.″wb″
D.″wb+″
參考答案:D
3、下述程序執(zhí)行后的輸出結(jié)果是
#include
main()
{
int x='f';
printf("%c ",'a'+(x-'a'+1));
}
A.g
B.h
C.i
D.j
參考答案:A
4、C語言中,下列運(yùn)算符優(yōu)先級最高的是
A.!
B.%
C.>>
D.= =
參考答案:A
5、數(shù)組定義為“ int a [ 4 ] ; ”,表達(dá)式 ( ) 是錯誤的。
A.*a
B.a [ 0 ]
C.a
D.a++
參考答案:D
6、執(zhí)行語句“ k=7>>1; ”后,變量 k 的當(dāng)前值是
A.15
B.31
C.3
D.1
參考答案:C
7、定義函數(shù)時(shí),缺省函數(shù)的類型聲明,則函數(shù)類型取缺省類型
A.void
B.char
C.float
D.int
參考答案:D
8、若main()函數(shù)帶參數(shù),參數(shù)個數(shù)最多是
A.0
B.1
C.2
D.3
參考答案:C 只知道有定義形式main(int argc,char* argv[]))
9、若有宏定義:#define MOD(x,y) x%y
則執(zhí)行以下語句后的輸出結(jié)果是
int a=13,b=94;
printf(″%d ″,MOD(b,a+4));
A.5
B.7
C.9
D.11
參考答案:B
10、下列各個錯誤中,哪一個不屬于編譯錯誤
A.改變 x 原值 3 為 5 ,寫作“ x==5 ;”
B.花括號不配對
C.復(fù)合語句中的最后一條語句后未加分號
D.變量有引用、無定義
參考答案:A
11、下列程序段運(yùn)行后, x 的值是( )
a=1;b=2;x=0;
if(!( -- a))x -- ;
if(!b)x=7;else ++x;
A.0
B.3
C.6
D.7
參考答案:A
12、設(shè)
#define N 3
#define Y(n) ((N+1)*n)
則表達(dá)式2*(N+Y(5+1))的值是
A.42
B.48
C.54
D.出錯
參考答案:B Y(5+1) 傳遞過去的應(yīng)該是6,而不是簡單的把5+1給替換掉
13、若定義了char ch[]={″abc\0def″},*p=ch;則執(zhí)行printf(″%c″,*p+4);語句的輸出結(jié)果是
A.def
B.d
C.e
D.0
參考答案:C
14、下列轉(zhuǎn)義字符中錯誤的是
A.′\000′
B.′14′
C.′x111′
D.′2′
參考答案:C error C2022、 '273' 、 too big for character
15、算術(shù)運(yùn)算符,賦值運(yùn)算符和關(guān)系運(yùn)算符的運(yùn)算優(yōu)先級按從高到低依次為
A.算術(shù)運(yùn)算、賦值運(yùn)算、關(guān)系運(yùn)算
B.算術(shù)運(yùn)算、關(guān)系運(yùn)算、賦值運(yùn)算
C.關(guān)系運(yùn)算、賦值運(yùn)算、算術(shù)運(yùn)算
D.關(guān)系運(yùn)算、算術(shù)運(yùn)算、賦值運(yùn)算
參考答案:B
16、設(shè)#define N 3
#define Y(n) ((N+1)*n)
則表達(dá)式2*(N+Y(5+1))的值是
A.42
B.48
C.54
D.出錯
參考答案:B
17、表達(dá)式 strcmp( “ 3.14 ”,“ 3.278 ” ) 的值是一個
A.非零整數(shù)
B.浮點(diǎn)數(shù)
C.0
D.字符
參考答案: A
18、設(shè)struct
{ short a;
char b;
float c;
}cs;
則sizeof(cs)的值是
A.4
B.5
C.6
D.7
參考答案: D 字節(jié)對齊的話應(yīng)該是8
19、若變量已正確定義,表達(dá)式( j=3 , j++ )的值是
A.3
B.4
C.5
D.0
參考答案:A
20、C 語言中運(yùn)算對象必須是整型的運(yùn)算符是
A.%
B./
C.!
D.**
參考答案:A
二、簡答題
21、打印一個N*N的方陣,N為每邊字符的個數(shù)( 3〈N〈20 ),要求最外層為“X”,第二層為“Y”,從第三層起每層依次打印數(shù)字0,1,2,3,...
例子:當(dāng)N =5,打印出下面的圖形:
X X X X X
X Y Y Y X
X Y 0 Y X
X Y Y Y X
X X X X X
22、談?wù)凜OM的線程模型。然后討論進(jìn)程內(nèi)/外組件的差別。
23、多態(tài)類中的虛函數(shù)表是Compile-Time,還是Run-Time時(shí)建立的?
參考答案:
虛擬函數(shù)表是在編譯期就建立了,各個虛擬函數(shù)這時(shí)被組織成了一個虛擬函數(shù)的入口地址的數(shù)組.
而對象的隱藏成員--虛擬函數(shù)表指針是在運(yùn)行期--也就是構(gòu)造函數(shù)被調(diào)用時(shí)進(jìn)行初始化的,這是實(shí)現(xiàn)多態(tài)的關(guān)鍵.
24、#include
void main()
{ int c;
while ((c=get))!= ′ n ′ )
switch(c - ′ 2 ′ )
{ case 0、
case 1、putc+4);break;
case 2、putc+4);break;
case 3、putc+3);break;
default、putc+2);break;
}
printf( ″ n ″ );
}
運(yùn)行時(shí)輸入: 2473 ,輸出結(jié)果:
參考答案:6897 VC++6.0測試過
25、用兩個棧實(shí)現(xiàn)一個隊(duì)列的功能?
參考答案:
設(shè)2個棧為A,B, 一開始均為空.入隊(duì)、
將新元素push入棧A;出隊(duì)、
(1)判斷棧B是否為空;
(2)如果不為空,則將棧A中所有元素依次pop出并push到棧B;
(3)將棧B的棧頂元素pop出;這樣實(shí)現(xiàn)的隊(duì)列入隊(duì)和出隊(duì)的平攤復(fù)雜度都還是O(1),
26、寫一語句實(shí)現(xiàn)x是否為2的若干次冪的判斷。
參考答案:!(X)&(X-1)
27、解二次方程、a*x*x+b*x+c
int Quadratic( double a,double b,double c,double& x1,double& x2);
返回值:解的個數(shù)
28、如何判別一個數(shù)是unsigned。
參考答案;
#define issignal(x) ((x>=0 && ~x>=0) ? 1、0) //為1是無符號 為0有符號
29、執(zhí)行下述程序的輸出結(jié)果是 ABCDEFCDEFEF 。
#include
char b[]="ABCDEF";
main()
{
char *bp;
for (bp=b;*bp;bp+=2)
printf("%s",bp);
printf(" ");
}
30、已知一個數(shù)組table,用一個宏定義,求出數(shù)據(jù)的元素個數(shù)。
參考答案:#define NTBL
#define NTBL (sizeof(table)/sizeof(table[0]))