算法一:面试技巧
本文内容来自****啊, 我是把他给打下来提供以后参考
算法面试不是高考,把这个过程看作是和面试官一起探讨一个问题的解决方案。对于问题的细节和应用环境,可以和面试官沟通,沟通中不断的给,模型提出假设,深入到模型中去,不要把面试当作是考试。当遇到一个很难的维妮塔,对你的竞争对手来说,也是难的
对一组数据进行排序:首选的是快速排序算法,但是在实际的项目中,很多时候我们根据应用场景应该有很多选择,例如:
根据这组数据有什么特征:
例如 :如果有大量重重复元素,用三路排序效果更好(java中的排序接口就是三路快速排序)
例如: 如果是否大部分的数据距离他正确的位置是否很近?是否近几乎有序(或有序):我们利用插入排序更好一些(应用场景:银行业务按照发生的时间进行排序)
例如:数据的取值范围是否有限?比如对学生成绩排序(北京高考成绩分数0-750),我们采用技术排序效果更好
对排序有什么额外要求:
例如是否需要稳定排序(通俗地讲就是能保证排序前两个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。):如果需要稳定排序,快速排序不适合,归并排序是更好的选择
对一组数据排序我们还应该知道数据的存储结构是怎么样的(数组还是链表)
快速排序非常依赖数组的随机存取,但是我们用链表这种存储结构的话,归并排序是更好的选择
我们还要考虑是否可以装载在内存中,数据量很大,或者内存很小,不足以装载在内存里,需要使用外排序算法
面试中常见的问题:
面试中还会通过过去了解你的思考行为方式
准备号合适的问题问面试官:
算法面试不等于技术面试,技术面试通过不一定会得到对应的offer