【话题】程序员普遍都缺乏数据结构和算法知识?你怎么看?

简介:

image
有人说,算法,先于计算机存在于世,比编程语言本身更为重要,语言只是工具,而算法才是灵魂。而程序就等于算法加数据结构。足以可见,想要在编程之路上走的更长远,数据结构与算法就是必须要掌握的基本功。

可是,“真实”的情况是什么样的呢?

尽管大学学过这门课程,甚至网上有很多学习资料,依旧对对数据结构和算法一窍不通?
只听说过数组、链表、快排这些最最基本的数据结构和算法,稍微复杂一点的就完全没概念?
数据结构和算法,跟操作系统、计算机网络一样,是脱离实际工作的知识?除了面试,可能这辈子也用不着?
就算不懂这块知识,只要Java API、开发框架用得熟练,照样可以把代码写得“飞”起来?

事实真的是这样吗?
为什么要学习数据结构和算法?
想要通关大厂面试,千万别让数据结构和算法拖了后腿
很多大公司,比如BAT、Google、Facebook,面试的时候都喜欢考算法、让人现场写代码。有些人虽然技术不错,但每次去面试都会“跪”在算法上,很是可惜。那你有没有想过,为什么这些大公司都喜欢考算法呢?

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

你可能要说了,我不懂数据结构与算法,照样找到了好工作啊。那我是不是就不用学数据结构和算法呢?当然不是。你别忘了,我们学任何知识都是为了“用”的,是为了解决实际工作问题的,学习数据结构和算法自然也并不例外,那么它实际工作中到底能起到多大的作用呢?

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

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

如果不知道这些类库背后的原理,不懂得时间、空间复杂度分析,你如何能用好、用对它们?存储某个业务数据的时候,你如何知道应该用ArrayList,还是LinkedList呢?调用了某个函数之后,你又该如何评估代码的性能和资源的消耗?
基础架构研发工程师,写出达到开源水平的框架才是你的目标!
现在互联网上的技术文章、架构分享、开源项目满天飞,照猫画虎做一套基础框架并不难。高手之间的竞争反而在细节。这些细节就包括,你用的算法是不是够优化,数据存取的效率是不是够高,内存是不是够节省等等,这些累积起来,就决定了一个框架是不是优秀。
对编程还有追求?不想被社会淘汰?就不要只是能写出凑合能用的代码!
为什么说初级程序员才比招式,高级程序员只看内功呢?

何为编程能力强?
是代码的可读性好、健壮?还是扩展性好?我觉得没法列,也列不全。但是,
如果你在一个成熟的公司,或者像BAT这样的大公司,面对的是千万级甚至亿级的用户,开发的是TB、PB级别数据的处理系统。性能几乎是开发过程中时刻都要考虑的问题。

一个简单的ArrayList、Linked List的选择问题,就可能会产生成千上万倍的性能差别。这个时候,数据结构和算法的意义就完全凸显出来了。一旦掌握数据结构和算法,你就会常常被它的强大威力所折服。之前你可能需要费很大劲来优化的代码,需要花很多心思设计的架构,现在很容易就可以解决了。

那么你觉得
1、数据结构和算法知识重要吗?

2、何为编程能力强?

3、对编程有怎么样的追求?打算怎样实现它?

目录
相关文章
|
19天前
|
存储 算法 关系型数据库
深入理解InnoDB索引数据结构和算法
1. **索引定义**:索引是提升查询速度的有序数据结构,帮助数据库系统快速找到数据。 2. **索引类型**:包括普通索引、唯一索引、主键索引、空间索引和全文索引,每种有特定应用场景。 3. **数据结构**:InnoDB使用B+树作为索引结构,确保所有节点按顺序排列,降低查询时的磁盘I/O。 4. **B+树特性**:所有数据都在叶子节点,非叶子节点仅存储索引,提供高效范围查询。 5. **索引优势**:通过减少查找数据所需的磁盘I/O次数,显著提高查询性能。 **总结:**InnoDB索引通过B+树结构,优化了数据访问,使得查询速度快,尤其适合大数据量的场景。
27 0
深入理解InnoDB索引数据结构和算法
|
23天前
|
存储 算法 Serverless
【C/C++ 数据结构】深入探索数据结构中算法复杂度:从C++和数学的视角
【C/C++ 数据结构】深入探索数据结构中算法复杂度:从C++和数学的视角
46 0
|
11天前
|
存储 算法 索引
【算法与数据结构】队列的实现详解
【算法与数据结构】队列的实现详解
|
15天前
|
算法
【算法与数据结构】二叉树(前中后)序遍历2
【算法与数据结构】二叉树(前中后)序遍历
|
21天前
|
存储 算法 Java
Java数据结构与算法-java数据结构与算法(二)
Java数据结构与算法-java数据结构与算法
62 1
|
11天前
|
算法 索引
【算法与数据结构】深入二叉树实现超详解(全源码优化)
【算法与数据结构】深入二叉树实现超详解(全源码优化)
|
11天前
|
存储 算法
【算法与数据结构】深入解析二叉树(二)之堆结构实现
【算法与数据结构】深入解析二叉树(二)之堆结构实现
|
15天前
|
算法 C语言
【算法与数据结构】 C语言实现单链表队列详解2
【算法与数据结构】 C语言实现单链表队列详解
|
15天前
|
存储 算法 C语言
【算法与数据结构】 C语言实现单链表队列详解1
【算法与数据结构】 C语言实现单链表队列详解
|
19天前
|
存储 算法 搜索推荐
【数据结构】排序算法
【数据结构】排序算法
27 3