【笔试面试】50+数据结构&算法问题
发布日期:2021-09-18 21:55:45 浏览次数:1 分类:技术文章

本文共 3864 字,大约阅读时间需要 12 分钟。

 

有许多计算机科学专业毕业生和程序员在Uber和Netflix等初创公司申请编程,编码和软件开发职位; ,和等大型组织; 像Infosys或Luxsoft这样的服务型公司,但他们中的许多人都不知道当你在这些公司申请工作时会遇到什么样的编程面试问题

在本文中,我将与不同经验水平的程序员分享一些常见的编程面试问题从刚从大学毕业的人到具有一到两年经验的程序员

编码访谈主要包括以及一些逻辑问题,例如,如何在不使用临时变量的情况下交换两个整数?

我认为将编码面试问题划分到不同的主题领域是有帮助的。我在访谈中经常看到的主题领域是数组,链表,字符串,二叉树,以及来自算法的问题(例如字符串算法,排序算法,如或,以及其他杂项),这就是什么你会在这篇文章中找到。

我们无法保证会向您询问这些编码或数据结构和算法问题,但它们会让您充分了解在实际编程工作面试中可能遇到的各种问题。

一旦你完成了这些问题,你应该有足够的信心参加任何电话或面对面访谈。

顺便说一下,如果你对基本的数据结构和算法没有足够的知识,或者你没有多年触及它们,那么尝试这些问题毫无意义。

在这种情况下,你应该采用像这样的好的课程 来刷新你的DS和算法技能。

 

50个算法和编码面试问题

没有任何进一步的麻烦,这里是我的编程工作面试中一些最常见的编码面试问题列表:

1.数组编码面试问题

数组是最基本的数据结构,它将元素存储在连续的内存位置。它也是采访者的宠儿主题之一,你会在任何听到很多关于数组的问题,例如反转数组,排序数组或搜索数组中的元素。

数组数据结构的主要优点是,如果您知道索引,它会提供快速的O(1)搜索,但是从数组中添加和删除元素的速度很慢,因为一旦创建了数组,就无法更改数组的大小。

要创建更短或更长的数组,您需要创建一个新数组并将所有元素从旧复制到新。

解决基于数组的问题的关键是熟悉以及基本编程构造函数,如循环,递归和基本运算符。

以下是一些针对您的练习的基于阵列的流行编码面试问题:

  1. 如何在给定的1到100的整数数组中找到缺失的数字?(
  2. 如何在给定的整数数组上找到重复的数字?(
  3. 如何在未排序的整数数组中找到最大和最小的数字?(
  4. 你如何找到所有对的整数数组,其总和等于给定的数字?(
  5. 如果数组包含多个重复项,如何在数组中找到重复的数字?(
  6. 如何从Java中的给定数组中删除重复项?(
  7. 如何使用quicksort算法对整数数组进行排序?(
  8. 如何从阵列中删除重复项?(
  9. 你如何在Java中反转数组?(
  10. 如何在不使用任何库的情况下从数组中删除重复项?(

这些问题不仅可以帮助您提高解决问题的能力,还可以提高您对阵列数据结构的了解。

如果您需要基于阵列的更高级的问题,那么您还可以看到训练,算法的训练营风格课程,专门用于面试准备,以获得谷歌,微软,苹果等技术巨头的工作,Facebook等

而且,如果您觉得10个问题不够而且需要更多练习,那么您还可以查看列表。

 

2.链接列表编程面试问题

甲是另一个常见的数据结构,它补充了阵列。与数组类似,它也是线性数据结构,并以线性方式存储元素。

但是,与数组不同,它不会将它们存储在连续的位置; 相反,它们分散在内存中的任何地方,它们使用节点相互连接。

链表只不过是一个节点列表,其中每个节点包含存储的值和下一个节点的地址。

由于这种结构,在链表中添加和删除元素很容易,因为您只需要更改链接而不是创建数组,但搜索很困难,并且通常需要花费O(n)时间来查找元素。单链表。

此提供了在阵列和链表数据结构之间的区别的详细信息。

它还有各种类似链表,可以让你在一个方向上移动(前进或后退); 一个双向链表,它允许你在两个方向(向前和向后)移动; 最后,圆形链表,形成一个圆圈。

为了解决基于链表的问题,良好的知识很重要,因为链表是递归数据结构

如果从链表中获取一个节点,则剩余的数据结构仍然是链表,因此,许多链表问题具有比迭代解决方案更简单的递归解决方案。

以下是一些最常见和最受欢迎的链接列表面试问题及其解决方案:

  1. 如何在一次通过中找到单链表的中间元素?(
  2. 如何检查给定的链表是否包含循环?你如何找到循环的起始节点?(
  3. 你如何扭转链表?(
  4. 如何在没有递归的情况下反转单链表?(
  5. 如何在未排序的链表中删除重复节点?(
  6. 你如何找到单链表的长度?(
  7. 如何在单链表中找到最后的第三个节点?(
  8. 如何使用Stack找到两个链表的总和?(

这些问题将帮助您提高解决问题的能力,并提高您对链表数据结构的了解。

如果您在解决这些链表编码问题时遇到问题,那么我建议您通过使用Java课程来刷新您的数据结构和算法技能。

您还可以查看列表,了解更多练习题。

 

3.字符串编码面试问题

与数组和链表数据结构一起,字符串是编程工作访谈的另一个热门话题。我从未参加过没有问过的编码面试。

字符串的一个好处是,如果你知道数组,你可以很容易地解决基于字符串的问题,因为字符串只是一个字符数组

因此,通过求解基于数组的编码问题所学到的所有技术也可用于解决字符串编程问题。

以下是编程求职面试中常见的字符串编码问题列表:

  1. 如何从字符串中打印重复的字符?(
  2. 你如何检查两个字符串是否是彼此的字谜?(
  3. 如何从字符串中打印第一个不重复的字符?(
  4. 如何使用递归来反转给定的字符串?(
  5. 如何检查字符串是否只包含数字?(
  6. 如何在字符串中找到重复的字符?(
  7. 你如何计算给定字符串中的元音和辅音?(
  8. 如何计算字符串中给定字符的出现次数?(
  9. 你如何找到字符串的所有排列?(
  10. 如何在不使用任何库方法的情况下反转给定句子中的单词?(
  11. 你如何检查两个字符串是否相互旋转?(
  12. 你如何检查给定的字符串是否是回文?(

这些问题有助于提高您对字符串作为数据结构的了解。如果您可以在没有任何帮助的情况下解决所有这些String问题,那么您的状态良好。

对于更高级的问题,我建议你解决在给出的问题,这是一本有最棘手的算法问题的书。

 

如果您需要更多练习,这里是另一个列表。

 

4.二叉树编码面试问题

到目前为止,我们只研究了线性数据结构,但现实世界中的所有信息都无法以线性方式表示,而这正是树数据结构所帮助的地方。

树数据结构是一种数据结构,允许您以分层方式存储数据。根据您存储数据的方式,有不同类型的树,例如,其中每个节点最多有两个子节点.a

除了它的近亲,它也是最流行的树数据结构之一。因此,您会发现很多基于它们的问题,例如如何遍历它们,计算节点,查找深度,以及检查它们是否平衡。

解决二叉树问题的关键是强大的理论知识,例如二叉树的大小或深度,叶子是什么,节点是什么,以及对流行的遍历算法的理解,例如前,后和有序遍历。

以下是软件工程师或开发人员访谈中流行的基于二叉树的编码问题列表:

  1. 如何实现二叉搜索树?(
  2. 如何在给定的二叉树中执行前序遍历?(
  3. 如何在没有递归的情况下预先遍历给定的二叉树?(
  4. 如何在给定的二叉树中执行inorder遍历?(
  5. 如何在没有递归的情况下使用inorder遍历打印给定二叉树的所有节点?(
  6. 你如何实现后序遍历算法?(
  7. 如何在没有递归的情况下遍历后序遍历中的二叉树?(
  8. 如何打印二叉搜索树的所有叶子?(
  9. 如何计算给定二叉树中的多个叶节点?(
  10. 如何在给定数组中执行二进制搜索?(

如果您觉得您对二叉树编码的理解不充分而且您无法自己解决这些问题,我建议您回过头来选择一个好的数据结构和算法课程,如。

如果您需要更多建议,请参阅我的有用和列表。

 

5.杂项编码面试问题

除了基于数据结构的问题之外,大多数编程工作访谈还会询问算法,设计,位操作和基于逻辑的一般问题,我将在本节中对其进行描述。

练习这些概念很重要,因为有时在实际面试中解决这些概念很棘手。之前练习它们不仅让你熟悉它们,而且还让你更有信心向面试官解释解决方案。

  1. 如何实现冒泡排序算法?(
  2. 如何实现迭代快速排序算法?(
  3. 你如何实现插入排序算法?(
  4. 如何实现合并排序算法?(
  5. 如何实现桶排序算法?(
  6. 你如何实现计数排序算法?(
  7. 如何实现基数排序算法?(
  8. 如何在不使用第三个变量的情况下交换两个数字?(
  9. 如何检查两个矩形是否相互重叠?(
  10. 你如何设计自动售货机?(

如果你需要更多这样的编码问题,你可以从像这样的书籍中获取帮助,由 提供189 +编程问题和解决方案。一本好书,可以在短时间内编写求职面试。

顺便说一下,你在实践中解决的问题越多,你的准备就越好。因此,如果您认为50还不够而且您需要更多,那么请查看这些额外的 以便进行以及这些和以便进行更全面的准备。

 

现在,您已准备好进行编码面试

这些是数据结构和算法之外的一些最常见的问题,可以帮助您在面试中做得很好。

我也在我的上分享了很多这些问题,所以如果你真的很感兴趣,你可以随时去那里搜索它们。

这些常见的编码,数据结构和算法问题是您在任何级别的编程工作中成功访问任何公司(大或小)时需要了解的问题

如果您正在寻找2018年的编程或软件开发工作,您可以使用此编码问题列表开始准备。

此列表提供了准备的好主题,也有助于评估您的准备工作,以找出您的优势和劣势领域。

熟悉数据结构和算法对于成功编写访谈非常重要,而且您应该将注意力集中在大部分时间。

 

结论

谢谢,你完成了文章的最后...祝你的编程面试好运!这当然不容易,但通过遵循这个路线图和指南,您离成为近了一步。

 

原文:

转载地址:https://blog.csdn.net/ChenVast/article/details/82977682 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【机器学习】使用Python中的局部敏感哈希(LSH)构建推荐引擎
下一篇:【Pandas】数据合并和连接

发表评论

最新留言

很好
[***.229.124.182]2024年04月05日 09时23分46秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

VScode 折叠函数快捷键 合上函数 2019-04-27
智能家居传感器:BME680--树莓派3B+ 搭配BME680的数据读取温湿度和气压。树莓派IIC BME680算法库 (未完成版本) 2019-04-27
domoticz智能家居系统 MQTT 异常以及解决方法 code=14 2019-04-27
智能家居传感器:BME680--树莓派3B+ 搭配BME680的数据读取温湿度和气压。树莓派IIC BME680算法库完整版 2019-04-27
lua语言笔记--注册dll内的函数到全局,lua 全局函数的注册 2019-04-27
工作笔记::c++ 运行命令行脚本 启动lua cmd lua 顺序执行多个文件的方法 c++ 开启一个命令行的方法 lua 启动多个文件 2019-04-27
工作笔记::lua 打印 一个table的方法 2019-04-27
工作笔记::VSCode使用笔记--VSCode 设置自定义快捷键 设置自定义运行脚本 2019-04-27
笔记--记录一次在libmodbus通讯过程socket的connect()遇到的Operation now in progress 的bug 2019-04-27
modbus调试工具开发(1)--windows下编译libmodbus库文件 2019-04-27
工作笔记-- 嵌入式linux设备的端口回收设置 2019-04-27
工作笔记--batch脚本语言的使用随笔--嵌入式linux的一种开发方法的介绍 2019-04-27
工作笔记 -- AltiumDesigner20 设置铺铜改变之后自动重新铺铜方法 2019-04-27
ethcat学习笔记:ethcat 进行FOE升级报错误代码0x8004的原因、分析以及解决方法 2019-04-27
嵌入式linux 学习笔记--如何使用udhcpc获取动态IP 2019-04-27
工作笔记--CMake使用笔记 配合libmodbus 分别编译出x86的服务器版本和arm的嵌入式linux版本 2019-04-27
嵌入式linux学习笔记--2021-01-16-- 字符设备驱动开发笔记 2019-04-27
相信自己的判断。 2019-04-27
Spring IOC容器生命周期阶段总结 2019-04-27
CAS算法实现数据更新的简单理解和ABA问题 2019-04-27