我阅读和研究了关于 Sharp 的文献,现在看来我已经达到了我想学习更多东西而不是关于 hello word 的水平,我想学习数据结构,这方面的问题是知识在这方面有多大用处这个话题是,他们在面试中问他们的频率,要注意什么,熟悉这些结构是否足够,或者您需要在类型级别上了解才能坐下来写,例如队列,或者了解堆栈的工作原理就足够了(确切地说它是如何拥有所有东西的)。
我阅读和研究了关于 Sharp 的文献,现在看来我已经达到了我想学习更多东西而不是关于 hello word 的水平,我想学习数据结构,这方面的问题是知识在这方面有多大用处这个话题是,他们在面试中问他们的频率,要注意什么,熟悉这些结构是否足够,或者您需要在类型级别上了解才能坐下来写,例如队列,或者了解堆栈的工作原理就足够了(确切地说它是如何拥有所有东西的)。
这是很难给出合理答案的问题之一,因为每个人的经历都不一样。一个人会说数据结构很重要,另一个人会说我们生活在一个需要在 JS 上铆接表单的世界,而所有这些都是额外的知识。
就个人而言,我赞成研究数据结构。参考四十年前出版《算法与数据结构》一书的 Wirth,我想说结构应该与算法一起研究。
作为一个理由,我将给出几个考虑因素。
首先,该行业长期以来一直存在摩尔定律,该定律指出计算机能力平均每两年翻一番。它涉及某个技术细节,但一般来说,它对应于 RAM 的数量、处理器的整体性能和磁盘空间。这导致了这样一个事实,即大约每 5 到 10 年,权力增长得如此之快,以至于范式发生了巨大变化。
在 80 年代后期,对于当时的个人计算机(XT 和 AT)来说,即使是 C++ 也似乎过于占用资源。然而,几年后,当每个人拥有 386 台个人计算机时,内存和性能证明足以用于间接调用和虚拟函数表。
而在 90 年代后期,事实证明垃圾收集和字节码在普通硬件上工作不再那么慢,Java 突如其来,紧随其后的是 C#。对于我们程序员来说,这意味着需要不断地学习。你打算在这个行业呆多久,所以你必须学习新东西。在这种情况下,关于内核的问题出现了,关于在任何地方都可以使用的东西。
算法和数据结构是基础知识之一,了解这些知识可以让您快速转向新技术。它们不会因语言而异。通常,一门新语言有一个标准库,您不必学习它,因为您已经知道那里有哪些数据结构以及可以用它们做什么。
第二个考虑与需求有关。似乎这项工作原则上不再需要数据结构。这甚至是真的,因为在现代工业中,有大量的任务,高中或职业学校的知识就足够了(我们没有教授程序员的职业学校,但在国外你已经可以获得程序设计二级特殊文凭)。
与此同时,这个真理还有另一面:有时你会遇到需要思考和发明的艰巨任务。数学家和统计学家 N. N. Taleb 写了几本关于黑天鹅概念的书,你可能听说过。黑天鹅是这样一个意想不到的事件,后果很严重。在我们的例子中,这是一个不常见的任务,但是,解决这个问题非常重要。
为了解决这些问题,通常需要一个基础,其中当然包括算法和数据结构。
因此,数据结构的研究如果不是在短期内,那么在未来十年内就会有所回报。
学习的深度可以不同。可能没有必要实现所有的结构和所有的算法,但最有趣或最复杂的那些是很有可能的。
数据结构和其他基本知识的知识至少允许:
这不是全部列表,而只是最重要的。所以,研究这些东西给程序员带来了非常实实在在的利润。