1、为什么要写这么一个专栏
之前,为了准备面试,陆陆续续的看了一些数据结构相关的知识,也刷了不少的习题,也面试了不少的公司,算下来至少两位数了,但是没有一个系统的总结。想在系统性的总结一下,就当是写一个笔记。
2、算法面试过程中需要注意的问题
在通常的算法面试中,通常需要注意以下几点
- 合理的思考路径
相对于最终的算法题目的答案而言,给出一个合理的思考路径,相对来说是更重要的,算法面试最主要的还是考察面试者,解决问题的一个能力
- 合理的沟通
在面试的过程中,如果有不懂的问题,或者对问题的以后要主动和面试官沟通,毕竟面试是一门沟通的艺术,良好的沟通能够给面试官留下良好的印象,而且通过沟通也能表达出你思考问题的方式
- 扎实的coding能力
对于大多数的公司来说,如果最后能够写出无bug的code,能够得到不少的加分,尤其是像面试头条这种公司的时候,很有可能由于最后没有写出完整的code,而无缘下一步的面试,所以平时还是注意白板编程的练习
3、算法面试的常见问题
除了算法问题,简历中的项目相关的问题,会问的更多 比如,项目经历中会遇到什么问题,遇到的印象的最深的bug是什么,系统设计相关的知识
除了算法相关的题目之外,相关的基础知识也要进行复习 面试官会通过这些项目的了解候选人的思考方式 当然在面试最后,大部分面试官会给面试者提问的机会,面试者可以提前准备一些自己的问题,一般来讲,面试官都会很好的回答
4、如何准备算法面试
准备算法面试,不需要从《算法导论》开始,而且面试中对于一些高级的算法概念,考察的概率依然很小,还是以基础的算法和数据结构为主
常见的数据结构如下
数组、链表、队列、栈、堆、散列表、二叉树、Trie树、图
常见的算法
递归、各种排序、二分查找、分治算法、动态规划、字符串匹配
5、刷题网站
- Leetcode
- Lintcode
刷题秘诀,多刷多练,多总结,最好是按照类别来刷,对一类问题进行总结 练习的时候海要注意,白板编程
由于知乎不支持markdown,所以文章可能会同步到掘金
知乎链接