前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[第30期] 我们为什么要关注数据结构和算法

[第30期] 我们为什么要关注数据结构和算法

作者头像
皮小蛋
发布2020-03-02 10:50:39
4440
发布2020-03-02 10:50:39
举报
文章被收录于专栏:前端皮小蛋前端皮小蛋

背景

有句俗话说的话:时刻准备着。

最近准备再系统的复习下数据结构和算法这一块, 昨天发了这一块的第一篇文章:[第28期] 回顾一下常见的链表操作

发文当晚, 郑伊健找到我说:

本来没打算这篇文章, 但是想了一下, 还是觉得应该写一下。

不知道有多少人抱着和郑伊健一样的想法。

极客时间的王争说的很好:

你是不是觉得数据结构和算法,跟操作系统、计算机网络一样,是脱离实际工作的知识?

可能除了面试,这辈子也用不着?尽管计算机相关专业的同学在大学都学过这门课程,甚至很多培训机构也会培训这方面的知识,但是据我了解,很多程序员对数据结构和算法依旧一窍不通。

还有一些人也只听说过数组、链表、快排这些最最基本的数据结构和算法,稍微复杂一点的就完全没概念。

当然,也有很多人说,自己实际工作中根本用不到数据结构和算法。

所以,就算不懂这块知识,只要 Java API、开发框架用得熟练,照样可以把代码写得“飞”起来。

事实真的是这样吗?今天我们就来详细聊一聊,为什么要学习数据结构和算法。

想要通关大厂面试,千万别让数据结构和算法拖了后腿。

很多大公司,比如 BAT、Google、Facebook,面试的时候都喜欢考算法、让人现场写代码。

有些人虽然技术不错,但每次去面试都会“跪”在算法上,很是可惜。那你有没有想过,为什么这些大公司都喜欢考算法呢?

校招的时候,参加面试的学生通常没有实际项目经验,公司只能考察他们的基础知识是否牢固。社招就更不用说了,越是厉害的公司,越是注重考察数据结构与算法这类基础知识。

相比短期能力,他们更看中你的长期潜力。

你可能要说了,我不懂数据结构与算法,照样找到了好工作啊。那我是不是就不用学数据结构和算法呢?

当然不是,你别忘了,我们学任何知识都是为了“用”的,是为了解决实际工作问题的,学习数据结构和算法自然也不例外。

业务开发工程师,你真的愿意做一辈子 CRUD 吗?

如果你是一名业务开发工程师,你可能要说,我整天就是做数据库 CRUD(增删改查),哪里用得到数据结构和算法啊?

是的,对于大部分业务开发来说,我们平时可能更多的是利用已经封装好的现成的接口、类库来堆砌、翻译业务逻辑,很少需要自己实现数据结构和算法。但是,不需要自己实现,并不代表什么都不需要了解。

如果不知道这些类库背后的原理,不懂得时间、空间复杂度分析,你如何能用好、用对它们?

存储某个业务数据的时候,你如何知道应该用 ArrayList,还是 Linked List 呢?调用了某个函数之后,你又该如何评估代码的性能和资源的消耗呢?

作为业务开发,我们会用到各种框架、中间件和底层系统,比如 Spring、RPC 框架、消息中间件、Redis 等等。

在这些基础框架中,一般都揉和了很多基础数据结构和算法的设计思想。

比如,我们常用的 Key-Value 数据库 Redis 中,里面的有序集合是用什么数据结构来实现的呢?

为什么要用跳表来实现呢?为什么不用二叉树呢?

如果你能弄明白这些底层原理,你就能更好地使用它们。

即便出现问题,也很容易就能定位。

因此,掌握数据结构和算法,不管对于阅读框架源码,还是理解其背后的设计思想,都是非常有用的。

在平时的工作中,数据结构和算法的应用到处可见。

我来举一个你非常熟悉的例子:

如何实时地统计业务接口的 99% 响应时间?

你可能最先想到,每次查询时,从小到大排序所有的响应时间,如果总共有 1200 个数据,那第 1188 个数据就是 99% 的响应时间。

很显然,每次用这个方法查询的话都要排序,效率是非常低的。

但是,如果你知道“堆”这个数据结构,用两个堆可以非常高效地解决这个问题。

以上。

总结

数据结构和算法, 就好比一个习武之人的内功,内功修炼到家了, 无论你学习什么招式, 语言也好, 框架也好,都不会有太大的难度。

学好了数据结构与算法,你看待问题的深度,解决问题的角度就会完全不一样。

因为这样的你,就像是站在巨人的肩膀上,拿着生存利器行走世界。数据结构与算法,会为你的编程之路,甚至人生之路打开一扇通往新世界的大门。

希望朋友们都能正确的看待数据结构和算法。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端皮小蛋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档