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

Posted 大数据开发学习院

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应对一线互联网公司的程序员面试,基本八种排序算法需掌握哪些?相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

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

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

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

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


以上是关于应对一线互联网公司的程序员面试,基本八种排序算法需掌握哪些?的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序大厂Java核心面试题出炉,一线互联网公司面经总结

32岁的老算法程序员面试没通过,一问原因,挺突然的...

一遍记住 Java 面试中常用的八种排序算法与代码实现!

刚出炉的一线互联网公司 Android 面试回顾

如何才能通过一线互联网公司面试?下载量瞬秒百万

一线互联网企业常见的14个Java面试题,颤抖吧程序员!