当前位置: 首页 > 科技观察

Java和Python的算法和数据结构面试问题_0

时间:2023-03-14 21:17:16 科技观察

有许多计算机科学专业的毕业生和程序员申请Uber和Netflix等公司的编程、编码和软件开发职位。亚马逊、微软和谷歌等大型组织;Infosys或Luxsoft等基于服务的公司。然而,当你申请这些公司的工作时,他们中的许多人都不知道要问什么样的编程面试问题。在这篇文章中,我将分享一些常见的算法和数据结构面试问题,来自不同经验水平的程序员,从刚大学毕业的人到有一到两年经验的人。编码面试主要包括基于数据结构和算法的问题以及一些逻辑问题,例如“如何在不使用临时变量的情况下交换两个整数?”我认为将编码面试问题划分为不同的主题领域会很有帮助。我在面试中经常看到的主题领域是数组、链表、字符串、二叉树和算法问题(例如字符串算法、排序算法,如快速排序或基数排序,以及其他杂项),这是您将在本文中找到的内容。我们不能保证你会被问到这些编码或数据结构和算法问题,但它们会让你很好地了解你在实际编程工作面试中可能遇到的问题种类。一旦你解决了这些问题,你应该有足够的信心去参加任何面试。顺便说一句,如果你对基本的数据结构和算法没有足够的了解,或者你多年没有接触过它们,那么尝试这些问题就没有意义。在这种情况下,您应该学习优秀的课程作者RobertHorvick,例如算法和数据结构第1部分和第2部分,以更新您的DS和算法技能。前50个算法和编程面试问题不用多说,这里是我列出的一些编程工作面试中最常见的编码面试问题。我也分享了Java中大部分问题的解决方案,但是如果你是Python开发人员,你可以查看Python中的逻辑和实现。您还可以通过google查找大多数问题的答案,因为它们很常见。1.数组编码面试题数组是最基本的数据结构,它将元素存储在连续的内存位置。这也是面试官之间的一个主要话题,你会在任何编码面试中听到很多关于数组的问题,例如反转数组、排序数组或在数组中搜索元素。数组数据结构的主要优点是,如果您知道索引,它可以提供快速的O(1)搜索,但是从数组中添加和删除元素很慢,因为一旦创建数组就无法更改其大小。要创建更短或更长的数组,您需要创建一个新数组并将所有元素从旧数组复制到新数组。解决基于数组的问题的关键是熟悉数组数据结构以及基本编程结构,例如循环、递归和基本运算符。以下是一些流行的基于数组的编码面试问题供您练习:如何在给定的1到100整数数组中查找缺失的数字?(解决方案)如何在给定的整数数组中找到重复的数字?(解)如何在未排序的整数数组中找到最大和最小的数?(解)你如何找到所有对的整数数组,其总和等于给定的数字?(解决)如果数组包含多个重复项,如何在数组中查找重复数字?(解决方案)如何从Java中的给定数组中删除重复项?(解决)如何使用快速排序算法对整数数组进行排序?(Solution)Howtosortaarrayfromarray(Solution)如何在Java中反转数组?(解决方案)如何在不使用任何库的情况下从数组中删除重复项?(解题)这些问题不仅会帮助你改进你的解题方法,也会提高你对数组数据结构的认识。如果您需要更高级的基于数组的问题,那么您还可以查看CodingInterviewBootcamp:Algorithms+DataStructures,这是一门关于算法的训练营风格课程,专门为谷歌、微软、苹果等科技巨头准备面试。jobs、Facebook、etc.还有,如果觉得10道题不够,还需要多加练习,也可以看看30道数组题列表。2.链表编程面试题链表是补充数组的另一种常见数据结构。与数组类似,它也是一种线性数据结构,以线性方式存储元素。但是,与数组不同的是,它不会将它们存储在连续的位置;相反,它们分散在内存中并使用节点相互连接。链表是一个节点列表,其中每个节点包含一个存储值和下一个节点的地址。由于这种结构,在链表中添加和删除元素很容易,因为您只需要更改链接而不是创建数组,但搜索很困难,通常需要O(n)时间才能找到一个元素。单一清单。本文详细介绍了数组和链表数据结构之间的区别。它还有各种类似的链表,可以让你向一个方向(向前或向后)移动;双向链表,允许您在两个方向(向前和向后)移动;***,循环链表,形成一个圆圈。为了解决基于链表的问题,良好的递归知识很重要,因为链表是一种递归数据结构。如果从链表中取出一个节点,剩下的数据结构仍然是一个链表,所以很多链表问题都有递归求解,比迭代求解更简单。以下是一些最常见和最受欢迎的链表面试问题及其解决方案:如何一次找到单向链表的中间元素?(解)如何判断给定的链表是否包含环?你如何找到一个周期的开始?启动节点?(解决方案)如何反转链表?(解决方案)如何在不递归的情况下反转单向链表?(解决)如何去除未排序链表中的重复节点?(解)怎么求一个单向链表的长度是多少?(解决)如何在单向链表中找到***第三个节点?(解答)如何用Stack求两个链表的和?(解答)这些问题将帮助你提高解题能力,提高你对链表数据结构的认识。如果您在解决这些链表编码问题时遇到困难,那么我建议您通过数据结构和算法:深入Java课程来刷新您的数据结构和算法技能。更多练习题也可以查看30链表面试题列表。3.字符串编码面试问题与数组和链表数据结构一样,字符串是编程求职面试中的另一个热门话题。我从来没有参加过没有问过基于字符串的问题的编码面试。关于字符串的一个好处是,如果您了解数组,就可以轻松解决基于字符串的问题,因为字符串只是一个字符数组。因此,通过解决基于数组的编码问题学到的所有技术也可以用于解决字符串编程问题。以下是编程工作面试中常见的字符串编码问题列表:如何打印字符串中的重复字符?(解决方案)如何检查两个字符串是否是彼此的变位词?(解决方案)如何打印字符串中的字符?打印第一个唯一字符?(解决方案)如何使用递归反转给定的字符串?(解决)如何判断一个字符串是否只包含数字?(已解决)如何查找字符串中重复的字符?(解答)如何计算给定字符串中的元音和辅音?(解决方案)如何计算给定字符在字符串中的出现次数?(解)你如何找到一个字符串的所有排列?(解决方案)如何在不使用任何库方法的情况下反转给定句子中的单词?(解)如何检查两个字符串是否相对旋转?(解)如何检查给定的字符串是否为回文?(解决方案)这些问题有助于提高您对字符串作为数据结构的了解。如果您可以在没有任何帮助的情况下解决所有这些字符串问题,那么您的状态就很好。棘手的算法问题的书。如果您需要更多练习,这里有另一个包含20个字符串编码问题的列表。4.二叉树编码面试题到目前为止我们只看了线性数据结构,但现实世界中的所有信息都不能用线性方式表示,这就是树数据结构的帮助。树数据结构是一种允许您以分层方式存储数据的数据结构。根据您存储数据的方式,有不同类型的树,例如二叉树,其中每个节点最多有两个子节点。与其近亲二叉搜索树一起,它也是最好的树数据结构之一。所以你会发现很多基于它们的问题,比如如何遍历它们、计算节点、查找深度以及检查它们是否平衡。解决二叉树问题的一个关键点是对理论的深刻理解,例如二叉树的大小或深度,叶子是什么,节点是什么,以及对流行的遍历算法的理解,例如pre-,post-,和中序遍历。以下是来自软件工程师或开发人员访谈的基于二叉树的流行编码问题列表:如何实现二叉搜索树?(解决方案)如何在给定的二叉树中执行前序遍历?(解决方案)通过预遍历给定的二叉树的情况?(解)如何对给定的二叉树进行中序遍历?(解决)如何使用中序遍历而不递归打印给定二叉树的所有节点?(SolutionSolution)如何实现后序遍历算法?(解)后序遍历二叉树不递归怎么遍历?(解决方案)如何打印二叉搜索树的所有叶子?(解)你如何计算给定二叉树中的多个叶节点?(解决方案)如何在给定数组中执行二分查找?(解决方案)如果你觉得自己对二叉树编码的理解不够,自己解决不了这些问题,建议你回去选一门好的数据结构和算法课程,比如从0到1:Java中的数据结构和算法。如果您需要更多建议,请参阅我的有用数据结构算法书籍和课程列表。5.杂项编码面试问题除了基于数据结构的问题外,大多数编程工作面试还会问基于算法、设计、位操作和一般逻辑的问题,我将在本节中介绍这些问题。练习这些概念很重要,因为有时在实际面试中很难解决这些概念。事先练习一下,不仅可以让你熟悉它们,还可以让你更有信心向面试官解释解决方案。你如何实现冒泡排序算法?(解)你如何实现迭代快速排序算法?(解答)插入排序算法是如何实现的?(解)你如何实现归并排序算法?(解)你是如何实现桶排序算法的?(solution)Solution)你如何实现一个计数排序算法?(解)如何实现基数排序算法?(解决方案)如何在不使用第三个变量的情况下交换两个数字?(解决)如何判断两个矩形是否重叠?(解决方案)你如何设计自动售货机?(解决方案)如果您需要更多这样的编码问题,可以从GayleLaakmannMcDowell的CrackingTheCodeInterview189+编程问题和解决方案等书籍中寻求帮助。一本可以立即写求职面试的好书。顺便说一句,你在实践中解决的问题越多,你的准备就越好。因此,如果您认为50个还不够,还需要更多,请查看这些额外的50个电话面试编程问题以及这些书籍和课程,以进行更全面的准备。现在您已准备好进行编码面试这些是一些最常见的问题,可以帮助您在面试中取得好成绩。我也在我的博客上分享了很多这样的问题,所以如果你真的感兴趣,你可以随时去那里搜索它们。这些常见的编码、数据结构和算法问题是您在任何公司(无论大小)的任何级别的编程工作中取得成功所需要知道的。如果您正在寻找2018年的编程或软件开发工作,您可以使用此编码问题列表开始准备。此列表提供了很好的准备主题,也有助于评估您的准备情况以确定您的强项和弱项。熟悉数据结构和算法对于成功撰写面试非常重要,这也是你大部分时间应该关注的地方。进一步学习:数据结构和算法:深入挖掘Java10本书,为技术规划/编码工作面试做准备每个程序员都应该阅读的10种算法书籍Java开发人员从0到1的前5大数据结构和算法书籍:DataStructuresandAlgorithmsinJava数据结构与算法分析——求职面试程序员100+数据结构与算法题20道程序员系统设计面试题