作者
RadhikaMorabia
译者
香槟超新星,责编
郭芮
头图
CSDN下载自视觉中国
以下为译文:
年真是多灾多难。
我已经不再满足于自己以前制定的“年学习计划”了,因为这个计划中很多优先项的前提是我今年不必担心会被裁员。但现在的情况已经变了,对任何人来说都是如此。
在最近的这一段时间里,我唯一的重心就是为面试做准备和学习。对我这一行来说,这涉及3个领域的学习:算法,系统设计,以及实际的React/Node项目。
目前来说我在工作中做的React和Node实践已经够多了,而对系统设计的学习最好在快面试的时候再突击进行。因此,在未来的这一段时间,我将专注于在算法方面取得进步。
我有两个限制:一是我每天下班后只想学习1个小时,或者每周总时长少于8个小时。二是我只懂JavaScript,并且不想使用一种我还不熟练的语言来写代码(例如Java)。
因此,假设你已经做过一些编程练习题,并且也有一搭没一搭地完成过一些简单的LeetCode题,并且对如何解决这些问题已经有点熟悉了,并且假设你没有科班CS背景,那么要如何才能有所突破,如何实现从“两数之和(TwoSum)”到“二叉搜索树(BinarySearchTrees)”的飞跃呢?
下面是我的方法。
课程表
学习算法分为好几步。如果你过于草率地一头扎进某项课程,就容易迷失这个课程跟你已有知识的联系。而如果你只是闷头练习,却不参考外部资料,你可能甚至会不知道那些问题考察的知识点是什么。在某些节点之间平衡这两者是至关重要的。
我现在确定自己已经做了足够多的数组和字符串操作问题,而且急需针对我所存在的知识空缺的指导和结构性认知。我需要基础知识。
方法有好几种,但是在失败了很多次以后,我觉得自己需要一个非常具体的反馈回路。
首先,要阅读了解新概念。可以通过阅读材料也可以通过看视频。这一步应该注重实用,且包含尽可能少的词汇量。有图示的话会很好。这一阶段,编程题例子只会让你感到困惑。
然后,我需要沉浸其中。给我一道题。让我失败。让我完整做完,却对它一知半解。
最后,我需要对问题本身进行回顾,而不是概念。我不仅需要去看正确的解决方案,而且还要去看正确的解决方案的过程是怎样的。
这样重复很多次之后,规律就开始显现了。请注意,不是做每一个新题都要阅读新的概念。“练习——回顾”循环进行的次数应该更多。
据我所知,InterviewCake能提供最好的反馈回路。还有其他一些的服务可以处理“问题——回顾”过程,但对我而言,最困难的部分是如何获得循序渐进的课程列表,能够补充我所缺乏的基本知识。由于Covid19疫情,它目前的价格为29美元,所以尽管我还不能说是真正推荐它,但我至少推荐你先看看它。
InterviewCake处理“阅读——问题”的过程。它能够一定程度地处理“回顾”的部分,但我认为只看它不够,还需要补充材料。
除了InterviewCake,我还有一些其他事情要做:
阅读:WilliamFiset的EasytoAdvancedDataStructures。Chris在关于自己算法学习的一篇很棒的博文中推荐了此方法(链接: