软件工程师试题.docx

上传人:b****2 文档编号:12877097 上传时间:2023-04-22 格式:DOCX 页数:6 大小:19.10KB
下载 相关 举报
软件工程师试题.docx_第1页
第1页 / 共6页
软件工程师试题.docx_第2页
第2页 / 共6页
软件工程师试题.docx_第3页
第3页 / 共6页
软件工程师试题.docx_第4页
第4页 / 共6页
软件工程师试题.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

软件工程师试题.docx

《软件工程师试题.docx》由会员分享,可在线阅读,更多相关《软件工程师试题.docx(6页珍藏版)》请在冰豆网上搜索。

软件工程师试题.docx

软件工程师试题

软件工程师试题-写写帮文库

10

三、填空题(每题5分,共10分)

31.补充完整Test类的定义,使其能计算下面的数列值:

F

(1)=1(n=1)

F

(2)=2(n=2)

F(n)=F(n-1)*n(n>3)

如:

当n=5时,

f(5)=f(4)*5,f(4)=f(3)*4,f(3)=f

(2)*3,f

(2)=f

(1)*1,f

(1)=1

结果f(5)=1*1*3*4*5=60

publicclassTest{

publicstaticintcalculate(intn){if(①)return1;return②;}publicstaticvoidmain(String[]args){System.out.println(calculate(3));

}

}

32.请看TestAnimal类的代码:

publicclassTestAnimal{

publicstaticvoidmain(Stringargs[]){Animala1=newDog();Animala2=newCat();①②

Dogb1=③

Catb2=④

}⑥}

interfaceAnimal{

}

classDogimplementsAnimal{

}

classCatimplementsAnimal{

}publicvoidrun(){}publicvoidcatchMouse(){}System.out.println("catchingmouse");System.out.println("Acatisrunningnow");publicvoidrun(){}publicvoidwatch(){}System.out.println("watchinghouse");System.out.println("Adogisrunningnow");publicvoidrun();

请补充完整上面的代码,使其运行的时候得到如下结果:

Adogisrunningnow

Acatisrunningnow

watchinghouse

catchingmouse

第四篇:

【软件工程师】精选试题二

一、单向选择题(四选

一、每小题3分,共18分)

1、软件的发展经历了()个发展阶段。

A.一

B.二

C.三

D.四

2、需求分析的任务不包括()。

A.问题分析

B.系统设计

C.需求描述

D.需求评审。

3、一个软件的宽度是指其控制的()。

A.模块数

B.层数

C.跨度

D.厚度

4、当模块中包含复杂的条件组合,只有()能够清晰地表达出各种动作之间的对应关系。

A.判定表和判定树

B.盒图

C.流程图

D.关系图

5、以下不属于逻辑覆盖的是()。

A.语句覆盖

B.判定覆盖

C.条件覆盖

D.基本路径

6、为适应软件运行环境的变化而修改软件的活动称为()。

A.纠错性维护

B.适应性维护

C.改善性维护

D.预防性维护

二、填空题(每空2分,共18分)

1.软件可靠性是指在给定的时间间隔内,程序成功运行的()。

2.高级语言:

独立于机器,面向过程或面向()

3.软件项目管理的范围主要集中于3个P上,即:

People人员、Proble

m问题和()。

4.人机界面的风格第一代界面是命令和()方式。

5.由于维护或在维护过程中其他一些不期望的行为引入的错误称为维护

的()。

6.在公式V(G)=E–N+2中:

E为程序图G中边的总数;N为程

序图中结点的总数。

V(G)又称为图G的环形()。

7.任何一个基于计算机系统都可以用输入-处理-输出()图来描述,它

将该系统转换成一个信息变换模型。

8.为提高可交互性一般对所有可能造成损害的用户操作动作,应坚持要

求用户(),例如,提问“你确实要删除„?

”。

9.文档是一种数据媒体和其上所记录的(数据)。

三、判断题(每小题2分,共24分,错误打X、正确打√)

1.用户对软件需求的描述不精确,往往是产生软件危机的原因之一。

()2.目前,软件项目的进度安排的两种比较常用的方法是程序评估与审查技术

(PERT)和关键路径法(CPM)。

()

3.一个好的开发人员应具备的素质和能力包括善于与周围人员团结协作,建

立良好的人际关系,善于听取别人的意见。

()

4.目前的绝大多数软件都不适合于快速原型技术。

()

5.面向数据的设计方法的适用场合是具有明显的层次信息结构的应用如:

事业的信息管理系统;系统软件(如操作系统)等。

()

6.缺乏处理大型软件项目的经验。

是产生软件危机的唯一原因。

()7.通常紧致性好的语言一致性就好。

()

8.测试计划、测试用例、出错统计和有关的分析报告一般不用长期保存。

()9.数据输入的一般准则中包括保证信息显示方式与数据输入方式的协调一

致;允许用户定做输入格式等内容。

()

10.软件也会磨损和老化。

()

11.完善性维护是提高或完善软件的性能。

()

12.McCabe建议模块规模应满足:

V(G)≤20。

()

四、简答题(每小题4分,共20分)

1、程序设计语言的三种类型和特点是什么?

2、软件危机

3、软件项目的质量管理

4、好的编程风格应遵循哪四条规则?

5、软件测试中按照错误的性质和范围进行分类可分为:

“功能错误”及其它哪些错误?

五、综合题(每小题10分,共20分)

1、选择语言时要考虑的因素有:

项目的应用领域、项目中算法、计算的复杂性和其余哪些内容?

2、已知一个软件项目的记录,开发人员M=3人,其代码行数=12.1KLOC,工作

量E=24PM,成本S=168000美元,错误数N=29,文档页数Pd=365页。

试计算开发该软件项目的生产率P、平均成本C、代码出错率EQR和文档率D。

第五篇:

软件工程师笔试题3

预处理器(Preprocessor)

1.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#defineSECONDS_PER_YEAR(60*60*24*365)UL

我在这想看到几件事情:

1).#define语法的基本知识(例如:

不能以分号结束,括号的使用,等等)

2).懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。

3).意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L告诉编译器这个常数是的长整型数。

4).如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。

记住,第一印象很重要。

2.写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。

#defineMIN(AB)((A)6”。

原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。

因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。

这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。

如果你答错了这个问题,你也就到了得不到这份工作的边缘。

13.评价下面的代码片断:

unsignedintzero=0;

unsignedintcompzero=0xFFFF;

/*1'scomplementofzero*/

对于一个int型不是16位的处理器为说,上面的代码是不正确的。

应编写如下:

unsignedintcompzero=~0;

这一问题真正能揭露出应试者是否懂得处理器字长的重要性。

在我的经验里,好的嵌入式程序员非常准确地明白硬件的细节和它的局限,然而PC机程序往往把硬件作为一个无法避免的烦恼。

到了这个阶段,应试者或者完全垂头丧气了或者信心满满志在必得。

如果显然应试者不是很好,那么这个测试就在这里结束了。

但如果显然应试者做得不错,那么我就扔出下面的追加问题,这些问题是比较难的,我想仅仅非常优秀的应试者能做得不错。

提出这些问题,我希望更多看到应试者应付问题的方法,而不是答案。

不管如何,你就当是这个娱乐吧…动态内存分配(Dynamicmemoryallocation)

14.尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。

那么嵌入式系统中,动态分配内存可能发生的问题是什么?

这里,我期望应试者能提到内存碎片,碎片收集的问题,变量的持行时间等等。

这个主题已经在ESP杂志中被广泛地讨论过了(主要是P.J.Plauger他的解释远远超过我这里能提到的任何解释),所有回过头看一下这些杂志吧!

让应试者进入一种虚假的安全感觉后,我拿出这么一个小节目:

下面的代码片段的输出是什么,为什么?

char*ptr;

if((ptr=(char*)malloc(0))==NULL)

puts("Gotanullpointer");

else

puts("Gotavalidpointer");

这是一个有趣的问题。

最近在我的一个同事不经意把0值传给了函数malloc,得到了一个合法的指针之后,我才想到这个问题。

这就是上面的代码,该代码的输出是“Gotavalidpointer”。

我用这个来开始讨论这样的一问题,看看被面试者是否想到库例程这样做是正确。

得到正确

的答案固然重要,但解决问题的方法和你做决定的基本原理更重要些。

Typedef

15.Typedef在C语言中频繁用以声明一个已经存在的数据类型的同义字。

也可以用预处理器做类似的事。

例如,思考一下下面的例子:

#definedPSstructs*

typedefstructs*tPS;

以上两种情况的意图都是要定义dPS和tPS作为一个指向结构s指针。

哪种方法更好呢?

(如果有的话)为什么?

这是一个非常微妙的问题,任何人答对这个问题(正当的原因)是应当被恭喜的。

答案是:

typedef更好。

思考下面的例子:

dPSp1p2;

tPSp3p4;

第一个扩展为

structs*p1p2;

上面的代码定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。

第二个例子正确地定义了p3和p4两个指针。

16.C语言同意一些令人震惊的结构下面的结构是合法的吗,如果是它做些什么?

inta=5b=7c;

c=a+++b;

这个问题将做为这个测验的一个愉快的结尾。

不管你相不相信,上面的例子是完全合乎语法的。

问题是编译器如何处理它?

水平不高的编译实际上会争论这个问题,根据最处理原则,编译器应当能处理尽可能所有合法的用法。

因此,上面的代码被处理成:

c=a+++b;

因此这段代码持行后a=6b=7c=12。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1