软件工程面试问题
亲爱的读者,这些软件工程面试问题是专门为让您了解在软件工程主题面试中可能遇到的问题性质而设计的。根据经验,通常问题会从主题的一些基本概念开始,然后根据进一步的讨论和你的回答继续提问:
问:什么是计算机软件?
答:计算机软件是一个完整的软件包,包括软件程序、其文档和如何使用该软件的用户指南。
问:你能区分计算机软件和计算机程序吗?
答:计算机程序是一段执行明确定义的任务的编程代码,而软件包括编程代码、其文档和用户指南。
问:什么是软件工程?
答:软件工程是与软件系统开发相关的工程分支。
问:当您了解编程时,为什么还需要学习软件工程概念?
答: 知道如何建造墙壁的人可能不擅长建造整栋房子。同样,会编写程序的人可能不了解软件工程的其他概念。软件工程概念指导程序员如何评估最终用户的需求、在实际编码开始之前设计算法、通过编码创建程序、测试代码及其文档。
问:什么是软件过程或软件开发生命周期 (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 复杂度度量的基础是什么?
答: Halstead 复杂度度量取决于程序的实际实现,它将程序中使用的标记视为度量的基础。
问:请说出计算程序圈复杂度的公式?
答:圈复杂度使用图论公式:V(G) = e – n + 2
问:什么是函数式编程?
答: 函数式编程是一种编程语言,它使用数学函数的概念。它以数学函数的形式提供计算方法,无论程序状态如何都会产生结果。
问:区分验证和确认?
答: 验证检查产品是否按照用户要求制造,而确认检查是否遵循了正确的步骤来开发产品。
验证确认产品正确,确认确认产品是否以正确的方式制造。
问:什么是黑盒测试和白盒测试?
答: 黑盒测试检查在给出有效输入值时是否产生所需的输出。它不验证程序的实际实现。
白盒测试不仅在提供有效输入时检查所需和有效的输出,而且还检查代码是否正确实现。
标准 | 黑盒测试 | 白盒测试 |
---|---|---|
必须具备软件程序、设计和结构知识 | 否 | 是 |
必须具备软件实施知识 | 否 | 是 |
谁对软件进行此测试 | 软件测试员工 | 软件开发人员 |
测试人员的基准参考 | 需求规范 | 设计和结构细节 |
问:质量保证与质量控制?
答: 质量保证监控软件开发过程中是否遵循了正确的流程。
质量控制用于维护软件产品的质量。
问:软件维护有哪些类型?
答: 维护类型包括:纠正、适应、完善和预防。
- 纠正
删除用户发现的错误
- 适应
处理软件运行的硬件和软件环境的变化
- 完善维护
实施用户现有或新要求的变更
- 预防性维护
采取适当措施避免将来出现问题问题
问:什么是软件再工程?
答:软件再工程是在不改变软件功能的情况下升级软件所基于的技术的过程。这样做是为了让软件与最新技术保持一致。
问:什么是 CASE 工具?
答: CASE 代表计算机辅助软件工程。CASE 工具是一组自动化软件应用程序,用于支持、加速和简化 SDLC 活动。
下一步是什么?3>
如果您不能回答几个问题,这真的没什么大不了的,但重要的是,无论您回答什么,您都必须充满信心地回答。所以在面试时要充满信心。祝您未来一切顺利。干杯 :-)