算法是比较耗时,不像其他知识,可能看一遍就记住了。有时候一道算法题,可能就耗费你半个小时到1个小时左右。如果你每天的时间比较充裕,刷题量建议在10-15道左右。
对算法和数据结构基础知识比较薄弱的同学,每天刷两三道就可以了,因为你还要了解相关的基础知识,学习起来可能比较吃力,做起题来比较慢。这个时候培养自己的信心和兴趣才是最重要的。千万不要急功近利,如果设置过高的目标,完不成每天的题量,会有强烈的挫败感,很难坚持下去。
如果你基础比较好,又想进大厂,建议每天刷15道以上。不仅要多刷,而且每一道要学会举一反三。因为大厂面试可不是让你背题写算法,一般都会根据背景和问题来出题,既考察你的算法功底,又考察你的应用能力。
刷到什么程度?
算法都是有固定套路的,什么样的问题对应什么样的解法。你如果刷到下面我说的的程度,就可以出山了。
首先根据题目能确定要使用的数据结构。数据结构最基本的就是数组和链表。数组的特点就是查询快,省空间。链表的特点就是插入和删除快,但是相比数组占用更多的空间。
其次,能分析找到出题的解法并完整写出。算法考察,简单常见的就是查找、排序。查找经典的就是二分法,排序经典是快排序、桶排序等。复杂点的就是贪心、分治、穷举、矩阵等。你只要平时多总结这些算法具体什么场景用,到面试的时候就能得心应手。
最后,要会比较算法的优劣。评价算法好坏的标准有两个,时间复杂度和空间复杂度。简单来说就是如何占用内存最小,占用cpu的指令时间最短。如果你能举一反三并给出最优解,面试官就会比较欣赏你。
除了算法我们还需要哪些知识?
算法和数据结构都是比较基础的知识。面试官不会单凭这一项来考察一个人是否被试用的。还会问其它技术知识。比如通信协议(http、tcp),通用组件(redis、mysql、mq)、语言基础(java、c++、python)等。还会看这个人的语言组织能力、临场反应能力、抗压能力、团队合作能力、是否能满足岗位需求和工作要求、以及是否对未来的有具体的工作规划等。