前言
随着互联网寒潮的到来, 愈来愈多的互联网公司提升了面试的难度,其中之一就是加大了面试当中手撕算法题的比例。这里说的算法题不是深度学习,机器学习这类的算法,而是排序,广度优先,动态规划这类既考核数据结构也考核编程能力的题目。刷题的网址很是的多,其中以leetcode是最为出名的。面试
在刷题上,我花了大量的时间,蹚了许多的坑,总结了一下,主要有这三个问题:算法
- 刷过的题总是忘,第二次刷的时候仍是不会作
- 刷题的速度很慢,即便花一天时间,也经常只能刷五六道
- 坚持不下来,总是刷到一半就停滞下来了,当我第二次再来刷的时候,前面刷过的题都又忘的差很少
说出来都是泪,感受刷题这个路是真的难走,花了不少时间,可是感受没有什么收获。因此最近我一直在反思本身刷题的方法,但愿可以提升刷题的效率和速度。当我总结了如下方法之后,我很明显的感觉到本身的刷题速度从之前周末的一天五六道提高到周末一天刷十五六道以上,速度相比之前提高的很是明显。编程
一. 咱们来谈谈为何要刷题数据结构
- 面试须要。Google以及今日头条等公司面试的时候,很是看重基本的算法题目,leetcode 刷的很差第一面都过不了
- 刷题可以提升自信。实际工做当中的代码论算法复杂度远远低于刷题的难度,这么难的题我都刷过了,况且工做的代码, 固然工做当中通常也用不到这些咱们刷题的方法
- 大部分同窗刷题能力须要提升。在面试同窗算法题的时候,三道算法题可以写出一道的也不是不少
二. 如何快速刷题
因为我本人目前只刷了400道左右的题目,颇有可能有更好的方法,欢迎你们赐教机器学习
- 确立计划。好比在准备找工做的时候,明确就要60天刷leetcode 前400题,平均一周就要刷75题,能够周末两天刷50题,周一到周五 天天刷5题,将问题分解下来,天天必定要完成任务才能睡觉
- 分解计划。因为须要一周刷75题,提早规划将本周须要刷的75题,整理成excel,刷完一题标记一下,一周完毕之后,能够看到满满标记的excel 很是的有成就感
- 快速刷题。初期一天刷五题其实也是很高的负担,通常来讲刚刷题,一题都至少要半个小时,一天五道的话,可能至少也要两个半小时。因此咱们在刷题的时候,为了节约时间,五分钟没有思路,就别浪费时间了,直接看答案. 另一个缘由,面试的时候,也不可能让你思考好久。要明确认知,这个和高考刷题没什么区别,理解不了,先背下来。
- 组队刷题。你们一块儿刷题,能够明显的督促本身坚持下来,刷题这个原本就是坚持的过程。
三. 如何避免遗忘学习
- 及时重复。因为咱们刷完题之后,遗忘曲线会听从一个先快后慢的过程,因此要及时重复刷过的题,这个须要提早规划刷的75题,咱们会以后再讲如何规划每周的75题
- 与人分享。当咱们刷完题之后,若是能讲给别人听的话,会大大加深咱们的映像,在讲给别人听的时候,若是你能讲的很明白,说明你是完全理解了,可是若是听的人始终没有听明白,那颇有可能就是本身没有理解这个题目,须要本身再回去思考一下这个题目的解法。
四. 如何提升面试环节当中刷题的表现优化
- 养成bug free 的习惯。写完代码之后, 必定要仔细检查,保证没有思路问题,没有下标越界问题,考虑各类边界状况,没有变量命名不一致等问题
- 掌握多种解法。算法题面试,作出来是一方面, 若是可以在这个题目上掌握不一样时间复杂度的解法,而后再呈现给面试官,面试官天然会更加满意的。假设一个同窗在面试的时候,先写时间复杂度和空间复杂度最高的方法,面试官颇有可能会问你这个题目有更优的解法吗,你再写时间复杂度和空间复杂度稍低一点的解法,若是面试官继续问你能不能更优化一点,你再写出时间复杂度和空间复杂度最优的方案,面试官会认为你的思考是有深度的,若是一开始就写出时间复杂度和空间复杂度最优的方法,面试官只是会以为这个题目你之前作过而已。
五.结束语spa
- 刷题最重要的是速度和效率。短期内高质量快速刷完才是最终目的,明确本身的认知,不要和题目死磕。
- 坚持下来。若是一个事情方向是正确的时候,即便一时遇到挫折了,也不要气馁,多总结方法,持续提升。刷题这件事情给个人挫败感是很是高的,中间是一度放弃了好久,可是当我想明白这道坎是必定要过的时候,就下定了决心必定要攻克这道难关,持续总结方法,持续进步。最后欢迎关注个人我的公众号:ModifyAI