你好,我是公瑾,很高兴我们来一起重学数据结构与算法。
工作以来,我一直专注于机器学习、深度学习等计算机领域算法的研发,算得上是国内首批从事 AI 工作的工程师,代码开发和优化过程让我不断加强了对数据结构、算法思想的理解。
想象一下,你在开发一个网站的用户系统。这个用户系统的功能之一是,对某个尝试登录用户的ID去核实是否合法,这就需要去存储着海量数据的数据库中查找这个ID。假设这个尝试登录用户的ID是lagou,一个可行的办法是,对数据库中的每个记录去匹配是否与lagou一致。然而,效率更高的方法是,预先对数据库中所有的数据按照字母顺序进行排序,接着就可以从有序数据的中间开始查找,去通过二分查找不断缩小查找范围。如果这个系统的注册用户只有不足16个,两种查找方式所花费时间的差异也许并不明显,无非就是16次匹配与log₂16 = 4次匹配的区别。但如果注册用户的数量达到了1000万,两种查找算法的效率可能就是1000万次和24次的区别了(log₂10000000 = 23.25)。
我认为,数据结构与算法至关重要,不仅是优秀工程师思考如何解决业务问题、高效稳定地支撑公司业务、体现自身核心价值的关键,而且是入职大厂的必考内容。快手、今日头条、阿里等大厂面试,一定会考查你的数据结构与算法掌握情况,因为对于大流量应用来说,高效的算法直接影响用户体验。
但是数据结构和算法的学习并不轻松,你往往会经历以下痛苦:
其实学习和实践数据结构与算法,是有方法的。 这正是我和拉勾教育合作设计这个课程的初衷。我希望帮助你摆脱盲目刷题与漫无目的地学习方式,更加高效地掌握数据结构与算法知识,真正掌握程序开发、代码优化的方法论,完成从掌握理论知识到解决实际问题的转变。
很多软件工程师都有进大厂的诉求,获得高薪 Offer,或者体验大厂的优质文化。但互联网的红利期早已过去,竞争也越来越激烈,“僧多粥少”的情况直接提高了面试“门槛”,诞生了“优秀工程师”的概念。
优秀的软件工程师必须具备过硬的代码开发能力,而这就体现在你对数据结构、算法思维、代码效率优化等知识的储备上,并直接反应在你工作中解决实际问题的好坏上。
比如,你要去开发某个复杂系统,如何才能围绕系统的复杂性去选择最合适的解决方案呢?一方面是对所用算法的选型,另一方面是对所用数据结构的选型,这都要求你对数据结构与算法有充分的理解和掌握。
但是 996、007 的互联网快节奏下,开发者普遍专注当下工作本身,并不追求极致的性能,一直在追语言,学框架,而忽视了数据结构与算法的学习和落地训练,基础知识储备不足,很难顺利做出最优的技术选择,从而导致开发的系统性能、稳定性都存在很多缺陷。
此外,面试中都要重点考察数据结构与算法知识,这是不争的事实。 一是因为代码能力不容易评估,而数据结构和算法的掌握情况相对可衡量;二是可以衡量工程师的基本功,以及逻辑思考能力。
我曾经有个海外名校毕业的应届生同事,他的计算机领域基础知识,尤其是数据结构和算法、机器学习、深度学习等基本功特别扎实,在面对陌生问题时往往能更快速地锁定问题,并根据已有知识去寻找解决方法。短短几个月后,他就从刚入职的小白转变为某些项目的负责人。所以说,基本功扎实的人潜力会非常大,取得业绩结果只不过是时间问题。
而据我所知,为了快速掌握数据结构与算法知识,或者提高代码能力,绝大多数的学生或候选人一定会通过公开的题库去刷题,却常常被那些千变万化的代码题搞得晕头转向、不明所以,浪费了大量时间和精力,得不偿失。
这并不是说刷题本身有错,而是应该掌握正确的方式方法。而且刷题只是形式,更重要的是掌握算法思维和原理,并用以解决实际的编码问题。
我经常说,真题实际上是刨除了特定场景和业务问题后,对于我们实际解决问题的方法的提炼。考核真题和刷题不是目标,还是要最终回归到能力培养上来。这也是这门课中,我要核心传达给你的内容。
我想,这可以从课程的特色与设计思路中很好地体现出来。
总结来说,这门课会从方法论、基础知识、真题演练、面试技巧这四个方面,为你提供成为优秀工程师的完整路径,具体包括以下五部分内容。
如果你是以下用户,那么本课程一定适合你:
数据结构与算法知识虽然庞杂、难懂,但却是编码能力的核心体现,不仅是技术面试的高频考点,更是高级 IT 工程师的必备技能,适用面非常广泛。在竞争越来越激烈的今天,我们经常说一个人的底层能力,决定了他能走多远,希望这个课程能够帮你打好基础。
最后,我想再说一句,即使你身处中小型企业,如今的精细化管理也在更多地讲究效率和质量。成为核心骨干的一个先决条件,就是准确的技术选型和扎实的代码基础,而这最基本的条件是要掌握算法思维和数据结构原理,这是代码开发和优化的方法论,是用以解决实际编码问题的精髓所在,也是这门课核心要传达的内容。
另外,被动阅读只能掌握 50%,我希望你能够在学习的过程中多动手练习和实践,真正达成内化吸收的闭环。你也可以寻找一起学习的伙伴,在留言区分享你的学习思考、动手实践的小成就,通过不同的动作来坚持学习的过程。OK,课程开始了,你准备好了吗?
© 2019 - 2023 Liangliang Lee. Powered by gin and hexo-theme-book.