如何评测软件工程知识技能水平?
软件工程师:
软件工程师英文是Software Engineer,是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格。软件工程师是从事软件开发相关工作的人员的统称。软件工程师包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位,工作内容都与软件开发生产相关。软件工程师的技术要求是比较全面的,除了最基础的编程语言(C/C++/JAVA等)、数据库(SQL/ORACLE/DB2等)等,还有诸多如AJAX、SPRING等前沿技术。此外,关于网络工程和软件测试的其他技术也要有所涉猎。
基本要求:
1、对一两门编程语言熟练、精通。
2、掌握一定的数据结构与算法知识。
数据结构+算法=程序,基本的数据结构算法知识是软件开发的基础,更是高级程序工程师对软件优化的重要基础。
3、对底层有一定了解。
包括操作系统、计算机组成原理、计算机网络知识,linux系统的基本操作,以及一些高级语言的底层实现。
4、对数据库知识有一定掌握。
日常的软件开发总是会设计数据库的交互,必须对数据知识有足够的了解,才能完成对数据库的交互。
5、比较强的自学能力。
程序员这行技术更新换代比加快,需要不断学习新知识来提升自己,保证自己的职业竞争力。
6、对软件开发过程有深刻体会。
如果不懂软件开发流程,盲目按照自己想法开发,尤其是比较大型项目,比较容易出错。
出题思路:
主要出了四个题型,分别是名词解释,选择题,判断题,简答题。
涉及的内容主要是软件开发各个阶段的详细内容,以及面向对象分析的知识。
一、名词解释:
1、重构(Refactoring):就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
2、多态(Polymorphism):接口多种不同的实现方式即为多态。
3、泛化(Generalization):泛化是一般性事物(称为超类或父类)和它的较为特殊种类(称为子类)之间的一种关系,有时称为“is-a-kind-of”关系。
二、选择题:
1、下列关于单元测试的说法,不正确的是(B)
A. 单元测试应该在最基本的功能/参数上验证程序的正确性。
B. 单元测试过后,机器状态可能会发生改变。
C. 单元测试应该产⽣可重复、⼀致的结果。
D. 单元测试应该覆盖所有代码路径。
解析:单元测试过后,机器状态保持不变。
2、(中国大学mooc,北京大学-软件工程课后题)Jack在Google工作,是公司市场组的一名成员。那么描述Jack的类目Employee和描述Google的类目Company之间是(A)关系。
A.关联 B.泛化 C.细化(实现)D.依赖
解析:关联指一个类是另一个类的成员变量,可以是单向的,也可以是双向的;依赖指一个类的某个方法参数类型为另一个类。Employee明显是Company的成员变量。
3、软件生命周期中所花费用最多的阶段是( D )。
A、详细设计 B、软件编码 C、软件测试 D、软件维护
4、(中国海洋大学, 2009,软件工程期末)面向对象的分析方法主要是建立三类模型,即( B )。
A、系统模型、E-R模型、应用模型 B、对象模型、动态模型、功能模型
C、E-R模型、对象模型、功能模型 D、对象模型、动态模型、应用模型
5、(中国海洋大学,2014,软件工程期末)瀑布模型的关键不足在于( B )
A、过于简单 B.不能适应需求的动态变更
C.过于灵活 D.各个阶段需要进行评审
6、(牛客网)下面不是面向对象的基本原则的是(C)?
A、单一职责原则(Single-Resposibility Principle)
B、开放封闭原则(Open-Closed principle)
C、抽象类原则(Abstract-Class principle)
D、依赖倒置原则(Dependecy-Inversion Principle)
E、接口隔离原则(Interface-Segregation Principle)
解析:五大基本原则:单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)、接口隔离原则(ISP)。
7、(中国海洋大学,2014,软件工程期末)结构化分析方法以数据流图、__D__和加工说明等描述工具,即用直观的图和简洁的语言来描述软件系统模型。
A.DFD图 B.PAD图 C.IPO图 D.数据字典
8、(牛客网)系统软件中主要包括操作系统,语言处理程序和(C)
A、用户程序 B、实时程序 C、实用程序 D、编程程序
解析:系统软件包括操作系统,语言系统和工具系统,工具系统也称为实用系统
9. (牛客网)工厂模式是比较常用的设计模式,它遵循了如下设计原则中的?( A )
A、单一职责原则 B、开放-封闭原则 C、依赖倒置原则 D、里氏代换原则
解析:单一职责原则告诉我们实现类要职责单一;里氏替换原则告诉我们不要破坏继承体系;依赖倒置原则告诉我们要面向接口编程;接口隔离原则告诉我们在设计接口的时候要精简单一;迪米特法则告诉我们要降低耦合。而开闭原则是总纲,他告诉我们要对扩展开放,对修改关闭。
10、两个模块彼此传递的信息中有控制信息,这种耦合称为( D )
A 数据耦合 B 公共环境耦合 C 内容耦合 D 控制耦合
三、判断题:
1、 linux的find和grep指令,区别在于find是用来搜索文件内部文本的,grep是用来搜索文件的。(F)
解析:linux的find和grep指令,区别在于find是用来搜索文件的,grep是用来搜索文件内部文本的。
2、在设计需求分析的过程中,功能需求是主体,没有功能需求就没有非功能需求。(T)
3、是一种描述数据变换的图形工具,它包含的元素可以使数据流、数据存储、加工、数据源、数据潭等。(T)
4、(中国大学mooc,北京大学-软件工程课后题)所有的数据流图都可以看作变换型数据流图。(T)
5、编码风格由个人喜好决定,没有固定格式。(F)
6、软件工程学只有理论意义,没有实际用途。(F)
7、类图用来表示系统中类和类与类之间的关系,是对系统动态结构的描述。( F )
解析:类图用来表示系统中类和类与类之间的关系,是对系统静态结构的描述。
8、(中国海洋大学, 2009,软件工程期末)软件测试只能证明程序有错误,不能证明程序没有错误。( T )
9、UML 是一种面向对象的分析设计方法,即OOA/OOD 方法。(F)
解析:UML是一种面向对象的统一建模语言。
10、scrum模型是一个非敏捷的瀑布式开发模型。(F)
解析:scrum模型是一个敏捷开发模型。
四:简答题:
1、用例建模的步骤:
1) 识别并描述参与者
2) 识别用例,并给出简要描述
3) 识别参与者与角色之间的通讯关联
4) 给出每一个用例的详细描述
5) 细化用例模型
2、多态的三个必要条件是什么?
1) 要有继承
2) 要有方法的重写
3) 父类引用指向子类对象
3、软件测试的步骤以及测试的对象是什么?
①单元测试,测试对象为单元模块
②集成测试:测试对象是组装后的程序模块
③确认测试:测试对象是可运行的目标软件系统。
4、软件生命周期 8 个时期?
问题定义,可行性研究,需求分析,总体设计(概要设计),详细设计,编码与单元测试,综合测试,运行维护。
5、(中国海洋大学,06-07,软件工程期末)培训中心要研制一个计算机管理系统,它的业务是:将学员发来的信件收集分类后,按几种不同的情况处理,
(1)如果是报名的,则把报名数据送给负责报名事务的职员,他们将查询课程文件,检查该课程是否额满,然后在学生文件、课程文件与账目文件上登记,并开出报告单给财务部门,财务人员开发票给学员。
(2)如果是想注销原来已选修的课程,则由注销人员在课程文件、学生文件和帐目文件上做相应的修改,并给学生注销单。
(3)如果是付款的,则由财务人员在帐目文件上登记,也给学生一张收费收据。
要求:(1)对以上问题画出数据流程图
(2)画出该培训管理的软件结构图的主图。