数据结构与算法之美
王争
前 Google 工程师
283750 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 81 讲
基础篇 (38讲)
数据结构与算法之美
15
15
1.0x
00:00/07:32
登录|注册

开篇词 | 从今天起,跨过“数据结构与算法”这道坎

讲述:冯永吉大小:6.90M时长:07:32
分析开源项目和系统设计问题
数据结构和算法在实际软件中的应用
强化算法思维和逻辑思维
不常用的数据结构和算法
结合实际开发案例讲解
基础的数据结构和算法
复杂度分析技巧
时间、空间复杂度分析
实战篇
高级篇
基础篇
入门篇
快速学习和成功的秘诀
掌握核心和本质的东西
真实的开发场景
数据结构与算法
编译原理
计算机网络
操作系统
专栏帮助跨过坎并掌握学习方法
基础知识过硬是前提条件
数据结构与算法是必须跨过的坎
递进的学习模块
基础课程的重要性
大学基础课程
基础知识是快速学习的秘诀
基础知识决定技术人的能力
基础知识是技术高度的地基
进入Google从事开发工作
编程能力和算法能力提升
阅读大量数据结构和算法书籍
对算法产生迷恋
师兄推荐《算法导论》
本科毕业时编程水平差
跨过数据结构与算法的坎
王争的专栏设计
技术人需要修炼的内功
基础知识的重要性
王争的经历
数据结构与算法

该思维导图由 AI 生成,仅供参考

你好,我是王争,毕业于西安交通大学计算机专业。现在回想起来,本科毕业的时候,我的编程水平其实是很差的。直到读研究生的时候,一个师兄给了我一本《算法导论》,说你可以看看,对你的编程会很有帮助。
没想到,从此我对算法的“迷恋”便一发不可收拾。之后,我如饥似渴地把图书馆里几乎所有数据结构和算法书籍都读了一遍。
我常常边读边练。没多久,我就发现,写代码的时候,我会不由自主考虑很多性能方面的问题。我写出时间复杂度高、空间复杂度高的垃圾代码越来越少了,算法能力提升了很多,编程能力也有了质的飞跃。得益于此,研究生毕业后,我直接进入 Google,从事 Google 翻译相关的开发工作。
这是我自己学习数据结构与算法的经历,现在,你可以想想你的情况。
是不是从学校开始,你就觉得数据结构难学,然后一直没认真学?
工作中,一遇到数据结构这个坑,你又发自本能地迅速避让,因为你觉得自己不懂,所以也不想深究,反正看起来无关大局?
当你想换工作面试,或者研究某个开源项目源码,亦或者和团队讨论某个非框架层面的高可用难题的时候,你又发现,自己的基础跟不上别人的节奏?
如果你是这种情况,其实你并不孤独,这不是你一个人遇到的问题。工作十年间,我见过许多程序员。他们有着各种各样的背景,有很多既有潜力又非常努力,但始终无法在自己现有水平上更进一步。
在技术圈里,我们经常喜欢谈论高大上的架构,比如高可用、微服务、服务治理等等。鲜有人关注代码层面的编程能力,而愿意沉下心来,花几个月时间啃一啃计算机基础知识、认认真真夯实基础的人,简直就是凤毛麟角。
我认识一位原来腾讯 T4 的技术大牛。在区块链大潮之前,他在腾讯工作了 10 多年,长期负责手机 QQ 后台整体建设。他经历了手机 QQ 从诞生到亿级用户在线的整个过程。后来他去了微众银行,有一天老板让他去做区块链。他用了不到半年时间,就把区块链的整个技术脉络摸清楚了。 现在,他是微众银行的区块链负责人,微众科技创新产品部的老总。你说厉害不?你可以花半年时间就能精通一个新的领域吗?为什么他就可以做到?
我觉得这其中最重要的就是基础足够扎实。他曾经跟我说,像区块链、人工智能这些看似很新的技术,其实一点儿都不“新”。最初学编程的时候,他就把那些基础的知识都学透了。当面临行业变动、新技术更迭的时候,他不断发现,那些所谓的新技术,核心和本质的东西其实就是当初学的那些知识。掌握了这个“规律”之后,他学任何东西都很快,任何新技术都能快速迎头赶上。这就是他快速学习并且获得成功的秘诀。
所以说,基础知识就像是一座大楼的地基,它决定了我们的技术高度。而要想快速做出点事情,前提条件一定是基础能力过硬,“内功”要到位
那技术人究竟都需要修炼哪些“内功”呢?我觉得,无外乎就是大学里的那些基础课程,操作系统、计算机网络、编译原理等等,当然还有数据结构和算法。
可是,我们都知道,像《算法导论》这些经典书籍,虽然很全面,但是过于理论,学起来非常枯燥;而市面很多课程大多缺失真实的开发场景,费劲学完感觉好像还是用不上,过不了几天就忘了。
所以,我尝试做一个让你能真正受用的数据结构与算法课程,希望给你指明一个简洁、高效的学习路径,教你一个学习基础知识的通用方法 。那么,关于专栏内容,我是怎样设计的呢?
我根据自己研读数十本算法书籍和多年项目开发的经验,在众多的数据结构和算法中,精选了最实用的内容进行讲解。
我不只会教你怎么用,还会告诉你,我们为什么需要这种数据结构和算法,一点点帮你捋清它们背后的设计思想,培养你举一反三的能力。
对于每种数据结构和算法,我都会结合真实的软件开发案例来讲解,让你知道,数据结构和算法,究竟应该如何应用到实际的编码中。
为了由浅入深地带你学习,我把专栏分成四个递进的模块。
入门篇
时间、空间复杂度分析是数据结构和算法中非常重要的知识点,贯穿整个专栏的学习过程。但同时也是比较难掌握的,所以我用了 2 节课来讲这部分内容,而且还举了大量的实例,让你一边学一边练,真正能掌握复杂度分析,为后面的学习铺路。
我希望通过这一模块,你能掌握时间、空间复杂度的概念,大 O 表示法的由来,各种复杂度分析技巧,以及最好、最坏、平均、均摊复杂度分析方法。之后,面对任何代码的复杂度分析,你都能游刃有余、毫不畏惧!
基础篇
这部分是专栏中篇幅最大的内容,也是我们学习的重点,共有 26 节内容,涵盖了最基础、最常用的数据结构和算法。针对每种数据结构和算法,我都会结合具体的软件开发实例,由浅入深进行讲解,并适时总结一些实用“宝典”,保证你印象深刻、学有所用。
比如递归这一节,我会讲到,为什么递归代码比较难写?如何避免堆栈溢出?如何避免递归冗余计算?如何将递归代码转化为非递归代码?
高级篇
这部分我会讲一些不是那么常用的数据结构和算法。虽然不常用,但是这些内容你也需要知道。设置这一部分的目的,是为了让你开拓视野,强化训练算法思维、逻辑思维。如果说学完基础部分可以考 80 分,那掌握这一部分就能让你成为尖子生!
实战篇
我们整个专栏都是围绕数据结构和算法在具体软件实践中的应用来讲的,所以最后我会通过实战部分串讲一下前面讲到的数据结构和算法。我会拿一些开源项目、框架或者系统设计问题,剖析它们背后的数据结构和算法,让你有一个更加直观的感受。
人生路上,我们会遇到很多的坎。跨过去,你就可以成长,跨不过去就是困难和停滞。而在后面很长的一段时间里,你都需要为这个困难买单。对于我们技术人来说,更是这样。既然数据结构和算法这个坎,我们总归是要跨过去,为什么不是现在呢?
我很感激师兄当年给我的那本《算法导论》,这是我人生中为数不多的转折点之一。没有那本书,也可能就没有今天的我。我希望这个专栏也能成为你的一个人生转折点。
我希望,通过这个专栏,不仅能帮你跨过数据结构与算法这个坎,还能帮你掌握一种学习知识和技能的方法,帮你度过职场甚至人生的重要时刻!一起加油吧!
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

技术大牛王争分享了他在数据结构与算法学习上的经历,强调了基础知识对技术人员的重要性。他提到了自己的学习方法和专栏内容设计,包括时间、空间复杂度分析、基础数据结构和算法、高级内容以及实战应用。王争鼓励读者跨越数据结构与算法这一技术坎,并希望通过专栏帮助读者掌握学习知识和技能的方法。他强调基础知识是技术高度的决定因素,而快速学习和成功的秘诀在于扎实的基础。王争的专栏旨在帮助读者掌握数据结构与算法,提升编程能力,以及度过职场和人生的重要时刻。

2018-09-171507人觉得很赞给文章提建议

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《数据结构与算法之美》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(919)

  • 最新
  • 精选
  • 置顶
    关注「极客时间」服务号,回复关键词「算法」,提前获取专栏学习思维脑图。
    2018-09-19
    3
    38
  • LAMBO
    置顶
    早上车系列。 早点把基础学好学深,就能更快地写出更好的代码,就能更早走上人生巅峰。 期待大神的点拨。
    2018-09-18
    30
  • YJ、
    置顶
    作为程序员,学习就是我的使命。
    2018-09-17
    4
    191
  • shupian418
    置顶
     作者回复 迈不过去你找我退钱 冲这句话,我相信这么有信心的作者!
    2018-09-17
    18
    973
  • #仙豆
    置顶
    课程用的什么语言?

    作者回复: 不限语言 java go python 甚至javascript都可以

    2018-09-17
    9
    41
  • 笑容
    置顶
    算法需要有高等数学基础吧

    作者回复: 实际上 初中就够了 搞信息学竞赛的都是些初中生

    2018-09-17
    5
    84
  • 动物园园长
    置顶
    有两个问题想咨询一下:1、编程语言基础:只会简单的python语言,练习课程中的练习基础够不够? 2、能否大致讲一下学习这门课程的思路?是否有必要将所有练习都全部一一用语言实现一遍?

    作者回复: 你问的很到位 后面01 02会详细讲这个专栏怎么学 简单python会就够了 很多大学生学这门课的时候根本不会编程 照样也学了

    2018-09-17
    2
    80
  • Leung
    置顶
    请问,每一节都会有相应的材料输出吗?

    作者回复: 材料输出你是指?每节课开篇都有思考题 课后还有思考题 内容也结合实际的软件开发场景来讲

    2018-09-17
    3
    10
  • 小盖
    置顶
    9 月 21 日起正式更新,更新时间为每周一三五。
    2018-09-17
    138
  • glenny
    上车,希望这次能迈过这个坎儿

    作者回复: 迈不过去你找我退钱

    2018-09-17
    7
    519
收起评论
显示
设置
留言
99+
收藏
99+
沉浸
阅读
分享
手机端
快捷键
回顶部