程序员的前20个搜索和排序算法面试问题

大家好,如果您正在准备编程工作面试或正在寻找新工作,那么您知道这不是一个容易的过程。 在您职业的任何阶段,您都必须幸运地接到电话并进行第一轮面试,但是在初学者方面,当您寻找第一份工作时就更加困难。 这就是为什么您不能只是轻描淡写。 您必须准备抓住这个机会,为此,您必须知道在面试中您期望得到的机会。

问什么,应该准备哪些主题,等等? 我已经在博客上写了很多关于您可以在此博客中找到有用文章的文章,但回顾一下,让我告诉您,除了数据结构问题 , 系统设计问题以及特定于编程语言的问题(如Java或Scala)之外 ,大多数编程工作面试也询问基于算法的问题。

这些基于常见的搜索和排序算法,例如
二进制搜索 , 图算法等。 练习这些基于算法的问题很重要,因为尽管它们看起来很明显且容易,但有时在实际面试中很难解决,特别是如果您从未亲自编码过。

之前已经练习过它们,不仅使您熟悉它们,还使您更有信心向面试官解释解决方案,这在选择中起着非常重要的作用。 它还使您为任何扭曲的问题和替代性问题做好了准备,例如采访者经常想让您使用递归或迭代来解决特定的编码问题。

有时,如果使用的数据结构类似于我在String上查找重复字符所使用的数据结构,则它们会要求您解决该问题而不使用Set数据结构。 那只是一些常见的例子,这就是为什么实践很重要的原因。

来自编码面试的20多种搜索和排序算法问题

无论如何,这是一些来自访谈的常见搜索和排序算法问题:

1.您可以实现二进制搜索算法吗? ( 解决方案 )

二进制搜索很容易,它是一种分而治之的算法,该算法将问题分为子问题,并加以解决。 这是一种搜索算法,因此可用于查找整数数组中的数字或目录中的项目。

实现二进制搜索算法的最简单方法是使用递归,这是解决方案链接所包含的内容,但是在查看解决方案之前,您应该自己尝试一下。

值得一提的是输入必须排序,我的意思是只能在排序数组中实现二进制搜索。

2.编写程序以实现线性搜索算法? ( 解决方案 )

它甚至比二进制搜索更容易,您所需要做的就是使用for循环或递归方法遍历数组中的所有元素,然后将每个元素与要搜索的元素进行比较。 当元素匹配时,根据您的要求返回index或true / false。

例如,如果您正在编写一个contains()方法,则可以返回true或false来指示数组中是否存在元素。 由于需要扫描整个数组以找到元素,因此该算法的时间复杂度为O(n)。

3.是否可以实现没有递归的二进制搜索算法? ( 解决方案 )

您可能知道,可以通过使用循环或有时使用堆栈来将递归算法替换为迭代算法。 对于二进制搜索,您也可以执行此操作,只需将数组划分并比较中间元素,直到找到目标元素或数组中没有其他元素为止。 如果目标元素大于中间元素,则必须向右移动,否则向左移动。

排序算法

4.编写代码以在二叉树中实现级别顺序搜索? (解)

在级别顺序搜索中,您首先要访问同级节点,而不是进入下一个级别。 您可以使用Queue在二叉树中实现级别顺序搜索。如果您想了解更多信息,可以在freeCodeCamp上查看所有这些免费数据结构和算法课程 。

5.实现冒泡排序算法? ( 解决方案 )

这不是您学习的第一个排序算法吗? 好吧,我做到了,这就是为什么我记得气泡排序是关于将数组中的每个数字与其他数字进行比较,以便在每次传递最大或最小元素之后,气泡一直上升到顶部。 我的意思是发现它已按排序顺序放置。 这是基本算法之一,其时间复杂度为O(n ^ 2),这使得它无法用于大量数字,但对于少量数字却表现出色。

6.稳定和不稳定排序算法之间的区别? ( 回答 )

这是一个棘手的概念,直到很久以前我才知道。 我还没有遇到过这种情况的任何实际用例,但只是从访谈的角度知道这个概念还可以。 在稳定的排序算法中,即使排序后,同一元素的顺序也保持不变,但是在不稳定的排序算法中,这会发生变化。 一个很好的例子是快速排序和合并排序,其中前者是不稳定的,而后者是稳定的算法。

7.什么是二叉树的深度优先搜索算法? (解)

这是另一种流行的搜索算法,主要用于树和图形。 该算法首先在相同级别搜索之前先深入访问节点,这就是为什么使用深度优先搜索算法的原因。 实施起来很棘手,但是您可以使用Stack来实现DFS或深度优先搜索算法。

排序算法

8.如何实现迭代快速排序算法? ( 解决方案 )

显然没有递归:-)。 如果您还记得,我之前曾告诉过您,您可以使用Stack将递归算法转换为迭代算法,这也是在不递归的情况下实现Quicksort算法的方法。 如果您需要有关实施的更多帮助,则可以进一步查看该解决方案。

9.如何实现计数排序算法? ( 解决方案 )

就像我们对其他O(n)排序算法(例如Radix排序和Bucket排序)所做的一样。 如果您不知道Counting sort是另一种整数排序算法,则可以根据较小整数的键对对象集合进行排序。 它具有O(n)的时间复杂度,使其比喜欢的速度更快 Quicksort和Mergesort用于一组特定的输入。 有关更多详细信息,请参见解决方案。

10.如何在不使用第三个变量的情况下交换两个数字? ( 解决方案 )

另一个棘手的问题,如果您知道这个窍门,这很容易:-)如果您可以将一个数字存储在一个数字中,然后将其减去其他数字,则可以不使用临时变量或第三个变量就交换两个数字

a = 3;

b = 5;

a = a + b; // 8

b = a-b; // 3 a = a — b; // 5

现在您有a = 5和b = 3,因此无需使用第三个或temp变量就可以交换数字。

11.如何实现基数排序算法? ( 解决方案 )

这是另一种具有O(n)时间复杂度的整数排序算法。 根据Wikipedia,Radix排序是一种非比较排序算法 ,该算法通过按共享相同有效位和值的单个数字对键进行分组,对带有整数键的数据进行排序 。 您可以进一步查看该解决方案以了解实施细节。

12.如何实现插入排序算法? ( 解决方案 )

您是否曾经在您的橱柜中布置了扑克牌或衬衫? 这两件事之间有什么共同点? 好吧,您将下一张卡片或衬衫放到适当的位置,或者,我应该说您将下一个元素插入其适当的位置。 这就是您的插入方式。

13.编写算法以检查两个矩形是否相互重叠? ( 解决方案 )

这是一个棘手的算法问题,但是如果您必须在2D数学课上听老师讲课,则可以解决此问题。 还有另一招,检查矩形不重叠的所有条件,如果条件不成立,则表示两个矩形相互重叠。 例如,如果一个矩形的上侧低于其他矩形的下侧,则它们在垂直对齐时不会重叠。

14.合并排序算法如何实现? ( 解决方案 )

与快速排序类似,合并排序也进行了划分和征服算法,即您可以对数组进行划分,直到可以对数组中最小的数组进行排序,例如具有一个或零个元素的数组。 对小数组进行排序后,可以将它们合并以获得最终结果。

Quicksort和Mergesort之间的唯一区别是mergesort是稳定的,而Quicksort是不稳定的。 这意味着相等元素在排序之前和之后都保留其位置。

另一个值得注意的区别是,即使两者均具有O(NLogN)的平均时间,使用Quicksort还是比mergesort更好,因为对于相同数量的输入,Quicksort花费的时间更少,而Quicksort中的常数因子比merge sort少。

排序算法

15.如何实现存储桶排序算法? ( 解决方案 )

Bucket排序是另一个很棒的算法,可以对数组进行排序,甚至不比较元素。 它被称为非比较排序算法,可以为所选输入提供O(n)性能。

16.编写算法以检查两个字符串是否为字母( 解决方案 )

字谜是长度和字符匹配但顺序不匹配的东西,例如Army和Mary都具有相同数量的字符。 解决此问题的一个技巧是对字符进行排序并检查它们是否相同。

17.用您喜欢的编程语言实现QuickSort算法吗? ( 解决方案 )

这是一种非常简单的排序算法,但是只有当您练习过之后,否则您可能会迷路。 请记住,Quicksort是一种分而治之的算法,这意味着您可以保持数组的划分,也称为分区。 然后,您可以在最小级别上解决问题,也称为基本案例,例如您的数组仅包含一个或零个元素时。

18.如何检查两个String是否相互旋转? ( 解决方案 )

有一个简单的技巧可以解决此问题,只需将String与自身连接起来,然后检查旋转是否存在。 如果串联的String包含旋转,则给定的String是前者的旋转。

19,比较和非比较排序算法之间的区别? ( 回答 )

顾名思义,在基于比较的排序算法中,您必须像对快速排序一样对元素进行排序,但是在诸如计数排序之类的基于非比较的排序算法中,可以不对元素进行比较。 惊讶吗 好吧,那么,我建议您阅读本课程,以了解有关O(n)排序算法的更多信息,例如基数排序,计数排序和存储桶排序。


20.实现素数的Eratosthenes算法筛? ( 解决方案 )
这是很难实施的算法之一,尤其是如果您不记得的话:-)有时候面试官会给您解释,而其他时候则需要记住它。

这些是数据结构和算法之外的一些最常见问题,可帮助您在面试中表现出色。

我还在博客上分享了很多这些问题,因此,如果您真的很感兴趣,可以随时去那里搜索。

您需要了解这些常见的编码, 数据结构和算法问题 ,才能成功采访任何规模的编程公司的大小公司。

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

该列表提供了准备的好主题,还有助于评估您的准备工作以找出您的长处和短处。

良好的数据结构和算法知识对于成功进行访谈采访至关重要,因此您应该集中精力进行访谈。

结束语

谢谢,您到了本文的结尾……祝您编程采访顺利! 这当然不是一件容易的事,但是通过遵循此搜索和排序算法问题,您比其他人迈出了一步。

如果你喜欢这篇文章,那么请一起分享你的朋友和同事,不要忘记遵循javarevisited Twitter和javinpaul以及!

翻译自: https://www.javacodegeeks.com/2019/04/searching-sorting-algorithms-interview-questions-programmers.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/342583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业交换机性能中的“自适应”该如何理解?

工业交换机诸多性能指标中,我们常常看见有“自适应”这个指标。它到底是什么意思呢?接下来飞畅科技就来给大家详细讲解一下,一起来看看吧! 自适应也叫自动匹配、自协商,以太网技术发展到100M速率以后,出现…

【无线lora模块星型组网】lora无线模块专利技术 跳频扩频 支持200节点并发

E70 (433NW30S)采用星型组网模块,工作在433MHz频段,模块集协调器、终端为一体,具有长距离、高速率两种传输模式,一个协调器支持多达200个节点与其通讯,所有操作配置采用行业标准AT指令,极大简化用户操作&am…

控制器局域网can总线

很多的司机朋友以及工控圈的朋友都有听到过“CAN总线”一词,今天我们就来一起看一下CAN总线为什么这么火? CAN总线,也叫做控制器局域网总线(Controller Area Network),是一种用于实时应用的串行通讯协议总…

交换机多少钱一个?影响工业交换机价格的因素?

工业交换机,即应用在工业领域的交换机。它的性能和各个安全指标要比普通(商业)交换机要求更稳定一些。因此,工业交换机的价格要比一般的交换机要稍贵一些。那一般工业交换机多少钱一个呢?是不是每个厂家的交换机价格都…

[渝粤教育] Huazhong University of Science and Technology Analog Electronics Technique 参考 资料

教育 -Analog Electronics Technique-章节资料考试资料-Huazhong University of Science and Technology【】 Test questions for The Ideal Operational Amplifier 1、【单选题】The two input terminals of an operational amplifier are labeled as: A、high and low B、pos…

【NBIoT无线模块DTU数传电台】串口服务器RS232/RS485端口工业路由信号传输

E840-DTU (NB-02)是为实现串口设备与网络服务器,通过NB网络相互传输数据而开发的产品,通过简单的AT指令进行设置,即可轻松使用本产品实现串口到网络的双向数据透明传输。 基本功能: 通过无线方式传输数字信号的高性能无线收发装…

[渝粤教育] Nanjing University of Aeronautics and Astronautics Grey Data Analysis 参考 资料

教育 -Grey Data Analysis-章节资料考试资料-Nanjing University of Aeronautics and Astronautics【】 Chapter 1 Concept and basic principle of grey system 1、【单选题】The research object of gray system theory is: A、A. Clear extension, clear connota…

工业级光纤收发器的“附加属性“功能介绍

工业级光纤收发器作为光电信号转换设备,除了其设计本身的功能外,还具有其他很多的拓展功能。今天飞畅科技的小编就来为大家简单介绍一下工业级光纤收发器的”附加属性“功能,一起来看看吧! 工业级光纤收发器在数据传输上打破了以…

串口服务器E810-DTU实现以太网口与RS232数据透明传输

E810-DTU-V1.0是一款232转以太网的单串口服务器,实现了RJ45网口与RS232之间的数据透明传输。 模块搭载M0系列32位处理器,运行速率快,效率高。具备自适应网络速率(最高支持100M全双工)、TCP Server、TCP Client、UDP Server、UDP Client四种通…

无线数传电台rs232和rs485串口接口:230M数传电台

E51-DTU-2W是一款频率230M无线数传电台( 同时具有RS232/RS485接口),透明传输方式,工作在225~237 .6MHz频段(默认230MHz),工作电压范围8V~28V。具有载波频率: 230MHz、发射功率: 33dBm、通信距离: 8.0km、接口类型: RS232/RS485、供电电压: 8~…

[渝粤教育] University of Science and Technology Beijing Discrete Mathematics 参考 资料

教育 -Discrete Mathematics-章节资料考试资料-University of Science and Technology Beijing【】 Chapter 1 unit tests 1、【单选题】Which is a proposition in the following statements? A、Please don’t copy! B、The sun is a planet. C、Can I smoke here? D、x –…

工业级光纤收发器和协议转换器有什么区别呢?

工业级光纤收发器是将光电信号进行转换的;而协议转化器是进行协议转换的。那么,工业级光纤收发器和协议转换器具体有哪些区别呢?接下来飞畅科技的小编就来为大家具体分析一下二者之间的区别,一起来看看吧! 工业级光纤…

中继在无线通讯中的应用

无线中继,即中继节点在无线网络中起到中继的作用,能实现信号的中继和放大,从而延伸无线网络的覆盖范围。就中继的运行机制而言,中继可分为洪泛中继、定向中继。 洪泛中继,是指中继设备在任何时刻收到的任意数据包&…

SI4463模块配合WDS的快速上手指南

1.前言: Wireless Development Suite (WDS)是Silicon Labs公司提供用于ISM频段的EZRadioPRO系列配置和调试的计算机终端软件。可以使用此软件对模块的射频参数,寄存器配置和引脚中断进行设置。 2.SI4463概述 SI4463是Silicon Labs一款高性能的射频收发…

工业级光纤收发器入网说明

我们都知道,一个网络是由各种光学器件组成的,工业级光纤收发器就是其中的一个重要组成部分。但由于我们常使用的网线(双绞线)的最大传输距离有很大的局限性,一般双绞线的最大传输距离为100米。因此,当我们在布置较大的网络的时候,…

【工业级串口服务器E810-DTU】RS485/RS232转以太网,双向透明传输

E810-DTU-V2.0是一款RS485 & RS232转以太网的单串口服务器,实现了RJ45网口与RS485或者RS232之间的数据透明传输。模块搭载M0系列32位处理器,运行速率快,效率高。具备自适应网络速率(最高支持100M全双工)、TCP Server、 TCP Client、 UDP …

工业级光纤收发器一般适合哪些应用环境?

工业级光纤收发器作为一种常见转换的设备,它适合于很多应用场景,接下来飞畅科技就来为大家具体介绍一下工业级光纤收发器一般适合哪些应用环境,一起来看看吧! 光纤收发器是一种用来实现光电信号转换的设施,它的一端是…

使用Jenkins,GitHub和Docker的最先进的持续集成和部署管道

搭建舞台 在过去的两年中,我一直在从事Node.js项目。 我们使用GitHub进行源管理,使用Jenkins进行持续集成。 我们还有一个基于Docker和Terraform的部署工具 。 在此期间,我们对配置进行了一些改进。 产生积极影响的更改之一是在分支上运行CI…

zigbee与WiFi模块和蓝牙模块的区别是什么?

先说无线吧。市面主流三大协议Wifi,Zigbee,蓝牙。(协议可以理解为控制通信方式)如果使用Wifi协议接入,那如果家里网断了怎么办?显而易见,语音控制远程控制全部瘫痪。所以不管有线还是无线的设备…

工业级交换机的5个常见的优点解析

随着科技的不断发展,越来越多的工业级交换机逐渐取代了普通交换机。是因为工业级交换机有着普通交换机没有的优势。下面飞畅科技就来为大家详细说说工业级交换机最常见的5个优点,一起来看看吧! 一、超强抗干扰性 工业级交换机具有很强的抗干…