美文网首页程序猿的进阶屋IT技术进阶互联网科技
应对一线互联网公司的程序员面试,基本八种排序算法需掌握哪些?

应对一线互联网公司的程序员面试,基本八种排序算法需掌握哪些?

作者: 91216271346a | 来源:发表于2018-01-02 21:57 被阅读38次

一般而言,个人在面试的时候,会问面试者知道哪些排序算法,选一个自己熟悉排序算法。

讲下它的主要特点(大部分人会选冒泡),比如时间复杂度 / 稳定性 这些,再比如有个序列 (1, 4, 2, 3) 要比较多少次。如果答的不好,就不继续。

如果继续,一般会把重点放在 快速排序 和 堆排,进一步可能会要求手写实现。

比如快速排序,一般而言,肯定是会有 bug 的。其实能手写快排无 bug,不管是不是提前背好的(记性好也是优点),都会有很好的印象。

然后会讨论下在输入是特定序列的情况下,当前的算法有什么缺点或优点。如果这个过程可以一直持续下去,到最后得分都会比较高,但很少见。另外如果面试者比较熟悉基数排序这类算法,会问下一些偏理论的问题,比如比较排序算法的下界是多少,为什么基数排序可以突破这个下界等等。

说那么多,主要是还是想表达,大致了解可能够,但是不够好,最好还是深入理解,如果能死记硬背更好,不然很大概率会被问住。这并不是挑刺。

当然,工作中用到这些面试内容的可能性不高,但是这还是要问下,不然怎么拉开差距了^_^。

『算法导论』的第二部分 『排序和顺序统计学』,是很好的排序算法基础。几十页,认真看。有次我自己去面试别的工作,一个问题想了很久才给出解决方案(相当一步一步重新思考了遍),后来空闲的时候翻『算法导论』才发现里面有现成的解决方案(完全没有印象了,自己想的细节还没写的那么好,悲伤的故事。)。所以多看看。

『编程珠玑』第十一章 『排序』,对快速排序做了细节性的讨论。一般对付面试不成问题。

下面这个图有时间看看,不太常用的了解即可,当然有时间深入更好。自己对它们之间特点(复杂度 / 稳定性 / 是否是比较排序)有基本认识,对他们之间的实现差异以及为什么有一定程度的了解。维基百科其实讲的特别好,就是不知道登得上去不。

一个程序员学习平台分享给你们,让你在实践中积累经验掌握原理。主要方向是JAVA工程师。如果你想拿高薪,想突破瓶颈,想跟别人竞争能取得优势的,想进BAT但是有担心面试不过的,可以加我的Java学习交流群:282711949

注:加群要求

1、大学学习的是Java相关专业,毕业后面试受挫,找不到对口工作可以

2、在公司待久了,现在过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的

3、参加过线下培训后,知识点掌握不够深刻,就业困难,想继续深造

4、已经在Java相关部门上班的在职人员,对自身职业规划不清晰,混日子的

5、有一定的C语言基础,接触过java开发,想转行的

小号勿扰,不喜勿加

作者:邓卓

链接:https://www.zhihu.com/question/264854548/answer/286065483

相关文章

网友评论

    本文标题:应对一线互联网公司的程序员面试,基本八种排序算法需掌握哪些?

    本文链接:https://www.haomeiwen.com/subject/mpaqnxtx.html