- 软件工程教程
- 软件工程主页
- 软件工程概述
- 软件开发生命周期
- 软件项目管理
- 软件需求
- 软件设计基础
- 分析与设计工具
- 软件设计策略
- 软件用户界面设计
- 软件设计复杂性
- 软件实现
- 软件测试概述
- 软件维护
- CASE工具概述
- 软件 - 考试题及答案
- 软件工程 - 考试题及答案
软件工程面试问题
亲爱的读者们,这些软件工程面试问题特别设计是为了让您熟悉在软件工程面试中可能遇到的问题类型。根据我的经验,优秀的 interviewers 很少会预先计划好要问哪些特定问题,通常问题会从该学科的一些基本概念开始,然后根据进一步的讨论和您的回答继续下去。
问:什么是计算机软件?
答:计算机软件是一个完整的包,它包括软件程序、其文档以及关于如何使用软件的用户指南。
问:你能区分计算机软件和计算机程序吗?
答:计算机程序是一段执行特定任务的编程代码,而软件包括编程代码、其文档和用户指南。
问:什么是软件工程?
答:软件工程是与软件系统开发相关的工程分支。
问:当你懂编程时,为什么还需要学习软件工程的概念?
答:一个知道如何砌墙的人可能不擅长建造整栋房子。同样,一个能够编写程序的人可能并不了解软件工程的其他概念。软件工程概念指导程序员如何评估最终用户的需求,在实际编码开始之前设计算法,通过编码创建程序,测试代码及其文档。
问:什么是软件过程或软件开发生命周期(SDLC)?
答:软件开发生命周期或软件过程是通过遵循开发过程中的每个阶段来系统地开发软件,这些阶段包括需求收集、系统分析、设计、编码、测试、维护和文档,并按此顺序进行。
问:有哪些可用的SDLC模型?
答:有几种可用的SDLC模型,例如瀑布模型、迭代模型、螺旋模型、V模型和大爆炸模型等。
问:SDLC的各个阶段是什么?
答:SDLC的通用阶段是:需求收集、系统分析和设计、编码、测试和实现。阶段取决于我们选择开发软件的模型。
问:哪个SDLC模型最好?
答:SDLC模型是根据开发过程的需求采用的。它可能因软件而异,以确保哪个模型合适。
如果满足以下答案,我们可以选择最佳的SDLC模型:
- SDLC是否适合所选技术来实现软件?
- SDLC是否适合客户的需求和优先级?
- SDLC模型是否适合软件的规模和复杂性?
- SDLC模型是否适合我们所做的项目类型和工程?
- SDLC是否适合地理位置集中或分散的开发人员?
问:什么是软件项目管理?
答:软件项目管理是管理软件开发中涉及的所有活动(如时间、成本和质量管理)的过程。
问:谁是软件项目经理?
答:软件项目经理是承担执行软件项目责任的人。
问:软件项目经理做什么?
答:软件项目经理从事软件管理活动。他负责项目规划、进度监控、利益相关者之间的沟通、风险和资源管理、开发的顺利执行以及在时间、成本和质量约束范围内交付项目。
问:什么是软件范围?
答:软件范围是一个明确定义的边界,它包含开发和交付软件产品的所有活动。
软件范围明确定义了作为软件一部分交付的所有功能和工件。范围确定了产品将做什么以及将不做什么,最终产品将包含什么以及将不包含什么。
问:什么是项目估算?
答:这是一个估算软件产品各个方面以计算开发成本(以工作量、时间和资源计)的过程。此估算可以从过去的经验中得出,也可以通过咨询专家或使用预定义公式得出。
问:我们如何确定软件产品的大小?
答:可以使用两种方法计算软件产品的大小:
- 计算交付代码的行数
- 计算交付的功能点
问:什么是功能点?
答:功能点是软件产品提供的各种功能。它被认为是软件大小的度量单位。
问:有哪些可用的软件项目估算技术?
答:有很多估算技术可用。最常用的技术包括:
- 分解技术(计算代码行数和功能点)
- 经验技术(Putnam 和 COCOMO)。
问:什么是基线?
答:基线是定义阶段完整性的度量。完成与特定阶段相关的所有活动后,该阶段即完成,并作为下一阶段的基线。
问:什么是软件配置管理?
答:软件配置管理是跟踪和控制软件需求、设计、功能和产品开发方面变化的过程。
问:什么是变更控制?
答:变更控制是配置管理的一项功能,它确保对软件系统所做的所有更改都是一致的,并且符合组织的规则和规章。
问:如何衡量项目执行情况?
答:我们可以通过活动监控、状态报告和里程碑清单来衡量项目执行情况。
问:提一些项目管理工具。
答:根据软件项目的要求和组织策略,使用各种项目管理工具。这些工具包括甘特图、PERT图、资源柱状图、关键路径分析、状态报告、里程碑清单等。
问:什么是软件需求?
答:软件需求是拟议软件系统的功能描述。需求被认为是对目标系统、其功能和特性的描述。需求传达了用户对系统的期望。
问:什么是可行性研究?
答:这是衡量软件项目开发对组织而言多么实用和有益的措施。软件分析师会进行彻底的研究,以了解项目的经济、技术和运营可行性。
经济方面 - 资源运输、培训成本、额外公用事业和工具的成本以及项目的总体成本和效益估算。
技术方面 - 是否可以开发此系统?评估软件将运行的机器和操作系统、现有开发人员的知识和技能、培训、项目所需的公用事业或工具的适用性。
运营方面 - 组织能否根据项目的需要顺利适应变化?这个问题值得解决吗?
问:如何收集需求?
答:可以通过访谈、调查、任务分析、集思广益、领域分析、原型设计、研究现有可用的软件版本以及观察来收集用户的需求。
问:什么是SRS?
答:SRS或软件需求规格说明是在需求收集过程中生成的文档。它也可以被视为改进需求并记录需求的过程。
问:什么是功能需求?
答:功能需求是用户对拟议软件产品的功能特性和规范的期望。
问:什么是非功能需求?
答:非功能需求是隐含的,并且与安全性、性能、用户界面的外观和感觉、互操作性、成本等相关。
问:什么是软件度量?
答:软件度量可以理解为量化和象征软件各种属性和方面的一个过程。
问:什么是软件指标?
答:软件指标为软件过程和软件产品的各个方面提供度量。它们分为:
- 需求指标:需求长度、完整性
- 产品指标:代码行数、面向对象指标、设计和测试指标
- 过程指标:评估和跟踪预算、进度、人力资源。
问:什么是模块化?
答:模块化是一种将软件系统划分为多个独立模块的技术,这些模块预计将独立执行任务。
问:什么是并发,如何在软件中实现?
答:并发是事件或动作同时发生的趋势。在软件中,当两个或多个进程同时执行时,它们被称为并发进程。
示例
当您启动打印命令并开始打印时,您可以打开一个新应用程序。
并发是通过将软件拆分为多个独立的执行单元(即进程和线程)并并行执行它们来实现的。
问:什么是内聚性?
答:内聚性是一种度量,它定义了模块元素之间内部依赖程度。
问:什么是耦合?
答:耦合是一种度量,它定义了程序模块之间相互依赖的程度。
问:提一些软件分析与设计工具?
答:这些可以是:DFD(数据流图)、结构图、结构化英语、数据字典、HIPO(层次输入过程输出)图、ER(实体关系)图和决策表。
问:什么是0级DFD?
答:最高抽象级别的DFD称为0级DFD,也称为上下文级别DFD,它将整个信息系统描绘成一个图,隐藏所有底层细节。
问:结构化英语和伪代码有什么区别?
答:结构化英语是使用编程语言关键字来编写程序模块结构的本地英语,而伪代码更接近编程语言,并使用本地英语单词或句子来编写代码部分。
问:什么是数据字典?
答:数据字典被称为元数据。这意味着它是一个关于数据的数据存储库。数据字典用于组织系统中使用的名称及其引用,例如对象和文件及其命名约定。
问:什么是结构化设计?
答:结构化设计是将问题概念化为几个组织良好的解决方案元素。它关注解决方案设计,并基于“分而治之”的策略。
问:面向函数设计和面向对象设计有什么区别?
答:面向函数的设计由许多称为函数的较小的子系统组成。每个函数都能够在系统中执行重要的任务。面向对象的设计围绕现实世界中的对象(实体)、它们的类(类别)和在对象上操作的方法(函数)进行。
问:简要定义自顶向下和自底向上设计模型。
答:自顶向下模型从系统的概括视图开始,将其分解为更具体的视图,而自底向上模型首先从最具体和最基本的组件开始,并不断组合组件以获得更高层次的抽象。
问:Halstead复杂度度量的基础是什么?
A. Halstead复杂度度量取决于程序的实际实现,它以程序中使用的标记作为度量的基础。
Q.请说明计算程序圈复杂度的公式?
A. 圈复杂度使用图论公式:V(G) = e – n + 2
Q.什么是函数式编程?
A. 函数式编程是一种编程语言风格,它使用数学函数的概念。它提供了一种将计算作为数学函数的方式,无论程序状态如何,它都能产生结果。
Q.区分验证和确认?
A. 验证检查产品是否符合用户需求,而确认检查是否遵循正确的步骤来开发产品。
验证确认是正确的产品,确认确认产品是否以正确的方式构建。
Q.什么是黑盒测试和白盒测试?
A. 黑盒测试检查当给出有效输入值时是否产生所需的输出。它不验证程序的实际实现。
白盒测试不仅检查提供有效输入时是否产生所需和有效的输出,而且还检查代码是否正确实现。
标准 | 黑盒测试 | 白盒测试 |
---|---|---|
是否需要了解软件程序、设计和结构 | 否 | 是 |
是否需要了解软件实现 | 否 | 是 |
谁对软件进行此测试 | 软件测试工程师 | 软件开发人员 |
测试人员的基线参考 | 需求规格说明 | 设计和结构细节 |
Q.质量保证与质量控制?
A. 质量保证监控检查在开发软件的过程中是否遵循正确的流程。
质量控制处理的是维护软件产品的质量。
Q.软件维护有哪些不同类型?
A. 维护类型包括:纠正性、适应性、完善性和预防性。
- 纠正性
消除用户发现的错误
- 适应性
解决软件运行的硬件和软件环境的变化
- 完善性维护
实现用户现有或新的需求的变化
- 预防性维护
采取适当措施避免未来问题
Q.什么是软件再工程?
A. 软件再工程是在不改变软件功能的情况下升级软件构建技术的流程。这样做是为了使软件与最新技术保持同步。
Q.什么是CASE工具?
A. CASE代表计算机辅助软件工程。CASE工具是一套自动化软件应用程序,用于支持、加速和简化SDLC活动。
下一步是什么?
此外,您可以回顾一下您过去完成的与主题相关的作业,并确保您能够自信地谈论它们。如果您是应届毕业生,面试官不会期望您回答非常复杂的问题,而是您必须使自己的基础概念非常扎实。
其次,如果您无法回答一些问题,这并不重要,重要的是,无论您回答了什么,都必须自信地回答。所以在面试中要有自信。我们在tutorialspoint祝您面试顺利,并祝您未来的事业一切顺利。干杯 :-)