1、什么是软件开发工程师?程序员
软件工程师是从事软件开发工做人员的统称,包括软件架构人员、软件工程管理人员、程序员等一系列岗位,工做内容都与软件开发生产相关。软件工程师的技术要求是相对较高的,除了最基础的编程语言、数据库技术等,还须要掌握一些前沿技术,对于网络工程和软件测试的其余技术也要有所了解。正则表达式
软件工程师分级数据库
软件工程师通常状况下分为4级:编程
一、软件技术员 二、助理软件工程师 三、软件工程师 四、高级软件工程师设计模式
2、 软件开发的主要步骤网络
软件开发通常分为下述四个步骤需求、设计、编程和测试数据结构
做为一名专业的软件工程师,一方面,是否掌握了程序员的基本功:键盘输入速度,快捷键,编译和调试工具等,熟练掌握经常使用的工具集—VSCode/Vim、正则表达式等;另外一方面,应该可以熟练掌握基础编程语言,而且可以深刻理解OOP、OOA、OOD 等编程思想。精通一门编程语言能为之后的软件开发打下坚实的基础。架构
(4)学习能力编程语言
IT技术可谓是更新换代最快的了,从市面上的电脑和手机就能够看出来。因此,只依靠本身以前学到的知识,很快就会被这个时代所淘汰,软件工程师应具有的技能里很重要的一点就是学习能力。由于只有具有了学习能力,才能在离开学校以后仍然可以独 立地学习最新的技术,同时可以自主的发现如今有什么新技术,市场上流行的技术元素与市场需求的变化。函数
1.瀑布模型的存在问题是( B )
A.用户容易参与开发 B.缺少灵活性
C.用户与开发者易沟通 D.适用可变需求
解析:瀑布模型各个阶段的划分彻底固定、模型是线性的,用户只有等到整个过程的末期才能见到开发成果,不适应需求的变化,缺少灵活性。
2.下列哪一个阶段不属于软件生存周期的三大阶段(C )。
A、计划阶段 B、开发阶段
C、编码阶段 D、维护阶段
解析:软件的生存周期包括:计划阶段、开发阶段、维护阶段。编码是开发阶段的一部分。
三、耦合的强弱取决于(A)。
A. 模块间接口的复杂程度
B. 调用模块的方式
C. 经过接口的信息
D. 模块内部各个元素彼此之间的紧密结合程度
4.需求分析的主要任务是(B)
A.肯定系统怎样完成工做
B.肯定系统必须完成哪些工做
C.研究系统的软件结构
D.肯定软件开发费用
解析:需求分析:开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。主要任务是肯定系统必须完成哪些工做
5.在设计测试用例时,(A)是用得最多的一种黑盒测试方法。
A.等价类划分 B.边界值分析
C.因果图 D.断定表
解析:等价类划分是一种典型的黑盒测试方法。等价类划分是指分步骤把海量的测试用例集减得很小但过程一样有效。也就是说,选取足够小测试用例,发现更多软件缺陷
6.下列哪一个图是N-S图(盒图)的构件(C)
A. B.
C. D.
解析:A是PAD图,B是流程图,C是盒图,D是PAD图
7.如下哪一项不是面向对象的特征( ).
A.多态性 B.继承性 C.封装性 D.过程调用
参考答案:D
考察点及解析:OOP特征的理解
面向对象的特征有:
(1)对象惟一性。
每一个对象都有自身惟一的标识,经过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不一样的对象不能有相同的标识。
(2)抽象性。
抽象性是指将具备一致的数据结构(属性)和行为(操做)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其余一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
(3)继承性。
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,能够在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容做为本身的内容,并加入若干新的内容。
继承性是面向对象程序设计语言不一样于其它语言的最重要的特色,是其余语言所没有的。
在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。
在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。
多重继承,JAVA、VB、NET、Objective-C均仅支持单继承,注意在C++多重继承时,需当心二义性。
在软件开发中,类的继承性使所创建的软件具备开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的建立工做量,增长了代码的可重用性。
采用继承性,提供了类的规范的等级结构。经过类的继承关系,使公共的特性可以共享,提升了软件的重用性。
(4)多态性(多形性)
多态性是指相同的操做或函数、过程可做用于多种类型的对象上并得到不一样的结果。不一样的对象,收到同一消息能够产生不一样的结果,这种现象称为多态性。
多态性容许每一个对象以适合自身的方式去响应共同的消息。
多态性加强了软件的灵活性和重用性。
来源:2016年复旦大学期末考试题
8.模块内聚度越高,说明模块内各成分彼此结合的程度越( )。
A.松散 B.紧密 C.没法判断 D.相等
参考答案:B
考察点:内聚与耦合的概念理解。
内聚度是前述信息隐藏和局部化概念的天然扩展,它标志一个模块内部各成分彼此结合的紧密程度。内聚度按其高低程度可分为7级,内聚度越高越好。
内聚度是前述信息隐藏和局部化概念的天然扩展,它标志一个模块内部各成分彼此结合的紧密程度。
设计软件时,应该可以识别内聚度的高低,并经过修改设计尽量提升模块内聚度,从而得到较高的模块独立性。
来源:2015北京航空航天大学期末考试题
九、 程序的三种基本控制结构是( B)。
A. 过程、子程序和分程序 B. 顺序、选择和循环
C. 递归、迭代和回溯 D. 调用、返回和转移
解析:
程序的三种基本控制结构 :顺序结构、选择结构、循环结构
简答题
1.什么是软件生命周期?
答:
一个软件从定义,开发,使用和维护,直到最终被废弃,要经历一个漫长的时期,一般把软件经历的这个漫长时期称为生命周期。
2.计算机软件的开发通过哪三个大阶段?
答: 三个阶段:定义、开发、维护。
3.解释重构与功能内聚?
答:
重构(Refactoring)就是经过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提升软件的扩展性和维护性。
功能内聚指模块内全部元素共同完成一个功能,缺一不可,所以模块不能再分割。
4.软件危机产生的缘由是什么?
答:
软件危机的缘由:
a) 软件不一样与硬件,是逻辑部件;
b) 软件规模庞大,逻辑结构复杂;
c) 软件开发人员和管理人员只重视设计程序而轻视用户的需求分析,致使最后研制出的软件产品没法知足用户的需求;
d) 软件设计技术和管理技术落后,没有统一的软件质量管理规范;
e) 在软件的开发与维护关系问题上存在错误的概念,重视开发,而轻视维护。
解析:
耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及经过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时代表其独立性越差( 下降耦合性,能够提升其独立性)。软件设计中一般用耦合度和内聚度做为衡量模块独立程度的标准。划分模块的一个准则就是高内聚低耦合。