数据结构面试问题和答案 [针对应届生和有经验者]
已发表: 2020-11-23写下数据结构和算法面试问题的目的是让你熟悉面试中关于数据结构和算法主题的问题的性质。 好的面试官不会提出预先确定的问题。 通常,问题从主题的基本概念开始,并根据您的回答和进一步讨论继续进行。 如果您想获得专业知识并获得梦想的数据科学工作,请查看我们的数据科学认证。
目录
数据结构面试问答
1.什么是数据结构?
您可以将数据结构视为一种系统地、结构化地定义、存储和检索数据的方法。 一个数据结构可以包含不同种类的数据项。
2. 有哪些可用的数据结构?
数据结构的可用性可能因编程语言而异。 一些常用的数据结构是树、图、队列、列表、数组和堆栈。
另请阅读:数据结构中的排序
3.算法是什么意思?
您可以将算法视为定义一组指令的逐步过程,这些指令以固定顺序执行会产生所需的输出。
4、算法分析需要什么?
可以通过多种方式解决给定的问题。 因此,可以推导出几种解决方案算法。 分析算法的目的是找到并实现最合适的算法。
5.算法分析的标准
算法的分析基于两个因素——空间和时间。 它意味着算法部分所需的执行时间和额外空间。
6.算法的渐近分析是什么意思?
对于任何算法,都存在基于数学绑定的三个不同级别的执行时间:
- 最佳情况的表示由符号 Ω(n) 完成
- 最坏情况的表示由符号 Ο(n) 完成
- 平均情况的表示由符号 Θ(n) 完成
7. 线性数据结构是什么意思?
当数据项按顺序排列时,称为线性数据结构。 数据项按顺序存储和访问。 线性数据结构的典型示例是列表和数组。
8. 对数据结构执行的常见操作有哪些?
以下是可以对数据结构执行的操作:
插入– 添加数据项
删除– 数据项删除
遍历——访问和打印数据项
搜索- 查找数据项
排序- 按预定义顺序排列的数据项
必读:数据结构项目的想法和主题
9. 开发算法有哪些不同的方法?
开发算法的常用方法有以下三种:
贪婪方法:选择下一个最佳选项来寻找解决方案。
分而治之:将问题划分为最小可能的子问题,每个子问题独立解决。
动态规划:一个问题被分成最小的子问题,它们一起解决。 C
9.贪心算法的例子:
- · Djikstra、Kruskal、Prim的最小生成树算法
- · 图表 – 地图着色
- 顶点覆盖问题
- · 作业调度问题
- · 背包问题
- · 旅行推销员的问题
10.分治算法示例
- Stassen 矩阵乘法
- 快速排序
- 合并排序
- 最接近的对
- 二进制搜索
11.动态规划算法示例:
- 河内塔
- Dijkstra 的最短路径
- 项目调度
- 背包问题
- 斐波那契数列
- Floyd-Marshall 的所有对最短路径
12. 什么是链表?

您可以将链表视为与链接(即引用或指针)互连的数据项的列表。 现代高级语言不允许直接访问内存位置,也不支持它们。 如果它们可用,则采用内置函数的形式。
13. 什么是堆栈?
它是一种抽象数据类型,用于以后进先出格式存储和检索值。
14. 为什么要使用栈?
Stacks 使用 LIFO 方法添加和检索仅消耗 O(n) 时间的数据项。 如果您需要以相反的顺序访问数据项,那么您可以使用堆栈。 堆栈更常用于表达式解析、递归函数调用和图的深度优先遍历。
您可以在堆栈上执行的常见操作:
push():添加一个项目到栈顶
pop():从栈顶移除一个项目
peek():显示顶部项目的值而不删除它
is empty(): 检查是否有空栈
is full():检查你是否有一个完整的堆栈
15. 数据结构中的队列是什么意思?
和栈一样,队列也是一种抽象的数据结构。 但是,队列在两端都是开放的。 意思是一端用于插入数据(入队),另一端用于取出项目(出队)。 队列遵循先进先出的方法,即首先存储的数据项将首先被访问。
16.队列有什么用?
由于队列遵循先进先出方法,该数据结构可用于按照数据项到达的确切顺序处理数据项。 队列在操作系统中广泛用于不同的进程。 图的广度优先遍历和优先级队列是队列的一些示例。
17 、队列中可以执行的操作:
enqueue():将项目添加到队列的后端
dequeue():从队列的前端移除一个项目
peek():显示最前面的item的值而不去掉它
is empty():检查栈是否为空
is full():检查堆栈是否已满
18. 什么是二分查找?
二进制搜索是一种适用于排序列表或数组的搜索技术。 搜索选择可以将整个列表分成两部分的中间单元。 首先,将中间单元与搜索项进行比较。
如果匹配,则算法成功终止。 否则,它会尝试确定搜索项是小于还是大于中间单元。 如果搜索项很小,则中间成为数组或列表的最后一项。 如果搜索项很大,则中间项成为列表的顶部项。
最后的想法
我们希望我们的数据结构面试问答指南对您有所帮助。 我们将定期更新指南,让您随时了解最新情况。
如果您想了解数据科学,请查看 IIIT-B 和 upGrad 的数据科学执行 PG 计划,该计划是为在职专业人士创建的,提供 10 多个案例研究和项目、实用的实践研讨会、行业专家的指导、1与行业导师一对一,400 多个小时的学习和顶级公司的工作协助。
抽象数据结构是什么意思?
抽象数据结构或抽象数据类型 (ADT) 是一种数据结构的数学模型,它显示存储的数据类型、数据支持的操作以及操作参数的类型。 在 ADT 的帮助下,用户可以了解每个操作的作用。 但是,它无法帮助找到操作的工作原理。 可以使用不同的数据结构来执行抽象数据结构。 为程序指定 ADT 是确定在程序中采用何种数据结构的一个极好的初始步骤。
有哪些不同类型的数据结构?
数据结构分为两类:线性数据结构和非线性数据结构。 线性数据结构的元素一个接一个地依次放置。 它们很容易执行,因为这些片段是按特定顺序组织的。 然而,随着程序复杂性的增加,线性数据结构可能由于操作困难而不是理想的解决方案。 非线性数据结构没有典型顺序的元素。 相反,它们以分层顺序组织,一个元素与一个或多个其他元素相连。
数据结构的哪些特征将在未来保持相关性?
由于数据结构是计算机科学的核心,因此数据结构的几乎所有特性在未来都可能保持相关性。 从基本数组到二叉搜索树等,它们在开发本质上在日常生活中根深蒂固的算法方面发挥着关键作用。 由于数据结构,当今的技术世界是快速、高效和准确的。 用于修改数据结构的策略将变得更加难以区分。