如何评测软件工程知识技能水平?
如果想成为一名优秀的软件工程师,我们往往需要对各个知识面进行学习。我认为以下几个方面的能力对于软件工程师来说是非常重要的:
1. 深入理解编程开发语言的思想,熟练掌握一门开发语言,并能够使用其进行编程。
2. 对算法和数据结构有基本的了解。
3. 深入理解计算机系统运行、计算机网络传输的基本原理。
4. 掌握一些常用的设计模式和软件架构。
5. 能够熟练运用开发过程中用到的开发工具,包括中间件,数据库等。
---------------------------------------------------------------------------------------------
一、单选题(10题,每题3分:共30分)
1.“软件危机”是指
A 计算机病毒 的出现 B 利用计算机进行经济犯罪 C 软件开发和维护中出现的一系列问题 D 人们过分迷恋计算机系统
参考答案:C
2.需求分析阶段的任务是确定
A 软件开发方法 B 软件开发工具 C 软件开发 D 软件系统的功能
参考答案:D
3 软件设计中模块划分应遵循的准则是
A.低内聚低耦合
B.高耦合高内聚
C.高内聚低耦合
D.以上说法均错误
参考答案:C
参考解析:根据软件设计原理提出如下优化准则:①划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性,并以此原则优化初始的软件结构。②一个模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。③软件结构的深度、宽度、扇入、扇出应适当。④模块的大小要适中。C正确。
4下面叙述中错误的是( )。
A.软件测试的目的是发现错误并改正错误
B.对被调试的程序进行“错误定位”是程序调试的必要步骤
C.程序调试通常也称为Debug
D.软件测试应严格执行测试计划,排除测试的随意性
参考答案:A
参考解析:软件测试是为了发现错误而执行程序的过程。软件测试要严格执行测试计划,排除测试的随意性。程序调试通常也称Debug,对被调试的程序进行“错误”定位是程序调试的必要步骤。
5 一个栈的初始状态为空。现将元素1,2,3,A,B,C依次入栈,然后再依次出栈,则元素出栈的顺序是
A.1,2,3,A,B,C
B.C,B,A,1,2,3
C.C,B,A,3,2,1
D.1,2,3,C,B,A
参考答案:C
参考解析:栈的修改是按后进先出的原则进行的,所以顺序应与入栈顺序相反,故选c。
6 下列叙述中正确的是
A.一个算法的空间复杂度大,则其时间复杂度也必定大
B.一个算法的空间复杂度大,则其时间复杂度必定小
C.一个算法的时间复杂度大,则其空间复杂度必定小
D.算法的时间复杂度与空间复杂度没有直接关系
参考答案:D
【解析】算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度,是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为D。
7.现代计算机组织结构是以____为中心,其基本结构遵循冯·诺依曼思想。
A. 寄存器 B. 存储器 C. 运算器 D. 控制器
参考答案:B
8 同学们通过网址访问中科大官网,使用的应用层协议是
A.FTP:文本传送协议
B.TELNET:远程终端控制协议
C.SMTP:简单邮件传输协议
D.HTTP:超文本传送协议属性
参考答案:D
9 在关系数据库中,用来表示实体间联系的是
A.属性 B.二维表 C.网状结构 D.树状结构
参考答案:B
参考解析:关系模型实体问的联系采用二维表来表示,简称表。选项C为网状模型实体间的联系,选项D为层次模型实体间的联系,选项A属性刻画了实体。
10下面哪个不属于面向对象的思想
A.封装
B.继承
C.多态
D.耦合
参考答案:D
二、填空题(10题,每题3分:共30分)
(1) 算法的复杂度主要包括______复杂度和空间复杂度。
答:时间
(2) 数据的逻辑结构在计算机存储空间中的存放形式称为数据的______。
答:存储结构#物理结构
(3) 若按功能划分,软件测试的方法通常分为白盒测试方法和______测试方法。
答:黑盒
(4) 如果一个工人可管理多个设施,而一个设施只被一个工人管理,则实体"工人"与实体"设备"之间存在______(一对一或一对多)联系。
答:一对多
(5) 关系数据库管理系统能实现的专门关系运算包括选择、连接和______。
答:投影
(6) 在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、______遍历和后序遍历。
答:中序
(7) 结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用goto语句。
答:模块化
(8) 数据库系统的三级模式分别为外模式、______模式与内模式。
答:概念
(9) 设一棵完全二叉树共有500个结点,则在该二叉树中有______个叶子结点。
答:250
(10) 面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个______。
答:实体
三、简答题(2题,每题8分:共16分)
1.分析软件危机产生的主要原因有哪些?
答:导致软件危机的主要原因有:
(1)软件日益复杂和庞大(2)软件开发管理困难和复杂(3)软件开发技术落后(4)生产方式落后(5)开发工具落后(6)软件开发费用不断增加(言之有理即可)
2 说明软件测试和调试的目的有何区别?
答:测试的目的是判断和发现软件是否有错误,调试的目的是定位软件错误并纠正错误。
三、简答题(共24分)
假设你是一名开发者,在开发某小型图书管理系统时,要求实现以下服务:借阅者可以通过系统查询图书 信息、借阅图书、归还图书(若读者还书时超过借阅期限,就要交纳一定罚金)。登录系统后还可以查询本人的借阅信息,也可以进行图书预订。
(1) 在该系统中,你认为应该存在哪些实体类?
(2) 根据上述功能描述设计读者请求服务的用例图(Use Case)。
(3) 在开发中你打算使用哪些软件设计思想?
答:言之有理即可。