50 个软件工程面试问题及答案

以下是软件工程面试问题和答案,可以帮助新手和有经验的应聘者获得理想的工作。

 

面向应届毕业生的软件开发人员面试问题和答案

1)软件的重要类别有哪些?

  • 系统软件
  • 应用软件
  • 嵌入式软件
  • Web应用程序
  • 人工智能软件
  • 科学软件。

👉 免费 PDF 下载:软件工程面试问题与答案


2) 计算机程序和计算机软件的主要区别是什么?

计算机程序是一段编程代码。它执行明确定义的任务。另一方面,软件包括编程代码、文档和用户指南。


3)什么是软件再工程?

它是软件开发的一个过程,旨在提高软件系统的可维护性。

软件工程问题


4)简要描述软件开发过程:

软件开发一个生命周期由以下几个阶段组成:

  • 需求分析
  • 规格
  • 软件架构
  • 技术实施
  • 测试与验证
  • 文件记录
  • 培训与支持
  • 维护

5) 有哪些 SDLC 模型?

瀑布模型、螺旋模型、大袋模型、迭代模型和 V 模型是一些著名的 SDLC 模型.


6)什么是验证和确认?

验证:

验证是一个术语,指的是确保软件实现特定功能的一系列活动。

验证:

它是指确保软件根据客户的需求而构建的一系列活动。


7)在软件开发过程中,调试的意义是什么?

调试是消除错误的过程。它是成功测试的重要组成部分。


8)如何确保您的代码既安全又快速?

在软件开发中,开发安全性永远是第一位的。所以如果程序执行缓慢,我会尝试找出原因,并找出其时间复杂度。


9)列举两种用于守卫的工具。ping trac软件需求数量是多少?

有很多方法可以保持 track 个要求。

常用的两个是:

  • 制作需求规范文档来列出所有需求。
  • 创建一个 Excel 表,列出需求、类型、依赖性、优先级等。

10) 存根 (stubs) 和模拟 (mock) 之间的主要区别是什么?

存根是接口的最小实现,通常返回硬编码数据,而模拟通常根据预期验证输出。这些预期是在测试中设定的。


11)你喜欢用什么语言编写编程算法?

在选择编程语言时,每个开发人员都有自己的看法。不过,人们应该选择高级语言,因为它们是动态的。比如 C 和 C++ 语言。


12)什么是计算机软件?

计算机软件是一个包含软件程序、其文档以及如何使用该软件的用户指南的包。


13) 您认为哪种 SDLC 模型最好?

没有这样的排名,因为 SDLC 模型是根据开发过程的需要而采用的。它可能因软件而异。


14) 谁是软件项目经理?他的角色是什么?

软件项目经理是负责管理软件开发项目的人员。

项目经理负责项目规划、进度监控和沟通。他或她还负责管理风险和资源,以便在时间、成本和质量限制内完成项目。


15)软件范围是什么意思?

软件范围是一个明确界定的边界。它包括开发和交付软件产品的所有活动。

软件范围定义了作为软件的一部分交付的所有功能和工件。范围还确定了产品将做什么?什么不属于项目的一部分?什么是项目估算?

此过程有助于评估软件产品的各个方面。此评估可以咨询专家或使用预定义的公式来决定。


16)如何查找软件产品的大小?

软件产品的大小可以通过以下两种方法计算

  • 计算已交付代码的行数
  • 计算已交付的功能点

17)什么是功能点?

功能点是软件产品提供的功能。它被视为软件规模最重要的衡量标准。


18)有哪些软件项目估算技术可用?

最广泛使用的估算技术是:

  • 分解技术
  • 经验技术

19)什么是软件配置管理?

软件配置管理是一个过程 trac控制软件中发生的各种变化。

变更控制是一种功能,可确保对软件系统所做的所有更改都是一致的,并且是根据组织规章制度创建的。


20)如何衡量项目执行情况?

我们可以使用活动监控、状态报告和里程碑检查表来衡量项目执行情况。


21)告诉我一些项目管理工具。

根据软件项目的需要,可以使用多种类型的管理工具。其中一些是 Pert 图表、甘特图、资源直方图、状态报告等。


22)软件要求是什么?

软件需求是对拟议软件系统的功能描述。它被认为是目标系统及其功能和特性的描述。


23)什么是可行性研究?

这是一项衡量软件项目开发对组织有多实用和多有益的措施。软件分析员进行研究以了解项目的经济、技术和运营可行性。

  1. 经济: 它包括培训费用、额外费用和工具费用以及项目成本和收益的总体估算。
  2. 技术: 它评估技术方面。是否有可能开发此系统?评估软件将在其上运行的机器和操作系统的适用性、软件开发知识以及可用于此项目的工具。
  3. Opera国家: 在这里,分析师需要评估组织是否能够顺利适应根据项目需求所做的更改。该问题是否值得以预计的成本解决?

在研究完所有这些之后,创建最终的可行性报告。


24)什么是功能性需求和非功能性需求?

功能需求是用户期望软件产品所具有的功能特性。

非功能性需求与用户界面的安全性、性能、外观和感觉有关。


25)什么是软件度量?

软件度量为软件过程的各个方面提供了度量,这些度量分为:

  1. 需求指标:长度要求、完整性
  2. 产品指标:代码行数、面向对象指标、设计和测试指标。

26)什么是模块化?

模块化是一种将软件系统划分为多个独立模块的技术。这些模块有望独立执行任务。


27)什么是凝聚力?

凝聚力是定义模块元素之间内部可靠性的一种衡量标准。


28) 提到一些软件分析和设计工具?

一些最重要的软件分析和设计工具是:

  • 数据流图
  • 结构化图表
  • 结构化英语
  • 数据字典
  • 层次化输入过程输出图
  • 实体关系图和决策表

29)0 级数据流图是什么意思?

最高腹肌trac信息层被称为数据流图的第0层,也称为上下文层数据流图。它将整个信息系统描绘成一个图表。


30)结构化英语和伪英语的主要区别是什么? Code?

结构化英语是地道的英语。它用于编写程序模块的结构。它使用编程语言关键字。另一方面,伪…… Code 更像是没有特定语言语法规范的编程语言。


软件工程面试问答

31)什么是结构化设计?

结构化设计是问题的概念化。它也被称为解决方案设计,它基于“分而治之”的策略。


32)什么是函数式编程?

它是一种使用数学函数概念的编程方法。它以数学函数的形式提供计算方法,并且无论程序状态如何都能产生结果。


33)质量保证与质量控制有什么区别?

质量保证检查开发过程中是否遵循了正确的流程ping 软件质量控制负责维护软件产品的质量。


34)什么是 CASE 工具?

CASE 代表计算机辅助 软件工程. 它们是一组自动化的软件应用程序,用于支持、增强和加强 SDLC 活动。


35)哪种流程模型可以在软件出现问题之前消除缺陷?

洁净室软件工程方法在软件出现问题之前消除缺陷。


36)解决这个问题

在一间黑屋子里,抽屉里放着 20 双不同款式的袜子。你至少需要拿几双袜子才能确保拿到一双匹配的袜子?”

如果你拿起三只袜子,即使几率为 50%,它们也可能是同一类型的。现实中几率从来都不是均等的。因此,唯一能“确保你有一双匹配的袜子”的方法是拿起至少 11 个电击。


37) 如何确保你编写的代码能够处理各种错误情况?

我可以编写测试来定义预期的错误情况。


38)解释线程和进程之间的区别?

进程是计算机程序的实例。在单个程序中可能有一个或多个线程。


39)告诉我 EXE 和 DLL 之间的区别?

exe 是可执行程序,而 DLL 是可由程序动态加载和执行的文件。它是程序的外部代码存储库。由于两者都是不同的程序,因此可以重复使用相同的 DLL,而不必将该代码放在各自的文件中。它还可以减少所需的存储空间。


40)什么是强ping 和弱ping哪个更好?为什么?

强ping 在编译时检查变量类型。另一方面,弱类型ping 在运行时检查系统类型。其中,强类型ping 始终优先选择这种方法,因为它能最大限度地减少错误。


41) 描述面向接口、面向对象和面向方面编程之间的区别。

  • 接口编程是trac基于t。
  • 面向对象是一种编写具有单一目的的粒状对象的方法。
  • 面向方面编程是将代码以这样的方式分离:各种对象承担主要任务,而独立对象承担辅助任务。

42)为什么使用 catch(异常)总是一个坏主意?

这是一个坏主意,因为:

  • 由于没有定义变量,因此无法读取异常
  • 当您知道异常类型时,最好使用异常。

43)通过 HTTP 标头传递什么类型的数据?

通过 HTTP 标头传递的脚本和元数据。


44)您如何确定需求的优先顺序?

首先,你需要通过评估数据结构来设计一个系统。然后你应该继续研究支持该系统所需的代码结构。


45) 请说出面向对象设计和基于组件的设计之间的区别?

面向对象的设计可以很容易地在某种程度上封装在基于组件的设计中。


46)何时使用多态性?

当需要在继承类时重写某些功能时,就会用到多态。它涉及共享类和共享连接。tracTS。


47)堆栈和队列有什么区别?

  • 队列总是先进先出
  • 堆栈总是后进先出

48) 测试代码质量什么是必需的?

在我看来,单元测试框架对于测试代码质量至关重要。


49) 您认为软件的维护费用昂贵吗?

据我所知,如果我们使用适当的开发流程,软件维护永远不会昂贵。


50) 请告诉我标签和分支之间的区别?

标签用于版本控制发布,是执行此类操作的临时保存位置。但是,当这些更改合并到主干时,分支会被删除。


51) 受保护的类级变量在哪里可用?

受保护的类级变量可供从基类派生的任何子类使用。


52) 单个 try 语句可以执行多个 catch 块吗?

是的。单个 try 语句可以执行多个 catch 块。


53)何时需要将类声明为绝对值类tract?

我们应该将一个类声明为 abstrac在以下情况下:

  1. 当类继承自绝对值类时tracT级,但并非所有腹肌tract 方法已被重写。
  2. 当类中至少有一个方法被声明为绝对值时,就会出现这种情况。tract.

54)开发一种算法,输出您当前的位置以及该地区 ATM 位置列表。为您找到距离您最近的 K 台 ATM。

创建一个方法 getDistance(a, b),计算 a 和 b 之间的距离。

代码:

import java.util.HashMap;

import java.util.Map;

import java.util.PriorityQueue;

public class PrioRQueueExample {

public static void main(String[] args){

PriorityQueue<Double> pq = new PriorityQueue<Double>((x,y)-> {Double z = y-x;return z.intValue(); });

PrioRQueueExample pqe = new PrioRQueueExample();

//Number of ATMs to return i.e. K

int num_ATMs = 3;

double curr_loc = 0.00;

Map<String,Double> nallATMLocs = new HashMap<String,Double>();

//Map of ATM names and their distance co-ordinates

nallATMLocs.put("atm1",45.0);

nallATMLocs.put("atm2",78.0);

nallATMLocs.put("atm3",54.0);

nallATMLocs.put("atm4",64.0);

nallATMLocs.put("atm5",35.0);

nallATMLocs.put("atm6",42.0);

nallATMLocs.put("atm7",57.0);

nallATMLocs.put("atm7",1.00);

nallATMLocs.forEach((atm,dist) ->{if(pq.size() < num_ATMs){

pq.add(pqe.getLocation(curr_loc,dist));}

else{

if(        pq.peek() > pqe.getLocation(curr_loc,dist)){

pq.poll();

pq.add(pqe.getLocation(curr_loc,dist));

}

}

});

pq.forEach(atmLoc -> System.out.println(atmLoc));

}

private double getLocation(double curr,double atm){

return atm - curr;

}

}

这些面试问题也会对你的口试有帮助

总结一下这篇文章: