如何学好数据结构与算法前Facebook 工程师这么说

发布于:2019-05-31   编辑:admin 浏览:

  从初级进阶到高级,从普通成长为优秀,几乎是每个程序员在职业发展之路上都在思考的问题。很多程序员问我:初级程序员和高级程序员之间,到底有什么样的区别呢?武侠小说中我们经常看到,绝世高手们因为内功雄厚,学一种新招式比普通人快 2 倍甚至 10 倍,实际的应战中也能迅速找到对手的破绽一击即中。就像在编程过程中,一些技术大牛在学习区块链、React 前端框架这样的新技术时,一两天就学会了,而普通程序员还在询问“最新的技术、语言、标准是什么?”IT 行业里,新的技术、语言以及开发平台层出不穷,你的学习能力和学习速度,对你未来的成长空间起着至关重要的作用。强大的学习能力和快速的学习速度,前提条件一定是基础能力过硬,“内功”到位。当你掌握计算机科学领域的核心原理,修炼了深厚的“内功”之后,你会发现,万变不离其宗,那些看似很新的技术,其实一点儿都不“新”,快速学习新的技术、语言、标准,根本不成问题。那程序员究竟要修炼哪些“内功”呢?无外乎是大学中的基础课程,操作系统、计算机网络、编译原理,以及计算机科学领域最重要的基石之一——数据结构与算法。语言只是工具,算法才是代码的灵魂,是一切编程活动的核心。想写出性能良好的代码,提高编程效率,从普通程序员成长为优秀的工程师,必须掌握算法。想写出被广泛使用的开源框架,提升自己的技术影响力,就要有扎实的算法功底。尤其重要的是,算法是国内外一线互联网公司在面试中的必考知识点。一流的互联网公司,常常在面试中通过数据结构和算法考察候选人的“内功”,硅谷的互联网公司们,更是从电话面试就开始考察候选人的算法了。他们不在乎你用什么语言,知不知道某一门技术,熟不熟悉当前热门的技术词汇,而是更加关注你的编程内功,因为“内功”才是你个人能力的本源。我是覃超,曾在 Facebook 做工程师,作为 Facebook Messenger Tech Lead,参与了 Facebook App、Facebook Messenger、Facebook Phone 等产品的研发工作。在 Facebook 的 3 年时间里,我面试过数百位技术人,对于算法面试的考察点和应对方式有丰富的第一手经验。据我了解,很多程序员曾经在大学里学过算法,却没有充分重视起来,错失了系统学习的机会;很多人半路出家,没有进行过专门的算法学习和训练,别人快速学习最新的技术时只能望洋兴叹;也有很多人,一直停留在“复杂度、数组、链表”,在“动态规划”的大山面前连脚都抬不起来。对于这些基础薄弱、算法知识体系不完善的同学,即使学习了一些算法知识点,练习了一些算法题,但在自己练习过程中,刷题还是很慢,也很难形成解题思路。如果你也是这样,说明你确实缺乏系统的知识体系以及持续的刻意练习。像数据结构和算法这样的计算机基础课程,一定要有科学的学习路径和持续、有指导的刻意练。