【问题标题】:Is knowledge of data structures required for a Sr .net developer? [closed]Sr .net 开发人员需要数据结构知识吗? [关闭]
【发布时间】:2010-10-02 13:19:59
【问题描述】:

前几天我在看一个招聘信息,很惊讶地看到了这个要求。 "了解标准数据结构(b-tree、链表、散列)和标准算法(排序、合并、b-search)"

主要要求是 .NET 3.5,但 C# UI 程序员。我在大学时研究过它们,但从未有机会实施它们。

你们中有多少人编写了不使用 .net 类进行排序或搜索的代码?既然有这么多 .net 类可用,为什么 Sr.net 开发人员还要关心这些数据结构和算法?

【问题讨论】:

  • 当您不知道其内部数据结构之间的差异时,如何从众多 .NET 类中选择正确的一个? ...但是这个问题可能过于主观和争论不休,无法在这里回答。

标签: c# .net asp.net windows


【解决方案1】:

当您不了解手头有哪些工具时,您将如何决定如何最好地解决问题?是的,高级程序员当然必须了解这些基础知识(在我的书中,您列出的所有内容都是每个程序员都需要了解的基础知识)。

高级程序员的工作(也)是做出决定,尤其是在设计方面。在不知道您有哪些选择的情况下,您无法做出这些决定。

即使您打算“只是”在余生中只进行 UI 编程,您也需要了解这些内容。例如,您需要了解什么是树以及它是如何工作的:您的视图层次结构就是其中之一。您将需要对数据进行排序以将其呈现给您的用户,因此如果数据非常大,您需要知道哪种排序算法适合该工作,或者如何将其转换为适当的结构(哪个?)以使 UI 简洁和/或不使用大量内存。

【讨论】:

  • 完全不同意。从事 .net 工作的 ui 程序员应该使用列表和字典,仅此而已。他们不需要知道如何实现树,如果他们想排序,他们应该在他们的集合上使用 .Sort 方法。处理大型数据集应该在您使用 UI 之前进行,并且只应在需要时进行。了解 .net 集合 API 至关重要,了解它们的实现方式完全不适用于 UI 工作。
  • 是的,他应该使用 .NET 类,我不主张他应该自己实现它们或类似的东西。但他应该了解它们背后的基础知识。他应该何时使用数组、集合或映射来为手头的任务获得最佳性能。让我们面对现实吧:有多少 UI 程序员只严格处理 UI 而没有其他事情?使用 MVC 模型时,您还必须编写控制器并处理模型提供的数据。了解如何最好地做到这一点很重要。特别是对于一个高级
  • 强烈同意。实现这种数据结构的要求非常罕见(尽管我发现自己实现了 DAWG 和尝试,因为没有 DAWG 或 trie 结构,以及那些存在的无锁版本,这种情况并不经常出现),但是需要了解数据结构的基本知识才能知道在哪种情况下使用哪个。如果没有这些知识,高级职员就没有希望做好自己的工作。
  • -1。空洞的咆哮。它不是在谈论设计模式或 OOP。这是多年前在框架中实现的 b 树和算法。我们可以学到很多东西,更好地了解我们将要使用的东西。
  • @Aliostad,如果您不了解这些基础知识,您将如何学习任何东西。我们不是在谈论某种晦涩的 CS 想法(我从未正式学习过计算机科学),我们谈论的是基础知识,没有这些基础知识人们将不知道如何做一件简单的事情,比如选择要使用的容器在特定情况下。
【解决方案2】:

“知识”并不一定意味着“实施”。你知道大“O”吗?

我不得不用旧语言实现其中的几个数据结构和算法。我已经在 C# 中实现了一些作为智力练习。有些在 .NET Framework 中不可用(我认为是黑色/红色树),但代码在网络上很容易获得。大多数时候,我只需要知道性能 BigO() = 1, n, n*m, n^2, n^m, 2^n, log n 等。

高级开发人员必须了解他选择的数据结构的性能。我看过“先生”在工作“完成”之前,开发人员并不关心。这样的发展一般不会规模化。

【讨论】:

    【解决方案3】:

    有多少?没有。

    要求(很可能来自投资银行)可能只是为了测试候选人的科学背景。

    更新

    我不知道你为什么要抨击我的回答。问题是“你们中有多少人编写了不使用 .net 类进行排序或搜索的代码?”我说没有。你们中的哪一个人已经完成了它并给出否定只有你自己编写了实际的算法。这不是关于了解这些想法的好处,我更喜欢深入的知识和底层的理解,而不仅仅是如何做一个HelloWorld。每个认识 e 的人都会证实这一点,

    【讨论】:

    • 我不仅每天都在各种框架(.NET、Java、Cocoa、Ruby...)中使用 OP 列出的每一种技术,我什至发现需要实现它们一次或一次。恕我直言,每个高级开发人员都应该能够做到,这不是火箭科学,而是纯粹的基础知识(唯一的例外是编写哈希映射所需的哈希算法)。而且我没有学位,顺便说一句。
    • 是的,要求是投资银行。
    • 感谢所有其他人的意见和回复。每一条回复都给了我不同的视角。
    • @Ken:“我需要一个具体的答案并从他那里得到它”。所以,基本上,你接受了目前投票率最低的答案,因为它告诉你你想听什么?
    • @Aliostad - 我在一家投资银行工作,我的经历与您在这里的陈述完全相反。我们不只是通过清单进行筛选,我们寻找深入的知识。像电话屏幕这样的首次屏幕可能会略过一些预期的内容,但请放心,面对面​​的面试会发现候选人的真正知识深度。熟悉常用数据结构是入门的最低门槛。
    【解决方案4】:

    这些知识创造了你自己​​的专业背景,帮助你解决另一个现实世界的问题。例如,数据结构知识可以帮助您在特定条件下选择正确的数据结构,这可以帮助您了解应用程序中发生的情况并促进构建自己的应用程序。

    O-notation 的基本知识也可以帮助您在不同的数据结构或算法实现之间进行选择。

    我怀疑您是否应该有创建自己的数据结构的经验,但我相信即使在 LINQ 时代,这些知识也会对您有所帮助。

    【讨论】:

      【解决方案5】:

      是的,也适用于初级 .Net 开发人员。各个级别的高效开发人员无需猜测他们的代码是否满足要求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-20
        相关资源
        最近更新 更多