博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前 Facebook 工程师:不要再用你认为正确的方式学算法了!
阅读量:4093 次
发布时间:2019-05-25

本文共 2326 字,大约阅读时间需要 7 分钟。

IT 行业里,新技术、新框架层出不穷。最近两年,我深刻的感受到技术人们学习和成长的步伐不断加快,追随“变化多端”的新技术时,越来越多的技术人们,开始注重那些“永恒不变”的底层知识的积累。

众所周知,“不变”的底层知识中,数据结构与算法是所有技术人都要跨过的坎。它不仅是技术人进入 Google、Amazon 以及 BAT 这些国内外一流的互联网公司的敲门砖,也决定了一个技术人的成长高度和学习速度。我想每一位对自己技术生涯有规划、有目标的技术人,都已经把“攻克算法”作为自己学习道路的重要目标。

然而,很多同学反馈说,知道算法对技术人面试、职业生涯至关重要,也非常希望能够迈过这个坎儿,但总是会遇到许多问题:

  • 基础薄弱,自学不成体系、不得要领,刷过的题目依然会忘记;

  • 学习过程中没人给反馈,学习效果难以评估;

  • 无法将理论和实际相结合,对工作帮助有限;

  • 畏难情绪严重,尤其面对动态结构这种“老大难”,缺乏信心,难以坚持。

今天,我想跟你聊聊到底应该如何学习数据结构与算法。

算法学习的常见误区

我在 Facebook 期间面试了数百位的技术人,回国创业后更是接触了不少希望从事算法岗位的工程师,去年在极客时间推出了《算法面试通关 40 讲》视频专栏,今年又跟极客时间联手出品了两期“算法训练营”,在接触了近 20000 名希望攻克算法的技术人后,我发现很多人对算法学习都存在误区。

总结了常见的算法学习误区,我想跟你说的是:

  1. 知道分子 ≠ 专业和熟练。很多初学者的状态都是这样的:好像看得懂,但不知道如何运用。你要明白,知道这个数据结构和理解这个算法,到运用之间是有非常大的鸿沟的。如何跨过这个鸿沟?第一是刻意练习,第二是用正确的方式刻意练习。

  2. 熟知所有知识点 ≠ 建立知识体系。熟知所有知识点固然没错,但是如果不能把这些知识点串联成线,形成自己的知识体系,那么这些零散的知识点也会随着时间的推移被逐渐忘掉。所以,一定要提醒自己,在看知识点的时候,应该把所有知识点串起来,找到它们之间的联系。

  3. 有深度 ≠ 有效果。我见过身边不少的初学者,一开始就去看厚厚的算法书,然而不少人一本《算法导论》拿起又放下,直到现在还是只了解一些初级算法,关键原理一问就懵,更别说搞定那些千奇百怪的算法面试题了。其实对于算法基础薄弱的人来说,更重要的是找到最适合自己、最优质的学习源头。

  4. 会一种解法 ≠ 真正学会。有的技术人学习了一段时间算法之后,知道能够用某种解法解出某类题目。然而,算法的另一层精髓在于,你需要考虑哪一种解法才是最快速有效的。因此,一定要提醒自己,将各种解法都尝试一下,并比较不同解法的优缺点,这里所说的优缺点主要就是时间复杂度和空间复杂度。

为了帮助大家走出算法学习的误区,克服畏难心理,彻底学透数据结构与算法。继前两期算法训练营后,我跟极客时间共同推出了全新的算法训练营第 4 期,重新打磨和设计了课程,内容从低到高,由浅入深,从链表、数组讲到动态规划、并查集、字典树、红黑树和 AVL 树、位运算、布隆过滤器和 LRU Cache等。

我是谁?

我是覃超,我从美国顶尖学府卡内基梅隆大学计算机专业毕业后,直接加入了Facebook。我在 Facebook 的 3 年时间里,作为 Facebook Messenger Tech Lead,参与了 Facebook App、Facebook Messenger、Facebook Phone 等产品的研发工作。另外,我面试过数百位技术人,对于算法面试的考察点和解题方式有丰富的第一手经验。

放眼网上现有的算法培训课程,有的经常会出现知识点覆盖不足、研究性内容过多或只关注面试算法的问题。因此,我希望通过算法训练营,综合的帮你建立起完整的算法知识体系,理清数据结构之间的关系,同时通过正确的学习方法,快速掌握常见算法题的解法,并能够跟实战结合起来。

我会如何带你攻克算法难关?

1.通过完备的课程体系,帮你建立算法学习的全景图

不同于我的视频专栏以算法面试题目讲解为主,算法训练营不仅涵盖面试题精讲,还会带你建立完整的算法知识体系,详细讲解常见的数据结构和算法的理论知识,以及算法在实际工程上的应用,一次性将数据结构和算法的方方面面讲透。

2.通过有计划的学习机制,让你进行有跟踪、有反馈的闭环学习

不仅只是观看课程视频,我会在每节课后给你精选练习题,并通过期中、期末考试让你自查成果,接收到实际学习反馈。每个阶段我也会根据大家的学习情况,进行重点、难点的直播讲解。班主任和我们的教研组将倾力提供全方位线上学习服务,包括助教答疑、作业、线上讨论、线下社交等。

3.通过建立班级组织,让你跟优秀的伙伴一起学习

你不会是独立学习的个体,你会在一个班级中、一个小组中,跟优秀的同学共同克服难关。班主任会组织大家进行线上分享和讨论,也会有班长、学习委员组织大家进行线下的社交,从这些集体活动中,你会吸收到很多同班同学输出的优质内容和学习方法。

4.通过大厂内推,给你带来更多职业发展机会

优秀毕业生毕业一年内,随时可获得极客大学提供的两次一线互联网大厂内推服务,更有 TGO 鲲鹏会的 600 家企业推荐通道为你敞开,获得更多的职业发展机会。

本期算法训练营包含 8 周线上视频学习 + 3 次讲师直播 + 全方位学习服务,帮助不同基础的软件工程师精进算法能力、构建知识体系。详细课程大纲如下:

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

上下滑动查看课程大纲

如何报名?

  1. 通过底部“阅读原文”链接,即可进入页面,立即报名。

640?wx_fmt=jpeg

  1. 扫描下方图片二维码,添加学习顾问可咨询详情,还可免费获取算法训练营的内部学习资料。

640?wx_fmt=jpeg

最后,来看看往期学员是如何在算法训练营成长的:

640?wx_fmt=gif

640?wx_fmt=gif

640?wx_fmt=gif

转载地址:http://avpii.baihongyu.com/

你可能感兴趣的文章
DirectX11 HLSL打包(packing)格式和“pad”变量的必要性
查看>>
DirectX11 光照演示示例Demo
查看>>
漫谈一下前端的可视化技术
查看>>
VUe+webpack构建单页router应用(一)
查看>>
Vue+webpack构建单页router应用(二)
查看>>
从头开始讲Node.js——异步与事件驱动
查看>>
Node.js-模块和包
查看>>
Node.js核心模块
查看>>
express的应用
查看>>
NodeJS开发指南——mongoDB、Session
查看>>
Express: Can’t set headers after they are sent.
查看>>
2017年,这一次我们不聊技术
查看>>
实现接口创建线程
查看>>
Java对象序列化与反序列化(1)
查看>>
HTML5的表单验证实例
查看>>
JavaScript入门笔记:全选功能的实现
查看>>
程序设计方法概述:从面相对象到面向功能到面向对象
查看>>
数据库事务
查看>>
JavaScript基础1:JavaScript 错误 - Throw、Try 和 Catch
查看>>
SQL基础总结——20150730
查看>>