我的算法学习之路
之前在写作平台分享过一篇我在极客大学的学习收获,可以点击链接查看(https://xie.infoq.cn/article/6bb70fffad0ae27bdbb9ca758),昨天晚上看到极客大学的直播,又想起了我在算法训练营的那段日子。天天学习超哥的课程、刷题、复盘、提交作业,还要去看小组其他同学有没有提交,以及他们作业的质量。用两个字来形容就是充实。
分享一下学习经验,希望对于有想提升算法能力的同学有帮助。
平台选择
先说一下我为什么会参加算法训练营。理由很简单,我认为自己很普通,普通到发现自己平时是一个 CURD boy,另外,我即将要 30 岁了,如果再不补上数据结构和算法这一课,怕真迈步过去 35 岁这个坎。
问题又来了,市面上关于数据结构和算法的书和课程那么多,我为什么会选择极客时间这个平台?答案也很简单,因为物美价廉。它一直在想方设法增长,入驻它的大咖足够优秀。早点和它一起成长,一点儿也不亏。
会写 CURD 的码农一抓一大把,但是能将数学、数据结构和算法玩明白的软件工程师很稀缺。数据结构、算法等底层知识永远都是编程大师们的护身法宝,就如同少林寺的《易筋经》,是最重要的上乘武功,学会了,你将无所不能。如果你想成为一名增长型的程序员,想要武功出神入化无所不能,就请深入学习、终身学习、高效学习。
那我们该如何高效学习呢?在这里总结一下自己在算法训练营第五期的学习经验。
明确学习目标
我们要明确自己的学习对象,而不要漫无目的地什么都想学。例如,我是一名 Java 程序员,在学习数据结构和算法,leetcode 刷题时,我就以 Java 语言为主。
调整学习方法
主要分享 6 个方法:
使用自然主义的学习方法
自然主义的核心是模仿,语言、乐器、书法等适合这种方法学习,注重一门知识或者技能表面上看起来的样子。学习的人需要一丝不苟地去模仿。在 leetcode 刷题练习时,国际站中,那些 discuss 里面的 most votes 中的题解是我们模仿的对象。
不要使用结构主义的学习方法,结构主义的核心是创造。医学、艺术、经济学等学科适合这种方法学习。不要想着一上来就拍脑袋要创造一个问题的算法题解,对于普通程序员而言,是最低效的学习方法,坚决摒弃。
充分利用碎片化时间学习
我们不可能每次学习都端坐在图书馆或者是家里面,每天还要面对各种杂七杂八的事儿,对我们而言,碎片化的学习可能是我们学习的唯一方式了,吃饭、通勤利用一切可以利用的时间。
带着困惑和问题想学习
带着困惑和问题学习,最终的效果一定是要把这些问题解决。比如别人的题解中某个问题你不理解,首先你要用一句话描述清楚自己的问题,然后带着关键词去搜索,最后解决掉这个问题。不是【收藏】下来,一定要破除现在收藏下来,以后再学的幻想。
任务驱动
我们大家都是成年人,不要说是因为对编程感兴趣,所以才学算法,应该用任务来驱动自己。比如两个月后要去找一份更好的工作,要解决工作中遇到的难题等等。
如果,你找不到任务来驱动,我可以告诉你,任务到处都是,生活中的任务驱动,比如给自己开发一款工具,工作中的职业强迫,想要写出更优秀的代码,以教为学等等都是任务。
以教为学
自从算法训练营开班以来,我每天早上六点起来后要刷题。刚开始刷的有点慢。我遇到自己之前没遇到过的概念时,先自己学一遍,然后我会给我老婆再讲一遍,如果她听懂了,我也就学明白了。
除了将学到的东西讲给一个完全不懂的人,还可以写成 blog 微信公众号等方式输出,当你能写出来,能写明白的时候,也能说明你真的学明白了。
跟随大师
不要跟着臭棋篓子下棋,那样你会越下越臭。覃超老师是算法方面的专家,是我们选择中的最优解。跟随之,学习之。
最后,找对方法后,请练就五毒神掌,一定不要忽视重复的力量。
版权声明: 本文为 InfoQ 作者【熊斌】的原创文章。
原文链接:【http://xie.infoq.cn/article/6b841b8e28d7a997e1caf71f8】。未经作者许可,禁止转载。
评论