前几天我正在查看其中一个职位发布,并惊讶地发现这个要求。 “标准数据结构知识(b树,链表,散列)和标准算法(排序,合并,b搜索)”
主要要求是.NET 3.5,C#UI Programmer。我在大学里研究过他们,但从来没有机会实施它们。
在没有使用.net类的情况下,有多少人编写了用于排序或搜索的代码?为什么Sr.net开发人员应该关注这些数据结构和算法呢?有这么多.net类可用吗?
答案 0 :(得分:5)
当您不了解手头有哪些工具时,您如何能够做出如何最好地解决问题的决定?是的,高级程序员当然必须了解这些基础知识(在我的书中,您列出的是每个程序员需要理解的基础知识)。
高级程序员的工作(也)是做出决定,特别是在设计方面。如果您不知道自己有哪些选择,就无法做出这些决定。
即使您要“只是”在您的余生中只进行UI编程,您也需要了解这些内容。例如,您需要了解树是什么以及它是如何工作的:您的视图层次结构是一个。您需要对数据进行排序以向用户表示,因此如果数据非常大,您需要知道哪些排序算法适合作业,或者如何将其转换为适当的结构(哪些?)以使UI变得活泼和/或不使用大量内存。
答案 1 :(得分:2)
“知识”并不一定意味着“实施”。你知道Big“O”吗?
我必须在旧语言中实现其中的几种数据结构和算法。我在C#中实现了一些作为智力练习。有些在.NET Framework中不可用(我认为是Black / Red Tree),但代码可以在网上找到。大多数时候,我只需要知道的是性能BigO()= 1,n,n * m,n ^ 2,n ^ m,2 ^ n,log n等。
高级开发人员必须知道他的数据结构选择的性能。我见过“老人”开发人员在工作“完成”之前不关心。这种发展通常不会扩大规模。
答案 2 :(得分:1)
多少?无。
要求(最有可能来自投资银行)可能只是为了测试候选人的科学背景。
<强>更新强>
我不知道你为什么要抨击我的答案。问题是“你们有多少人在不使用.net类的情况下编写代码进行排序或搜索?”我没说。你们中哪一个做了它并且只有你自己编码了实际的算法。这不是关于了解这些想法的好处,我赞成深入的知识和深层次的理解,而不仅仅是一个怎么做的HelloWorld。每个了解e的人都会证实这一点,
答案 3 :(得分:1)
这些知识创造了您自己的专业背景,帮助您解决另一个现实世界的问题。例如,数据结构知识可以帮助您在某些条件下选择正确的数据结构,这有助于您了解应用程序中发生的情况,并有助于构建您自己的应用程序。
关于O符号的基本知识也可以帮助您在不同的数据结构或算法实现之间进行选择。
我怀疑你应该有创建自己的数据结构的经验,但我确信即使在LINQ-epoch中这些知识对你也有帮助。
答案 4 :(得分:1)
是的,也是初级.Net开发人员。各级有效的开发人员无需猜测他们的代码是否符合要求。