首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么数据结构在面试中如此重要?

为什么数据结构在面试中如此重要?
EN

Software Engineering用户
提问于 2011-08-18 12:30:34
回答 15查看 119.8K关注 0票数 105

我必须承认,我大学毕业时,在数据结构方面没有那么强。在我毕业期间的整个校园里,我都目睹了亚马逊( Amazon )、微软( Microsoft )等大多数大型科技公司主要关注数据结构。数据结构似乎是他们对毕业生的唯一期望。

老实说,我对此感到很难过。我写的代码很好。我遵循标准的编码设计模式,我确实使用数据结构,但在表面层面,就像在ArrayList、LinkedList等Java公开API中一样。但是公司通常关注于复杂的数据结构方面,比如基于指针的内存操作和时间复杂性。

可能是因为我的Java背景,那时,我只在谈到面向对象编程(如对象、实例等)时才理解代码效率和逻辑,但我从未钻研比特和字节的级别。我不想让人们看不起我,因为我在数据结构方面的知识不足。

那么,为什么这么强调数据结构呢?

EN

回答 15

Software Engineering用户

回答已采纳

发布于 2011-08-18 16:00:28

像微软这样的大多数大型科技公司主要关注数据结构。数据结构似乎是他们对毕业生的唯一期望。

不,还有更多。例如,我们还希望您能够在短时间内学习新的框架、API甚至编程语言。那是最低限度的酒吧。需要很长时间来学习新的框架、API或语言的人在微软的大多数团队中都不会是一个成功的开发人员。

当然,除了对数据结构的原始知识之外,我们在访谈中还关注更多的方面。处理不明确的规范的能力,例如,识别产生不安全代码的编码模式的能力,或者其他十几件事情。但是理解数据结构的能力当然是一个非常大的能力。

尤其是面试倾向于测试最近的CS毕业生的数据结构知识。最近的毕业生大多没有很多真实世界的经验,他们不应该像那些有15年行业经验的人那样擅长做同样的事情。

我必须承认,我在数据结构方面没有那么强大。

很高兴你了解你自己。如果您无法或不愿意改变这种情况,那么我建议您不要申请一份需要具备数据结构的工具的工作。

有一个普遍的观点,一个好的程序员必然是一个对数据结构有很好的知识的人。

一个好的程序员是一个善于构建需要构建的程序的程序员,这是重复的。许多程序员从事的任务并不需要对数据结构有深入的了解。例如,他们中的一些人从事需要深入了解用户界面设计的任务。或者数据库规范化。或者别的什么。这些人在他们的领域仍然可以成为“优秀的程序员”。

为什么这么强调数据结构?

我询问有关数据结构的采访问题,因为在我的团队中,开发人员每天都在设计、实现和操作复杂的数据结构。昨天,我们举行了四个小时的会议,会上有六名开发人员讨论了在特定树节点中添加单个布尔字段的利弊。在我的团队中,可能没有比在深层理解数据结构更重要的技能了。不问面试问题是愚蠢的,因为我们就是这么做的。

在数据结构方面没有知识真的会影响一个人的编程生涯吗?

这肯定会阻止你在我的团队里找到工作。但正如我之前所说,编程是一个巨大的领域。有很多种计算机编程不需要数据结构的知识。

这门学科的知识真的是区分好程序员和坏程序员的充分依据吗?

不是的。但是,发现不太可能在微软取得成功的开发人员几乎总是足够的。因为这是我主要感兴趣的检测,数据结构的知识是我在面试中测试的因素之一。

票数 120
EN

Software Engineering用户

发布于 2011-08-18 12:50:28

关于数据结构的一个要点是,它们是通用的和永恒的,至少对于实际目的是如此。任何在过去30年中做过开发人员的人都应该知道一些基本的数据结构,比如单/双链接列表、二叉树或图形。如果你问两个开发人员,你可以通过他们的答案来比较他们的知识。对于框架甚至语言来说,这很难说:如果你问两个开发人员关于Rails的事情,其中一个比另一个知道得多,这能告诉你什么呢?正如您在问题中所说的,一个聪明的开发人员能够足够快地学习一个新的框架,因此测试他们当前的知识没有多大意义。

没有数据结构方面的知识真的会影响一个人的编程生涯吗?

是。一定。除非你想花一辈子时间写CRUD应用程序。

或者,这门学科的知识真的是区分好程序员和坏程序员的充分依据吗?

不,这还不够。但是,在求职面试中,有几件事是足够的。我想说的是,算法知识是一个更好的指标,至少对于刚从学校毕业的人来说,在那里你不能询问工作经历。

票数 132
EN

Software Engineering用户

发布于 2011-08-18 12:48:50

我是一个快速的学习者,我可以在相当短的时间内学习新的框架、API甚至编程语言。

听起来不太苛刻,但任何半正派的开发人员都可以在相对较短的时间内掌握一种新的语言或框架。

数据结构是通用的,它们是计算机科学的基本组成部分--一棵红黑树基本上是一样的,不管它是用Java、Python、PHP还是其他什么工具实现的。因此,与其测试特定语言或特定框架,雇主(至少是寻找优秀开发人员的雇主)将测试你是否了解计算机科学的基本原理,而不只是测试他们目前使用的是什么口味。

(至少,他们应该测试基本面,除了他们目前使用的.如果他一生中从未写过一行代码,那么雇用计算机科学向导是没有意义的)

票数 44
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/102041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档