对于软件工程师,不太重视学历,但并不是对学历没有要求,重点关注项目的经验和学习知识的能力,能否利用软件工程专业知识来解决问题,根据岗位不同,对软件工程师的要求也有所不同。接下来传智播客搜集了软件工程师笔试题及答案,仅供大家参考。
软件工程师笔试题及答案一
一、判断题
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]))