洋蔥

贪婪,找不到比这更好的词了,是件好事。

我们都知道,数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量你编写的算法代码的执行效率呢?这里就要用到我们今天要讲的内容:时间、空间复杂度分析。

其实,只要讲到数据结构与算法,就一定离不开时间、空间复杂度分析。而且,我个人认为,复杂度分析是整个算法学习的精髓,只要掌握了它,数据结构和算法的内容基本上就掌握了一半

复杂度分析实在太重要了,因此我准备用两节内容来讲。希望你学完这个内容之后,无论在任何场景下,面对任何代码的复杂度分析,你都能做到“庖丁解牛”般游刃有余。

阅读全文 »

你是否曾跟我一样,因为看不懂数据结构和算法,而一度怀疑是自己太笨?实际上,很多人在第一次接触这门课时,都会有这种感觉,觉得数据结构和算法很抽象,晦涩难懂,宛如天书。正是这个原因,让很多初学者对这门课望而却步。

我个人觉得,其实真正的原因是你没有找到好的学习方法没有抓住学习的重点。实际上,数据结构和算法的东西并不多,常用的、基础的知识点更是屈指可数。只要掌握了正确的学习方法,学起来并没有看上去那么难,更不需要什么高智商、厚底子。

还记得大学里每次考前老师都要划重点吗?今天,我就给你划划我们这门课的重点,再告诉你一些我总结的学习小窍门。相信有了这些之后,你学起来就会有的放矢、事半功倍了。

阅读全文 »

你是不是觉得数据结构和算法,跟操作系统、计算机网络一样,是脱离实际工作的知识?可能除了面试,这辈子也用不着?

尽管计算机相关专业的同学在大学都学过这门课程,甚至很多培训机构也会培训这方面的知识,但是据我了解,很多程序员对数据结构和算法依旧一窍不通。还有一些人也只听说过数组、链表、快排这些最最基本的数据结构和算法,稍微复杂一点的就完全没概念。

当然,也有很多人说,自己实际工作中根本用不到数据结构和算法。所以,就算不懂这块知识,只要Java API、开发框架用得熟练,照样可以把代码写得“飞”起来。事实真的是这样吗?

今天我们就来详细聊一聊,为什么要学习数据结构和算法。

阅读全文 »

你好,我是王争。从专栏上线到今天,足足有8个月的时间了。在这8个月里,我陪你一块完成了100篇正文和11篇加餐的学习。今天,我要正式地跟你说声再见了。

你可能知道,除了《设计模式之美》这个专栏,我还有另外一个专栏《数据结构与算法之美》。两个专栏加起来已经有10万多读者了。算法专栏一直稳居极客时间的TOP 1。设计模式专栏发布时间较晚,但上升势头很好,跻身TOP 10指日可待。当然,这不是什么了不起的成绩,也并非我一个人努力的结果。我说这些当然也不是为了炫耀。

成绩虽小,算不上成功,但起码称得上“成事(做成了一件事情)”。在这篇结束语里面,我打算结合我自己写专栏的经历,跟你聊一聊对人一生有很大影响的四样东西:机遇、方向、能力、努力,我觉得它们一起决定了你是否能“成事”。

阅读全文 »

在我们的职业生涯中,很少有机会可以从零开发一个项目,大部分都是接手别人的代码继续开发,或者做些维护性开发。而且,对于大部分业务系统来说,因为业务导向,需求倒逼,开发工期紧,团队往往都不是很重视代码质量,快速上线是第一要务。所以,很多团队的代码质量一般都不怎么高。埋坑无数、没有文档、也没有注释,代码读不懂、也不敢改,这对于新人来说,会非常苦恼。今天,我们就聊一聊,如何接手一坨烂业务代码,以及如在烂业务代码中的成长?

话不多说,让我们正式开始今天的内容吧!

阅读全文 »

加餐六中,我们讲到,对于程序员的编程能力,我们一般从数据结构和算法、设计模式这两个方面来考察。加餐六重点讲到了如何考察数据结构和算法,今天,我们重点讲讲,如何考察设计模式。

除此之外,很多人反映,在面试中被问到设计模式问题的时候,一般都没有什么思路,基本都是想到哪说到哪。今天,我就总结一下回答设计模式相关面试题的一些套路,希望能让你在今后的面试中有章可循。

话不多说,让我们正式开始今天的内容吧!

阅读全文 »

大学就像一个笼子,跑得快的人拖着笼子跑,跑得慢的人被笼子拖着跑,他们之间最大的差距,顶多只有笼子的长度那么大。但等到一毕业,笼门一打开 ,跑得快的人很快就把跑得慢的远远甩在后面。有人不到30岁就升到了阿里P8,有人35岁了还为拿个P7 Offer在拼命。

为什么几乎同样的起点、差不多的资质,有些人在职场发展得这么好,一路顺风顺水,而有些人却总是觉得怀才不遇,领导不行?今天,我们就来聊一聊,程序员怎么才能让自己走得更高、更远?

话不多说,让我们正式开始今天的内容吧!

阅读全文 »

我相信,很多程序员都已经意识到基础知识的重要性,觉得要夯实基础,才能走得更远,但同时对于如何将基础知识转化成开发“生产力”仍然有些疑惑。所以,你可能看了很多基础的书籍,比如操作系统、组成原理、编译原理等,但还是觉得很迷茫,觉得在开发中用不上,起码在平时的CRUD业务开发中用不上。

实际上,这些基础的知识确实很难直接转化成开发“生产力”,但并不代表就没有用,今天,我们聊一聊为什么要学习基础学科知识,以及基础学科知识是如何转化成“生产力”的?

话不多说,让我们正式开始今天的内容吧!

阅读全文 »

在招聘要求里,我们经常看到“要求候选人有扎实的编程能力”。在面试反馈中,我们也经常看到面试官用“编程能力很强”来评价候选人。那到底什么是编程能力呢?如何考察一个人的编程能力呢?又如何提高编程能力呢?今天,我们就编程能力这个话题展开聊一聊。

话不多说,让我们正式开始今天的内容吧!

阅读全文 »
0%