点击蓝色“码出高效面试的程序媛”关注我,
了解更多技术流行面试题
来源:imooc.com
主要介绍算法面试的一些问题、以及如何准备算法面试
算法面试不仅仅是正确的回答问题
对于面试中遇到的大多数问题,都能有一个合理的思考路径
什么是算法面试?
让大家在面对面试中的算法问题时,有一个合理的思考路径:
不代表能够“正确”回答每一个算法问题,但是合理的思考方向其实更重要,也是正确完成算法面试问题的前提
算法面试优秀不意味着技术面试优秀
技术面试优秀不意味着能够拿到Offer
什么是给出合理的思考路径?
算法面试的目的不是给出一个“正确”答案,
而是展示给面试官你思考问题的方式。
“正确”本身是一个相对概念
算法面试不是高考。
把这个过程看作是和面试官一起探讨一个问题的解决方案。
对于问题的细节和应用环境,可以和面试官沟通。
这种沟通本身很重要,它暗示着你思考问题的方式。
例子:我们需要对一组数据进行排序
设计排序接口,标准库的设计,业务中排序算法。
排序是基础操作,很重要。
解决
快速排序算法:O(nlogn)
忽略了算法使用的基础环境。要动态选择。
(向面试官提问):这组数据有什么样的特征?
有没有可能包含有大量重复的元素?
如果有这种可能的话,三路快排是更好地选择。
普通数据:普通快速排序就行了;java语言标准库排序使用的三路快排。
是否大部分数据距离它正确的位置很近?是否近乎有序?
如果是这样的话,插入排序是更好地选择。
按照业务发生顺序,先发生先完成,几乎有序,插入排序是更好的选择。
是否数据的取值范围非常有限?比如对学生成绩排序。
如果是这样的话,计数排序是更好地选择。高考成绩取值范围有限:计数排序更好。
(向面试官提问):对排序有什么额外的要求?
是否需要稳定排序?