这是八股文的知识,但是中国人又个好的习惯,当别人给你一块好吃的面包时,你总想知道这个面包是怎么做的,对于目前的IT行业来说,不管这个做法你是被动的学习还是主动的探索,你都要知道,也必须要知道。
高端的面试,往往不会直接让你写代码(我经历过一个面试,要求纸上写一个图的数据结构,这可能和我简历中的一条利用图的特性优化启动速度有关,但是一般情况下,我认为这个思想重于实践,并且实践的复杂程度纸上是写不出来的),有经验的面试官会给你算法,但是重点是考虑你的思路和对模式算法套路的理解,即应用。
比如说,面试会要求说一下什么是冒泡排序,或者快速排序,并讲一下快速排序的大概过程。 为什么是这两个呢?因为二者在不同时间复杂度中都具有代表性,不知道时间复杂度怎么分析的,可以看一下 算法-时间复杂度分析
再比如,同样是O(n^2)的时间复杂度,为什么推荐使用插入排序而不推荐冒牌排序?这个问题则主要考查分析能力。
凡此种种,都逃离不了对上面“做法”的扩展。
之前在拥有思想,你就是高级、资深、专家、架构师 中提到过,要提升编程思想,数据结构和算法是必不可少的环节,而今天我发现,掌握分析算法的一些分析能力更加重要,这就好比知道了怎么做面包,还会担心没有面包吗?