目录
1.1 算法面试不仅仅是正确的回答问题
1、这个课程的目标是什么?
2、算法面试是什么?
(1)什么是给出合理的思考路径
(2)“正确”本身是一个相对概念
(3)什么是“正确”的回答一个算法问题
1.1 算法面试不仅仅是正确的回答问题
1、这个课程的目标是什么?
让大家在面对面试中的算法问题时,有一个合理的思考路径;面对算法面试,不畏惧。因为面试中的算法问题,通常并不“复杂”,远远不需要啃完一本《算法导论》。
2、算法面试是什么?
让大家在面对面试中的算法问题时,有一个合理的思考路径:不代表能够“正确”回答每一个算法问题,但是合理的思考方向其实更重要,也是正确完成算法面试问题的前提;算法面试优秀不意味着技术面试优秀;技术面试优秀不意味着能够拿到Offer。
(1)什么是给出合理的思考路径
算法面试的目的不是给出一个“正确”答案,而是展示给面试官你思考问题的方式。
(2)“正确”本身是一个相对概念
算法面试不是高考。把这个过程看作是和面试官一起探讨一个问题的解决方案。对于问题的细节和应用环境,可以和面试官沟通。这个沟通本身很重要,它暗示着你思考问题的方式。
例:对一组数据进行排序。
我们需要对一组数据进行排序:快速排序算法
。
这组数据有什么样的特征?
①有没有可能包含有大量重复的元素?如果有这种可能的话,三路快排是更好地选择。
②是否大部分数据距离它正确的位置很近?是否近乎有序?如果是这样的话,插入排序是更好地选择。
③是否数据的取值范围非常有限?比如对学生成绩排序。如果是这样的话,计数排序是更好地选择。
④是否需要稳定排序?如果是的话,归并排序是更好地选择。
⑤数据的存储状况是怎样的?是否是使用链表存储的?如果是的话,归并排序是更好地选择。数据的大小是否可以装载在内存里?数据量很大,或者内存很小,不足以装载在内存里,需要使用外排序算法。
(3)什么是“正确”的回答一个算法问题
正确还包含对问题的独到见解;优化;代码规范;容错性;等等等等……
这个课程不仅仅是给出解决算法问题的代码。
如果是非常难的问题,对你的竞争对手来说,也是难的。关键在于你所表达出的解决问题的思路。甚至通过表达解题思路的方向,得出结论:这个问题的解决方案,应该在哪一个领域,我可以通过查阅或者进一步学习解决问题。