? 软件工程师面试题(含笔试)

傳智播客旗下品牌:|||||

全國咨詢/投訴熱線:400-618-4000

軟件工程師面試題(含筆試)

創建時間:2019年01月25日16時06分 瀏覽次數:

對于軟件工程師,不太重視學歷,但并不是對學歷沒有要求,重點關注項目的經驗和學習知識的能力,能否利用軟件工程專業知識來解決問題,根據崗位不同,對軟件工程師的要求也有所不同。接下來傳智播客搜集了軟件工程師筆試題及答案,僅供大家參考。

軟件工程師筆試題及答案一

一、判斷題

1、軟件測試就是為了驗證軟件功能實現的是否正確,是否完成既定目標的活動,所以軟件測試在軟件工程的后期才開始具體的工作。(初級)( × )

2、發現錯誤多的模塊,殘留在模塊中的錯誤也多。( √ ) (初級)

3、測試人員在測試過程中發現一處問題,如果問題影響不大,而自己又可以修改,應立即將此問題正確修改,以加快、提高開發的進程。( × )(初級)

4、單元測試通常應該先進行“人工走查”,再以白盒法為主,輔以黑盒法進行動態測試。( √ )(中級)

5、功能測試是系統測試的主要內容,檢查系統的功能、性能是否與需求規格說明相同。( √ )(中級)

6、軟件質量管理即QM由QA和QC構成,軟件測試屬于QC的核心工作內容。(√)(高級)

7、軟件測試只能發現錯誤,但不能保證測試后的軟件沒有錯誤。(√)

8、軟件就是程序。(X)

9、測試只要做到語句覆蓋和分支覆蓋,就可以發現程序中的所有錯誤。(X)

10、I18N測試是指對產品做出具有國際性的規劃,而L10N測試則是指對軟件做出符合本地需求更改工作。(√)【高級】

二、選擇題

1、 進行軟件質量管理的重要性有:(ABCD)【中級】

A、維護降低成本  B、法律上的要求 C、市場競爭的需要 D、質量標準化的趨勢 E、軟件工程的需要 F、CMM過程的一部分 G、方便與客戶進一步溝通為后期的實施打好基礎

2、以測試的形態分測試可以分為:(ABC)【中級】

A、建構性測試 B、系統測試 C、專項測試 D、單元測試 E、組件測試 F、集成測試

3、選出屬于黑盒測試方法的選項(ABC)【初級】

A、測試用例覆蓋 B、輸入覆蓋 C、輸出覆蓋 D、分支覆蓋 E、語句覆蓋 F、條件覆蓋

4、編寫測試計劃的目的是:(ABC)【中級】

A、使測試工作順利進行 B、使項目參與人員溝通更舒暢 C、使測試工作更加系統化 D、軟件工程以及軟件過程的需要 E、軟件過程規范化的要求 F、控制軟件質量

5、依存關系有4種,分別是:(ABCD)【高級】

A、開始-結束 B、開始-開始 C、結束-開始 D、結束-結束 E、開始-實施-結束 F、結束-審核-開始

6、軟件質量管理(QM)應有質量保證(QA)和質量控制(QC)組成,下面的選項屬于QC得是:(ABC)【高級】

A、測試 B、跟蹤 C、監督 D、制定計劃 E、需求審查 F、程序代碼審查

7、實施缺陷跟蹤的目的是:(ABCD)【中級】

A、軟件質量無法控制 B、問題無法量化 C、重復問題接連產生 D、解決問題的知識無法保留 E、確保缺陷得到解決 F、使問題形成完整的閉環處理

8、使用軟件測試工具的目的:(ABC)【中級】

A、幫助測試尋找問題 B、協助問題的診斷 C、節省測試時間 D、提高Bug的發現率 E、更好的控制缺陷提高軟件質量 F、更好的協助開發人員

9、典型的瀑布模型的四個階段是:(ABCD)【高級】

A、分析 B、設計 C、編碼 D、測試 E、需求調研 F、實施

10、PSP是指個人軟件過程 ,是一種可用于( A )、( B )和( C )個人軟件工作方式的自我改善過程。【高級】

A、控制 B、管理 C、改進 D、高效 E、充分 F、適宜

三、問答題

1、 測試人員在軟件開發過程中的任務是什么?(初級)

答:1、尋找Bug;

2、避免軟件開發過程中的缺陷;

3、衡量軟件的品質;

4、關注用戶的需求。

總的目標是:確保軟件的質量。

2、在您以往的工作中,一條軟件缺陷(或者叫Bug)記錄都包含了哪些內容?如何提交高質量的軟件缺陷(Bug)記錄?(初級)

答:一條Bug記錄最基本應包含:編號、Bug所屬模塊、Bug描述、Bug級別、發現日期、發現人、修改日期、修改人、修改方法、回歸結果等等;要有效的發現Bug需參考需求以及詳細設計等前期文檔設計出高效的測試用例,然后嚴格執行測試用例,對發現的問題要充分確認肯定,然后再向外發布如此才能提高提交Bug的質量。

3、黑盒測試和白盒測試是軟件測試的兩種基本方法,請分別說明各自的優點和缺點!(中級)

答:黑盒測試的優點有:

1)比較簡單,不需要了解程序內部的代碼及實現;

2)與軟件的內部實現無關;

3)從用戶角度出發,能很容易的知道用戶會用到哪些功能,會遇到哪些問題;

4)基于軟件開發文檔,所以也能知道軟件實現了文檔中的哪些功能;

5)在做軟件自動化測試時較為方便。

黑盒測試的缺點有:

1)不可能覆蓋所有的代碼,覆蓋率較低,大概只能達到總代碼量的30%;

2)自動化測試的復用性較低。

白盒測試的優點有:幫助軟件測試人員增大代碼的覆蓋率,提高代碼的質量,發現代碼中隱藏的問題。

白盒測試的缺點有:

1)程序運行會有很多不同的路徑,不可能測試所有的運行路徑;

2)測試基于代碼,只能測試開發人員做的對不對,而不能知道設計的正確與否,可能會漏掉一些功能需求;

3)系統龐大時,測試開銷會非常大。

4、根據自己的理解回答什么是軟件測試,軟件測試分為哪幾個階段。(初級)

答:軟件測試是一個為了尋找軟件中的錯誤而運行軟件的過程,一個成功的測試是指找到了迄今為止尚未發現的錯誤的測試。

軟件測試一般分為單元測試、集成測試和系統測試。

5、根據自己的理解什么是測試用例和測試規程,設計一個測試用例應當從哪幾方面考慮?(中級)

答:狹義的講,一個測試用例就是測試人員用以測試被測軟件的某個特性或特性組合的一組數據。這組數據可能是從用戶處得來的實際的一組數據,也可能是測試人員專門設計出來的測試軟件某些功能的一組數據。

測試規程就是詳細的對測試用例設計方法、測試方法、測試工具、測試環境和測試數據進行描述的文檔,還可以包括能把某個或某一組測試用例應用到被測軟件上完成某項測試的一系列的操作步驟。

設計測試用例應當從以下幾方面考慮:邊界值,等價類劃分,有效/無效值等。

6、什么是軟件質量保證?軟件質量保證人員與開發人員的關系如何?(高級)

答:軟件質量保證就是通過確保軟件過程的質量,來保證軟件產品的質量。

軟件質量保證人員和開發人員之間具有管理上的嚴格的獨立性,兩個小組的管理員都不能越權管理另一組,但都可以向更高層的管理者匯報軟件開發中的問題。

軟件工程師筆試題及答案二

一、選擇題

1、設float a=2, b=4, c=3;,以下C語言表達式與代數式 (a+b)+c計算結果不一致的是

A.(a+b)*c/2

B.(1/2)*(a+b)*c

C.(a+b)*c*1/2

D.c/2*(a+b)

參考答案:B,因為a,b,c三個變量都是浮點數,所以在B答案中其結果是0,因為在計算1/2是就是0,如果改成1/2.0就正確了。

2、為了向二進制文件尾部增加數據,打開文件的方式應采用

A.″ab″

B.″rb+″

C.″wb″

D.″wb+″

參考答案:D

3、下述程序執行后的輸出結果是

#include

main()

{

int x='f';

printf("%c ",'a'+(x-'a'+1));

}

A.g

B.h

C.i

D.j

參考答案:A

4、C語言中,下列運算符優先級最高的是

A.!

B.%

C.>>

D.= =

參考答案:A

5、數組定義為“ int a [ 4 ] ; ”,表達式 ( ) 是錯誤的。

A.*a

B.a [ 0 ]

C.a

D.a++

參考答案:D

6、執行語句“ k=7>>1; ”后,變量 k 的當前值是

A.15

B.31

C.3

D.1

參考答案:C

7、定義函數時,缺省函數的類型聲明,則函數類型取缺省類型

A.void

B.char

C.float

D.int

參考答案:D

8、若main()函數帶參數,參數個數最多是

A.0

B.1

C.2

D.3

參考答案:C 只知道有定義形式main(int argc,char* argv[]))

9、若有宏定義:#define MOD(x,y) x%y

則執行以下語句后的輸出結果是

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.復合語句中的最后一條語句后未加分號

D.變量有引用、無定義

參考答案:A

11、下列程序段運行后, 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、設

#define N 3

#define Y(n) ((N+1)*n)

則表達式2*(N+Y(5+1))的值是

A.42

B.48

C.54

D.出錯

參考答案:B Y(5+1) 傳遞過去的應該是6,而不是簡單的把5+1給替換掉

13、若定義了char ch[]={″abc\0def″},*p=ch;則執行printf(″%c″,*p+4);語句的輸出結果是

A.def

B.d

C.e

D.0

參考答案:C

14、下列轉義字符中錯誤的是

A.′\000′

B.′14′

C.′x111′

D.′2′

參考答案:C error C2022、 '273' 、 too big for character

15、算術運算符,賦值運算符和關系運算符的運算優先級按從高到低依次為

A.算術運算、賦值運算、關系運算

B.算術運算、關系運算、賦值運算

C.關系運算、賦值運算、算術運算

D.關系運算、算術運算、賦值運算

參考答案:B

16、設#define N 3

#define Y(n) ((N+1)*n)

則表達式2*(N+Y(5+1))的值是

A.42

B.48

C.54

D.出錯

參考答案:B

17、表達式 strcmp( “ 3.14 ”,“ 3.278 ” ) 的值是一個

A.非零整數

B.浮點數

C.0

D.字符

參考答案: A

18、設struct

{ short a;

char b;

float c;

}cs;

則sizeof(cs)的值是

A.4

B.5

C.6

D.7

參考答案: D 字節對齊的話應該是8

19、若變量已正確定義,表達式( j=3 , j++ )的值是

A.3

B.4

C.5

D.0

參考答案:A

20、C 語言中運算對象必須是整型的運算符是

A.%

B./

C.!

D.**

參考答案:A

二、簡答題

21、打印一個N*N的方陣,N為每邊字符的個數( 3〈N〈20 ),要求最外層為“X”,第二層為“Y”,從第三層起每層依次打印數字0,1,2,3,...

例子:當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、談談COM的線程模型。然后討論進程內/外組件的差別。

23、多態類中的虛函數表是Compile-Time,還是Run-Time時建立的?

參考答案:

虛擬函數表是在編譯期就建立了,各個虛擬函數這時被組織成了一個虛擬函數的入口地址的數組.

而對象的隱藏成員--虛擬函數表指針是在運行期--也就是構造函數被調用時進行初始化的,這是實現多態的關鍵.

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 ″ );

}

運行時輸入: 2473 ,輸出結果:

參考答案:6897 VC++6.0測試過

25、用兩個棧實現一個隊列的功能?

參考答案:

設2個棧為A,B, 一開始均為空.入隊、

將新元素push入棧A;出隊、

(1)判斷棧B是否為空;

(2)如果不為空,則將棧A中所有元素依次pop出并push到棧B;

(3)將棧B的棧頂元素pop出;這樣實現的隊列入隊和出隊的平攤復雜度都還是O(1),

26、寫一語句實現x是否為2的若干次冪的判斷。

參考答案:!(X)&(X-1)

27、解二次方程、a*x*x+b*x+c

int Quadratic( double a,double b,double c,double& x1,double& x2);

返回值:解的個數

28、如何判別一個數是unsigned。

參考答案;

#define issignal(x) ((x>=0 && ~x>=0) ? 1、0) //為1是無符號 為0有符號

29、執行下述程序的輸出結果是 ABCDEFCDEFEF 。

#include

char b[]="ABCDEF";

main()

{

char *bp;

for (bp=b;*bp;bp+=2)

printf("%s",bp);

printf(" ");

}

30、已知一個數組table,用一個宏定義,求出數據的元素個數。

參考答案:#define NTBL

#define NTBL (sizeof(table)/sizeof(table[0]))
軟件工程師面試
2019网赚游戏 网赚兼职平台 2019灰色网赚项目 pk10开奖记录 19年注册网赚项目 互联网赚钱网站 青春510网赚论坛 一凡网赚是真的假的 金旋风网赚 河北快3