软件开发工程师笔试主观题

啊南 1531阅读 2020.03.17

【导语】: 大部分的职位在招聘时都会设置多道关卡:笔试、初试、复试,并不是所有人都能够进入面谈环节的,大部分的求职者都倒在了笔试这一关。那么究竟要怎么做才能跨过笔试这一道关卡呢?除了提前准备别无他法,笔试当中最难的最容易丢分的就是主观题的回答,毕竟一道主观题涵盖的信息量还是很大的。以下准备了一些往年软件开发工程师岗位笔试主观题,有兴趣的可以提前做一个了解。

软件开发笔试主观题5例

1、软件生存周期是什么? 
软件生存周期是软件的生产直到报废的生命周期,由软件定义、软件开发、软件维护三个时期组成。
(1) 软件定义时期的任务是确定软件开发的总目标即问题定义;确定可行性;需求
分析。
(2) 软件开发时期具体设计和实现在前一个时期定义的软件。包括总体设计,详细
设计,编码和测试。
(3) 软件维护时期主要任务是使软件持久地满足用户的需要,延续软件使用的寿命。
2、数据字典是什么? 
数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合,数据字典是一种用户可以访问的记录数据库和应用程序源数据目录。数据流图和数据字典共同构成系统的逻辑模型。
数据字典有4类元素定义组成:数据流,数据流分量(数据元素(数据结构,数据项)),数据存储,处理。
在数据字典中记录数据元素的信息,如一般信息,定义,使用特点,控制信息,分组信息。
数据字典最重要的用途是作为分析阶段的工具。在数据字典中建立的一组严密一致的定义很有助于改进分析员和用户之间的通信,消除误解。数据字典是开发数据库的第一步,也是很有价值的一步。
3、软件文档的作用 
软件文档在产品的开发过程中起着重要的作用。
(1) 提高软件开发过程的能见度,将开发过程发生的事件以某种可阅读的形式记录在文档中 (2) 管理人员可以把记载下来的材料作为检查软件开发进度和开发质量的依据,实现对软件开发的工程管理. 
(3) 提高开发效率  作为开发人员在一定阶段的工作成果和结束标志。便于潜在用户了解软件的功能、性能等各项指标,为他们选购符合自己需要的软件提供依据。
(4) 记录开发过程中有关的信息,便于协调以后的软件开发、使用和维护 
(5) 提供对软件的运行,维护和培训等有关信息,便于管理人员,开发人员,操作人员,用户等之间的协 作、交流和了解。
(6) 文档是软件开发规范的体现和指南 
4、黑盒测试是什么? 
黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中把程序看做一个不能打开的黑盒子,在完全不考虑内部结构和内部特性的情况下,在程序接口进行测试。它只检查程序功能是否按照要求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
黑盒测试注重于软件的功能需求,能发现以下几类错误:功能不正确或遗漏;界面错误;输入和输出错误;性能错误;初始化和终止错误等。
优点:适用于各个阶段,容易入手生成测试数据 缺点:某些代码得不到测试,不易进行充分性测试 
5、软件危机是什么? 
软件危机是指在计算机软件的开发和维护过程中所遇到一系列严重问题。
软件危机包含两方面问题:如何开发软件,满足对软件日益增长的需求;如何维护数量不断膨胀的已有文件。
表现:(1)对软件开发成本和进度的估计常常不准确      
         (2)用户对“已完成的”软件系统不满意
         (3)软件产品的质量靠不住
         (4)软件常常不可维护 
         (5)软件通常没有合适的文档资料 
         (6)软件成本在计算机系统总成本中所占比例逐年增加 
         (7)软件开发生产率提高的速度,跟不上计算机应用迅速普及深入的趋势 原因:
(1)与软件本身有关: 软件不会被“用坏”,若运行发现错误,很可能是在开发时期引入的;软件规模庞大,程序复杂性随着程序规模的增加而增加 
(2)与软件开发与维护的方法有关:忽视软件需求分析的重要性,对用户的要求没有正确认识就着手编写程序;轻视软件维护 
消除危机途径: 
(1) 正确认识计算机软件 
(2) 认识软件开发是需要组织良好,管理严格,各类人员协同配合、共同完成的工程项目 
(3) 推广使用在实践中总结出来开发软件成功的技术和方法,并继续探索研究
(4) 开发和使用更好的软件工具 
(5) 有技术措施,又要有必要的组织管理

软件开发笔试主观题10例

1. 举例说明类和对象的关系。
答:学生可作为一个类---学生类,每个学生就是这个学生类的一个实例,例如,学生张三就是学生类的一个实例。
2. 面向对象分析的关键步骤有哪些?应建立哪几个模型? 
答:关键步骤有识别问题域的对象并分析它们相互之间的关系,建立简洁、精确、可理解的正确模型;应建立的模型有功能模型,对象模型,动态模型。
3. 什么是实体类、边界类和控制类?为什么将分析类划分成这三种类型?  
答:(1)实体类保存要存入永久存储体的信息。实体类通常在事件流或交互图中,是对用户最有意义的类。

边界类位于系统与外界的交界处,包括所有的窗体、报表、系统硬件接口、与其他系统的接口。控制类负责协调其他类的工作。每个用例中至少应该有一个控制类,它控制用况中的事件顺序。
       (2)分为三种类型是因为它们各自的功能不同。界面类——描述系统与角色之间的接口。控制类——在分析模型内表示协调、顺序、事务处理以及控制其他对象的类。

实体类——为需要长久保存的信息进行建模的类。
4. UML中有哪几类个视图,它们的作用分别是什么? 
答:
(1)用例视图(Use-Case view),用例视图用于描述系统的功能集。它是从系统外部以用户角度,对系统做的抽象表示。用例视图所描述的系统功能依靠于外部用户或另一个系统触发激活,为用户或另一个系统提供服务,实现与用户或另一个系统之间的交互。用例视图中可以包含若干个用例,用例表示系统能够提供的功能,用例视图是其他视图的核心和基础。其他视图的构造依赖于用例视图中所描述的内容,因为系统的最终目标是实现用例视图中描述的功能,同时附带一些非功能性的特性,因此用例视图影响着所有其他的视图。
(2)逻辑视图(Logical view),如果说用例视图描述系统“做什么”,那么逻辑视图就是描述“怎么做”。系统的静态结构描述类、对象和它们之间的关系,反映的是系统静态特征或结构组成。
(3)组件视图(Component view),组件视图用来描述系统实现的结构和行为特征,反映系统各组成元素之间的关系。组件视图由组件图实现,主要供开发者和管理者使用。
(4)并发视图(Concurrency View),并发视图用来描述系统的动态和行为特征。并发视图将任务划分为进程或线程形式,通过任务划分引入并发机制,可以高效地使用资源、并行执行和处理异步事件。除了划分系统为并发执行的进程或线程外,并发视图还必须处理通信和同步问题。
(5)配置视图(Deployment View)配置视图体现了系统的实现环境,反映系统的物理架构。配置视图还包括一个映射,该映射显示在物理架构中组件是怎样分配的。
5. 顺序图在分析阶段的作用? 
答:顺序图描述了一组交互对象间的交互方式,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序 
6. 活动图在分析阶段的作用? 
答:活动图反映系统中从一个活动到另一个活动的流程,强调对象间的控制流程。活动图特别适合描述工作流和并行处理过程。具体地说活动图可以描述一个操作过程中需要完成的活动;描述一个对象内部的工作;描述如何执行一组相关的动作,以及这些动作如何影响它们周围的对象;说明一个业务活动中角色、工作流、组织和对象是如何工作的。
7.比较结构化设计和面向对象设计区别? 
答:结构化设计:系统被划分成多个模块,这些模块被组织成一个树型结构。根就是主模块,叶子是最低级的功能模块。这棵树也表示调用结构:每个模块都调用自己的直接下级模块,并被自己的直接上级模块调用。顶层模块负责收集应用程序最重要的那些执行策略,底层模块实现处理细节。在这个体系结构中越靠上层位置,概念的抽象层次就越高。但是,由于上层模块需要调用下层模块,所以这些上层模块就依赖于下层模块的处理细节。也就是说,当实现细节发生变化时,抽象也会受到影响;如果想复用某一个抽象的话,就必须把它依赖的细节都一起拖过去。
面向对象设计:上层创建的抽象不依赖于任何细节,而细节则高度依赖于上层的抽象。这种依赖关系的变化正是结构化设计与面向对象设计的根本区别。
8.什么是框架,它与“设计”有什么关系? 
答:框架是一组可用于不同应用的类的集合。框架中的类通常是一些抽象类并且相互有联系,可以通过继承的方式使用这些类,当面向对象设计进行底层设计时,对每个类进行详细设计,设计类的属性和操作,优化类之间的关系,就可以设计成框架来对类的设计进行构架和优化。
9.系统的物理构架中应该包括哪些信息? 
答:用UML的配置图描述系统的物理构架,然后将需求分析阶段捕获的系统功能分配到这些物理节点上。包括的信息为节点的拓扑结构、硬件设备配置、通信路径、各个节点上运行的系统软件配置、应用软件配置。
10. 为建立良好的编程风格应遵循什么原则? 
答: 1)节简化①不使用不必要的变量和函数 ②避免变量重名,变量重名可导致很难被发现的错误。③尽量减小代码量。④尽量减少代码的执行时间,提高执行效率。⑤避免功能冗余的模块。⑥尽量不使用全局变量。
       2)模块化①确保物理和逻辑功能密切相关。 ②限定一个模块完成一个独立的功能,提高模块的内聚度。 ③检查代码的重复率,重复多的代码,要抽出来作为一个单独的模块。
       3)简单化①采用直接了当的算法,避免使用技巧性高和难懂的代码。②使用简单的数据结构,避免使用多维数组、指针和复杂的表。③注意对象命名的一致性。④以手工的方式简化算术和逻辑表达式。
       4)结构化①按标准化的次序说明数据;②按字母顺序说明对象名③使用读者明了的结构化程序部件;④采用直截了当的算法;⑤根据应用背景排列程序各个部分;⑥不随意为效率而牺牲程序的清晰度和可读性;⑦让机器多做烦琐的工作,如重复、库函数;⑧用公共函数调用代替重复出现的表达式;⑨避免循环、分支的嵌套层数过高;⑩单入口单出口。
       5)文档化(documentation)①有效、适当地使用注释。②协调使用程序块注释和程序行注释。③保持文档和程序的同步。6)格式化(layout)①始终采用统一缩进规则;②适当插入括号表明运算次序、排除二义性;③有效地使用空格符以区别程序的不同意群。

软件开发工程师笔试主观题15例

1. 什么是软件工程?软件工程的目标是什么? 
答:软件工程是①将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,②对①中所选方法的研究。
目标:1合理预算开发成本,付出较低的开发费用。2实现预期的软件功能,达到较好的软件性能,满足用户的需求。3 提高软件的可维护性,降低维护费用。4 提高软件开发生产率,及时交付使用 
2. 指出瀑布模型中下列任务的顺序:验收测试,项目计划,单元测试,需求评审,成本估计,概要设计,详细设计,系统测试,设计评审,编码,需求规格说明书。
答:项目计划,成本估计,需求规格说明书,需求评审,概要设计,详细设计,设计评审,编码,单元测试,系统测试,验收测试 
3. 可行性研究报告的主要内容是什么? 
答:可行性研究主要包括以下几个部分: 
   (1)概述(2)技术可行性(3)项目成熟程度(4)市场需求情况和风险分析(5)投资估算及资金筹措(6)经济与社会效益(7)综合实力和产业基础(8)项目实施进度计划(9)其它尚需要说明的必要的方面(10)结论 
4. 什么是需求分析?需求分析阶段的基本任务是什么? 
答:所谓"需求分析",是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。可以说,“需求分析”就是确定要计算机“做什么”。
任务:确定软件项目的目标和范围。调查使用者的要求,分析软件必须做什么,编写需求规格说明书等它相关文档,并进行必要的需求审查。除此之外,还包括需求变更控制,需求风险控制,需求版本控制等对需求的管理工作 
5. 什么是结构化分析方法?该方法使用什么描述工具? 
答:结构化的分析方法是面向数据流的方法,因此,此方法研究的核心是数据的组成和数据流向和对数据的加工处理。
结构化分析方法用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直至找到满足功能要求的所有可实现的软件元素为止 
描述工具:1系统流程图 2 数据流程图3数据字典4 IPO图 5层次方框图6实体—关系图 7状态—变迁图 
6. 结构化分析方法通过哪些步骤来实现? 
答:1)确定系统的功能要求 2)确定系统的数据要求  3)确定系统的操作要求和界面要求  4) 确定系统的性能要求  
5)确定系统的运行要求   6)获得当前系统的物理模型  7)抽象出当前系统的逻辑模型   8)建立目标系统的逻辑模型。9)修正开发计划  10)如果需要则开发系统原型  
7. 什么是数据流图?其作用是什么?其中的基本符号各表示什么含义? 
答:数据流图:简称DFD,就是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,
是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
数据流图的基本符号的意思: 1.矩形表示数据的外部实体;2.圆角的矩形表示变换数据的处理逻辑; 3.少右面的边
矩形表示数据的存储; 4.箭头表示数据流。
8. 什么是数据字典?其作用是什么?它有哪些条目? 
答:数据字典,主要用来描述数据流程图中的数据流、数据存储、处理过程和和数据源点/终点。
作用:数据流程图描述了系统的逻辑结构,其中的四个基本图形元素的含义无法在数据流程图中详细说明,因此数据流程图需要与其他工具配合使用,数据字典就是这样的工具之一。
包括的条目:数据流词条  数据元素词条   数据存储词条  数据加工处理词条 数据源点及终点词条 
9. 什么是概要设计?有哪些基本任务? 
答:概要设计:根据用户的需求先确定软件系统的总体结构和总的设计原则 
基本的任务:设想供选择的方案。推荐最佳方案。功能分解,确定软件结构。设计软件结构。制定测试计划。数据设计。书写文档。包括总体设计规格说明书。用户手册。测试计划。设计审查和复审。
10. 详细设计的基本任务是什么?有那几种描述方法? 
答:详细设计阶段的任务是要为编写程序代码设计“图纸”,由程序员按“图纸”用某种高级程序设计语言编写程序代码。主要方法有设计程序流程图,表格设计符号以及过程设计语言。
11. 什么是变换流?什么是事物流? 
答:变换型数据流可以划分为明显的三部分:逻辑输入,中心变换,逻辑输出。事务流的特点是数据沿某个输入路径
流动,该路径将外部信息转换成事务,其中发射出多条事务处理路径的中心处理被称为中心事务 
12. 模块的内聚有哪几种?模块间的耦合有哪几种? 
答:内聚分为七种类型:巧合内聚:一个模块执行多个完全互不相关的动作,那么这个模块就有巧合内聚     
逻辑内聚:当一个模块执行一系列相关的动作时,称其有逻辑内聚。
时间性内聚:当一个模块内的多个任务是与时间有关时,这个模块具有时间性内聚。
过程内聚:模块执行的若干动作之间有顺序关系。
通信内聚:模块执行的若干动作之间有顺序关系,并且所有动作是在相同的数据上执行。
信息内聚:一个模块中执行一系列动作,每个动作都有自己的入口点和处理代码,所有的动作都作用在相同的数据结构上,这样的模块叫做信息内聚。
功能性内聚:一个模块中各个部分都是完成某一具体功能必不可少的组成部分 
耦合分为七类:内容耦合:如果一个模块直接参考另一个模块的内容,则这两个模块是内容耦合。公共耦合:如果多个模块都访问同一个公共数据环境,则称它们是公共耦合。外部耦合:如果两个模块都访问同一个全局简单变量而不是同一全局数据结构,而且,不是通过参数表传递该全局变量的信息,则这两个模块属于外部耦合。控制耦合:如果模块A向模块B传递一个控制信息,则称这两个模块是控制耦合的。
  数据结构耦合:当一个模块调用另一个模块时传递了整个数据结构,这两个模块之间具有数据结构耦合。数据耦合:如果两个模块传递的是数据项,则这两个模块是数据耦合。非直接耦合:如果两个模块之间没有直接关系,它们之间的联系完全通过主模块的控制和调用来实现的,这就是非直接耦合。
13. 什么是软件测试? 
答:软件测试从广义上讲,是指软件产品生存周期内所有的检查、评审和确认活动。从狭义上讲,软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各个阶段的规格说明和程序内部结构而精心设计一批测试用例,用这些测试用例运行程序,以发现程序错误的过程。
14. 软件测试的原则是什么? 
答:软件测试的原则有: 
1) 应该把测试贯穿在整个开发过程之中。事实上,从需求分析阶段开始,每个阶段结束之前都要进 行阶段审查,目的是尽早发现和纠正错误。
2) 每个测试用例都应该包括测试输入数据和这组数据输入作用下的预期输出结果。在实际操作中可以列出一张表格,包括每个测试用例的编号、类型、输入数据、预期输出结果、实际输出结果、出错原因分析。
3) 要对每个测试结果进行全面检查,不要漏掉已经出现的错误迹象。
4) 程序员应该尽量避免检查自己编写的代码。测试工作需要严格的工作作风,程序员在测试自己编写的代码时往往会带有一些倾向性,使得他们工作中常常出现一些疏漏。而且,程序员对设计规格说明书的理解错误而引入的错误更是难于发现。
5) 在设计测试用例时,应该包括有效的、期望的输入情况,也要包括无效的和不期望的输入情况。既能够验证程序正常运行的合理输入,也能够验证对异常情况处理的不合理输入数据以及临界数据。在测试程序时,人们常常过多地考虑合法的和期望的输入条件,以检查程序是否做了它应该做的事情,而忽视了不合法的和预想不到的输入条件。事实上,用户在使用系统时,输入一些错误指令和参数是经常发生的,如果软件遇到这种情况不能做出适当的反应,给出相应的提示信息,就可能会误导用户,甚至造成严重损失。
6) 软件中遗留的错误数量与已经发现的错误数量成正比。根据这个规律,对测试中发现错误成堆的模块更要仔细测试。例如,在某个著名的操作系统中,44%的错误仅与4%的模块有关。
7) 回归测试的关联性要特别引起注意,修改一个错误而引起更多错误的现象并不少见。
8) 测试程序时不仅要检查程序是否做了它应该做的事情,还要检查它是否做了不该做的事情。例如,工资软件中,软件只完成在编职工的工资计算和输出,不在编人员的工资是不进行计算和输出的。如果软件将不在编人员的工资信息也输出显然是不合适的。
9) 严格执行测试计划。在测试之前应该有明确的测试计划,内容包括:要测试的软件功能和内容、测试用例和预期结果、测试的进度安排、需要的工具和资源、测试控制方式和过程等。
10)做好测试记录,为统计和维护提供基础数据。
15. 请说明集成测试、系统测试和验收测试有什么不同? 
答:集成测试界于单元测试和系统测试之间,起到“桥梁作用”,一般由开发小组采用白盒加黑盒的方式来测试,既验证“设计”,又验证“需求”。
系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合“需求规格说明书”。
验收测试与系统测试相似,主要区别是测试人员不同,验收测试由用户执行。