1.开篇词

像区块链、人工智能这些看似很新的技术,其实一点儿都不“新”。把基础的知识都学透了。
当面临行业变动、新技术更迭的时候,那些所谓的新技术,核心和本质的东西其实就是当初学的那些知识。

要想快速做出点事情,前提条件一定是基础能力过硬,“内功”要到位。

基础知识:操作系统、计算机网络、编译原理、数据结构和算法等。

为什么学习数据结构与算法?
1.想要通关大厂面试,千万别让数据结构和算法拖了后腿
校招的时候,参加面试的学生通常没有实际项目经验,公司只能考察他们的基础知识是否牢固。越是厉害的公司,越是注重考察数据结构与算法这类基础知识。相比短期能力,
他们更看中你的长期潜力。
2.业务开发工程师,你真的愿意做一辈子 CRUD boy 吗?
如果不知道这些类库背后的原理,不懂得时间、空间复杂度分析,你如何能用好、用对它们?存储某个业务数据的时候,你如何知道应该用 ArrayList,
还是 Linked List 呢?调用了某个函数之后,你又该如何评估代码的性能和资源的消耗呢?
3.基础架构研发工程师,写出达到开源水平的框架才是你的目标!
你用的算法是不是够优化,数据存取的效率是不是够高,内存是不是够节省等等。这些累积起来,决定了一个框架是不是优秀。
4.对编程还有追求?不想被行业淘汰?那就不要只会写凑合能用的代码!
有的人写代码的时候,从来都不考虑非功能性的需求,只是完成功能,凑合能用就好;做事情的时候,也从来没有长远规划,只把眼前事情做好就满足了。
我曾经面试过很多大龄候选人,简历能写十几页,经历的项目有几十个,但是细看下来,每个项目都是重复地堆砌业务逻辑而已,完全没有难度递进,看不出有能力提升。
久而久之,十年的积累可能跟一年的积累没有任何区别。
如果你在一家成熟的公司,或者 BAT 这样的大公司,面对的是千万级甚至亿级的用户,开发的是 TB、PB 级别数据的处理系统。性能几乎是开发过程中时刻都要考虑的问题。
一个简单的 ArrayList、Linked List 的选择问题,就可能会产生成千上万倍的性能差别。这个时候,数据结构和算法的意义就完全凸显出来了。
如何系统高效学习数据结构与算法?
数据结构就是指一组数据的存储结构。算法就是操作数据的一组方法。
数据结构是为算法服务的,算法要作用在特定的数据结构之上。
数据结构是静态的,它只是组织数据的一种方式。如果不在它的基础上操作、构建算法,孤立存在的数据结构就是没用的。

学习重点:
首先要掌握一个数据结构与算法中最重要的概念——复杂度分析。
结合我自己的学习心得,还有这些年的面试、开发经验,我总结了20 个最常用的、最基础数据结构与算法,不管是应付面试还是工作需要,只要集中精力逐一攻克这 20
个知识点就足够了。
这里面有 10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树
10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法
在学习数据结构和算法的过程中,你也要注意,不要只是死记硬背,不要为了学习而学习,而是要学习它的“来历”“自身的特点”“适合解决的问题”以及“实际的应用场景”

学习方法:
1. 边学边练,适度刷题
可以“适度”刷题,但一定不要浪费太多时间在刷题上。我们学习的目的还是掌握,然后应用。
2. 多思考,多查阅、多笔记
3. 打怪升级学习法
我们在枯燥的学习过程中,也可以给自己设立一个切实可行的目标
4. 知识需要沉淀,不要想试图一下子掌握所有
先把这些基础的数据结构和算法,还有学习方法熟练掌握后,再追求更高层次。



posted on 2019-02-20 12:22  wzc521  阅读(80)  评论(0)    收藏  举报

导航