跳转至

结束语 日拱一卒,功不唐捐

你好,我是王健伟。

备课备稿近两年,编辑、录制稿件近4个月,终于要和你说再见了。我也借着这个机会,和你分享一些体会和心得,希望能给你带来一些帮助。当然了,这是基于我的经验出发的,你具体的收获如何,就要在这趟学习之旅结束时自行总结了,也许我们会有一些共鸣。

什么是数据结构与算法?

我们先回想一下,什么是数据结构与算法?

数据结构研究的是数据之间的组织结构。数据组织结构不同,存取效率就会产生巨大差异,所以需要对数据进行组织。而算法是操作数据解决特定问题的求解步骤和方法。

发现了吗?数据结构和算法是学习了基本的编程语言,有一定的编程能力后才开始学的一门课程。

有人说数据结构与算法是内功,是基本功。其实这方面知识算不得什么内功、基本功。有些基本的数据结构比如栈、链表、队列等等,这些数据结构有怎样的适用场合,怎样使用效率才会更高等等这些事,你确实需要简单知道一下。但是,把这些知识学得通透,写大一点的项目却到处是bug的人也很多。

有人说学习数据结构和算法能提升逻辑思维、能写出性能更好的程序、能更好地体现自己的能力。这确实有一定的道理,但不是只学好这门课就能达到这些效果,数据结构与算法只是提升逻辑思维,写出更好程序中平平无奇的一环。

所以,掌握数据结构和算法相关的知识对自己日后的开发之路有一定好处,但并没有你想象的那么大。对数据结构与算法的执念更多的还是在于应付面试,进大厂。一般来讲,大厂愿意考数据结构和算法知识,而小公司比较少考数据结构与算法知识,反而更注重业务开发能力。如果你没有这样的目标,那为什么不能放松下来,以更平和的心态开始学习呢?

数据结构与算法重要吗?

那么数据结构与算法方面的知识重不重要?重要,也不重要。

说它重要,是因为很多领域确实都需要这方面的知识,比如游戏编程、图形学、操作系统、编译器、人工智能、搜索引擎、文件压缩、电子货币等等。

说它不重要,是因为它对于你不重要,因为这些需要用到算法知识去解决问题的领域,基本你都不会去涉及。

除了一些比较特殊的岗位,比如算法岗、人工智能岗,大多数开发人员在实际工作中都极少用到数据结构和算法知识。很多数据结构和算法方面的内容都被包装到了一些调用接口中去,根本不需要你亲自去实现,你只需要直接使用这些接口就好。况且,自己实现的基本上也不太可能比现成的接口实现得更好。比如C++开发里经常会用到C++标准库里的各种功能,C++标准库里的各种容器经常用到的栈、队列、树等等这些数据结构,当然,还有各种各样的算法,比如排序、查找等。

可以说,数据结构与算法的知识不是不重要,而是对你可能不重要。

真的要投入大量时间刷题吗?

每次谈到数据结构与算法,很多同学都会联想到面试和刷题,这里也说说我的看法。

不知道从什么时候开始,有些人把大量刷Leetcode等网站上的算法题当作一种习惯。

在我看来呢,刷算法题会占用你大量的时间。况且,有很多实际工作生活中需要用到算法的地方,即便数据结构和算法学得不错,也刷了大量的算法题,但还是解决不了。当遇到问题真需要你去解决的时候,其实还是要专门去找资料,专门花大量时间去研究。

算法无限,而人的生命终究有限,是不是?如果一定要刷题,那一定是你要去某个公司面试的时候。只要在网上搜索一下这个公司以往面试曾经出过的数据结构与算法题,有针对性地刷一刷就行了。毕竟,刷题的主要目的还是面试,基本上你的实际工作中都用不到它们。

我甚至不建议你把大量时间投入在这门课程的细节中,只要学一遍这门课程,将来面试时再复习一遍即可。你掌握的知识永远都是很少的一部分,这没关系,只要达成阶段性的目标就够了。

如何学习数据结构与算法?

很多同学在课程更新的过程中,都问过我怎么学习数据结构与算法比较好?有没有书单推荐?计算机的世界里是有非常非常多的经典书籍的,我自己也看过不少,但在学习某方面知识这件事上,我觉得如果有个人对我说“你只需要看这个这个就可以了”,我反倒会非常感激。因为他在为我节省最宝贵的东西——时间。

所以我把数据结构与算法知识的学习方法总结成了两点。

  1. 想要掌握基本的数据结构与算法,这门课中所包含的知识足够了。
  2. 现用现学,遇到了具体需要用某些算法解决的问题,现找资料现研究即可。这也是我们从事IT行业的一个常态。

最后我想说,这门课程我付出了很多心血来备课、研究、写实现代码,就是希望自己先把路走一遍,把坑填一遍,让大家学起来更简单、更容易。在学习的过程中,希望你不要死记硬背代码,在理解的基础上适当记忆就可以了。不要时常想着手撕一个某某算法,学海无涯,最终我们还是要回归自己的目标和需求。

而学习也是一个循序渐进的过程,切忌心急。正像我们的标题——日拱一卒,功不唐捐。如果有一天你成长为技术领域的专家,而恰好我们在这门课中同行过一段时间,那我的目标也就达成了。祝你工作顺利,我们江湖再见!