“重走取经路,必定伴随着艰难,但艰难过后是突破”
上一篇文章谈到字节跳动让我开始重走取经路,确实挺热血沸腾的,想着之前基础不错,应该再走的话还是比较轻松的,但实际上再进行时却阻力比较大。刚开始我陷入了自我怀疑,觉得我的能力是不是完全丧失了,之前的经历是不是都打水漂了。但随着学校的数据结构与算法的不断深入,我发现了之前的学习方式存在的弊端,更全面地去看待了算法编程的学习。
在之前学习过程中,过于注重应用,甚至偏向于背模版,加之C++各种库比较完善,中学确实在信息学上的时间很难充足,以及彼时阅历尚浅,学习方法也确实不成熟,所以导致存在两大方面的缺陷:一方面是很多算法只停留在机械记忆和依葫芦画瓢的无脑应用,并未对其原理钻研洞悉;另一方面是就算法论算法,甚至同一类算法下就题论题,基本未关注不同算法、一种算法不同应用的横向联系。
对于第一方面,有点像当今的市面上一些大语言模型,询问最最基本的算法题目尚且可以,但是再问一些偏工程和变形的题目之后,比较明显地能看出是生搬硬套,也经常出现错误。
对于第二方面,会让学习越学越痛苦。刚开始,知识还少,也还能应付,但随着难度加大,题目的变换性越大,如果还是把每一道题看成孤立的整体,··不仅仅效率低,也会因为庞杂的题海而望洋兴叹,畏葸不前,甚至放弃。
对于第一方面问题,首先当然要去深入了解算法背后的原理,好好去读一下,不要急于求成,短视地就想马上把眼前这道题写开。同时,对于一些题,尽量使用不同方法去实现,比如用递归和非递归的方式去实现。
对于第二方面问题,需要有意识地把每道题抽象化,逐步拉起关系网。(这个问题其实是DFS和BFS诱导出我的,之前很吃一段时间竟然从未相关他俩有啥区别和联系,而简简单单套模版去糊里糊涂地去做)
总之,认识到问题就是好的,是学习的必经过程,可能是因为理解力以及未有合适前人之路,所以意识到这个问题时有些晚,不过好歹终于撕开了一个之前算法编程学习黑墙上的一个口子,至于能不能真正突破就看之后的行动了。