软件开发人员面试问题-公平还是不公平[关闭]


10

我刚刚通过电话采访了一家公司的研究生软件开发人员职位,并被问到以下问题。我还要补充一点,有关的公司不是数据库供应商。

  1. 查询优化器如何工作?

  2. 如果数据库的性能不佳,您将如何使用性能日志来找出问题所在。

我在第一次电话采访中问过他们是否向所有候选软件开发人员(研究生或有经验的人)提出这样的问题。他们回答说,他们喜欢测试候选人的数据库开发知识。

我想写信给该公司,说在软件开发人员面试中问这些问题是不合理的,并要求完成我的面试。

我想检查以下假设的合理性

a)这些问题不能公平地归类为数据库开发问题。
b)我认为这些问题适合DBA面试,但完全不适合软件开发人员面试(无论有没有经验)。
c)第一个问题仅与数据库供应商有关。
d)第二个问题是不公平的,因为软件开发人员通常不处理数据库性能日志,因为这是DBA的工作。

在写信给公司之前,也许有些人会对我的假设发表评论,或者有其他建议。


23
我宁愿选择一个可以公平回答这些问题的开发人员,而不是不能回答这些问题的开发人员。但我不会以此为依据来决定。
belisarius博士2011年

14
我们曾经有一个受访者对他的采访不满意,以至于他给我们开了一个小时的咨询时间。我们已经超越了他,但是我们很高兴他能跟进以加强我们的决定。:-)

18
从username _ =“ user607018”的候选人列表中删除;
马丁·约克

44
@ user607018我认为您的问题之一是您认为求职面试应该是“公平的”,就像在学校进行的考试一样。那是不对的。面试只是检查他们是否想雇用您的支票。如果他们在广告中根本没有提到数据库的优化/性能,那就是另一回事了,他们让您浪费时间申请无法完成的工作,但是否则公平就根本没有涉及到。 。从学校的人造世界到实际完成工作的真实世界时,这是一个普遍的误解。
MGOwen

16
如果必须编写SQL查询,则必须知道该问题的答案。否则,您最终将编写糟糕的查询,而其他人则必须在您清理之后进行清理。因此,问题是公正和合理的。
SK-logic

Answers:


86

如果我是一名面试官(有时是我),并且收到了一位候选人的来信,抱怨说问题不公平,他们想解决问题,那么我要感谢幸运星,因为我们避开了那颗子弹,并立即将申请移至“拒绝”堆。这样的举动只会显示出您是一个抱怨者,而没有您所寻求的“可以做”的态度。

一个。这些问题是合理的,可以询问数据库开发主题。
b。假。与软件开发有关的一切都是公平的要求。请记住,回答错误并不会自动使您失去该职位(或公司中的其他职位)的资格;它可能只是有助于将您归类为最不适合面向数据库的工作的人。
C。假。
d。假。首先,可能没有专用的DBA。其次,软件开发人员必须意识到可能影响性能(和准确性)的广泛问题,并且至少对数据库管理有较高的了解。

以此为教训,有些事情你还不知道。现在,您知道下次要学习什么。


31
为“现在您知道该学习什么” +1。雇主想要的最后一件事是使他们的“不是我的工作”的演讲完美的员工。
戴夫

7
+1-如果我能投票赞成+100 ...这些天,太多的“开发人员”知道数据库及其工作原理,但是他们一直在使用它们...
marc_s

+1在面试中您应该期待任何事情。这是他们的游戏,他们的访谈和他们的公司

如果可以的话,我会给予更多的支持,您说的只是我想说的更加机智。我还将指出,有时可能会要求您回答可能不希望您知道的问题,以了解您在压力下如何应对。但是,如果数据库开发是这项工作的重要组成部分,那么我对这些问题一点都没有感到奇怪。
HLGEM 2011年

5
另外,我会说“查询优化器如何工作?” 不一定意味着他们希望您能够从头开始构建查询优化器。这可能意味着他们想检查您对优化器在何时运行,在处理存储的proc,addhoc SQL查询等时的理解。这对于编写编写命中数据库代码的开发人员来说是绝对相关的知识。
Carson63000

17

我认为这是一个公平的问题(听起来像Google可能会问的一个问题)。:)问题的重点似乎并不是真正测试您对数据库查询等的详细知识,而是更多地观察您如何解决和解决问题。必须具备完成之前已经完成的任务的能力,但是具有脚步思考和解决新问题的能力是至关重要的技能。

遇到这样的问题时,如果我缺乏给定数据库的特定知识,我认为应该开始做出公正的回答,“嗯,我在该技术上没有很多经验,但是在总的来说,我会查看性能日志以找到最常执行的操作,并尝试按处理时间对其进行排名。这样一来,我就可以估算出哪些操作最昂贵,并且可能是进行优化的最佳选择。”

您不需要任何特定的技术知识来回答上面的问题,但是它告诉您的面试官您已经准备好解决新的问题。


4
或者,该公司可能更喜欢具有查询优化知识的开发人员。我的妻子不是DBA,但她在优化查询方面做了大量工作。DBA忙于优化所有可以使用它的查询。
David Thornley

16

如果不是公平的问题还是不公平的问题,他们会聘用他们,以便制定规则并被允许问自己想要的事情(不是所有的东西,而是几乎所有的东西;)

而且,如果您仍然想要这份工作,我认为写这些书不会对您有所帮助。


从技术上讲,他们可以您任何事情,由您决定是否回答(如果他们问您完全愚蠢的事情,无论如何您都不想要这份工作)。
o0'。

16

在工作面试中,一个非常常见的策略是提出一个超出面试职位范围的问题,以了解候选人的困惑。提出问题后,可以合理地期望您回答以下问题:

好吧,我对数据库的了解是基本的,但是我认为它像这样...

甚至:

抱歉,这超出了我的专业知识,我需要使用DBA检查性能日志的详细信息

总的来说,我希望入门级候选人至少对数据库的工作原理有基本的了解,并且要有“我不知道,但我会努力学习”的态度。

如果您进行了诚实的尝试并且他们立即结束了电话,那么您将有充分的理由感到很难接受,但是正因为如此,您应该学会在承认自己不了解的同时表现出自信。


12

我知道面试官不会认为面试是完整的,除非他们能找到候选人无法回答的一些半相关的技术问题。目的是查看候选人如何处理此类问题。

承认他们不知道?好。弥补旋转/ BS的问题?门。


9

在许多公司中,IMO,软件开发人员和DBA角色没有得到很好的分类。如果您是软件开发人员,通常还需要至少了解数据库的某些部分。因此,对于我来说,问题似乎很公平,只要要求他们更新。


8

我认为这很公平。我不在数据库供应商工作,但是知道如何读取查询计划(和性能日志,程度较小)非常重要。知道查询优化器的工作原理也是很不错的。

针对您的项目符号:

a)嗯?确保它们与数据库开发有关,并且如果您正在编写代码并且您的程序需要查询数据,那么它是相关的。

b)并非如此。DBA最好知道答案,但是优秀的开发人员也应该知道答案。我不希望得到像DBA这样详细的答案,但我希望得到一些答案。而且,如果开发人员不知道,那么我可能会接受“如果我还想让DBA教我”,如果开发人员对数据库工作来说还不是一个新手。

c)不,不是。它与任何关心其数据库查询性能的人有关。如果您不关心查询的运行速度,则可以忽略它。另一方面,您的客户在其网站上的表现越来越差,可能会不同意。

d)也许。并非所有开发人员都能看到性能日志,但是如果有问题,您可以期望DBA通过电子邮件将相关部分发送给您,并在您不知道如何解释的情况下解释该问题。至少,开发人员应该能够查看查询计划并查看基本问题(全表扫描=>不良,快速索引扫描=>良好)。

由于您刚从学校毕业,并且您可能没有在课堂上讨论过这些内容,因此您可以回答说“我会与更高级的开发人员或DBA交谈,并寻求帮助以了解这一点”。采访者可能会接受,因为它至少表明您愿意学习新事物,因为您还没有找到新事物的经验。另一种选择是自己去学习。

下一次面试好运!


7

他们完全有权问自己想要什么。您可能没有在大学课程中涵盖这些主题,但这并不意味着其他受访者对该主题没有兴趣或没有足够的兴趣超出课程范围。他们正在寻找最好的。我希望您至少尝试回答这些问题,并且不要全盘防御。如果我是他们,并且收到您的来信,您将被列入黑名单。


2
或就此而言,仅仅因为它没有在学校学习而已,并不意味着公司不需要这些技能!
GrandmasterB

3
而且,如果候选人以某种方式确实获得了第二次机会,那么期待相同的问题(甚至是几乎相似的任何问题)将是一个重大失败。我为克服问题共享(特别是受招聘人员的青睐)所做的一件事是大大改变了“奇数”问题。下次可以期待有关电话集成或条形码扫描的信息。

7

软件开发是一个多学科的专业。我认为您不会要求完成面试。在这种情况下,“合理”是给定的公司是否会基于您缺乏DBA技能而将您排除在考虑范围之外。问这个问题是完全合理的。

您的职业发展越深,您将需要知道的越多。如果您想知道为什么软件开发人员应该关心查询优化,请考虑应用程序设计。新项目通常涉及数据建模讨论。这将导致规范化讨论,从而导致数据库设计工作。好的设计原则可以贯彻执行。在体系结构级别上不良/无效的设计带来的后果通常是修复成本很高。


5

“公平”的概念在这里无关紧要。这是工作面试。

他们无法根据您的肤色,宗教信仰,种族或其他一些事物拒绝您。但是他们可以以其他任何理由拒绝您,因为您穿上采访鞋的颜色这是一个愚蠢的理由。您可能永远都不知道真正的原因。

面试时保持韧性很重要。我了解过度分析的倾向,而且我自己经常做得足够多。但是最好的办法是接受生活是不公平的,并保持足够的面试机会,您不必将所有希望都寄托在任何一个人身上。


5

就像其他人所说的那样,这些问题是完全有效的。但是,如果面试官根据这些问题决定是否完全雇用您,那将很奇怪。也许他们想听听您关于您可能不熟悉的主题的原因,这是一种有效的面试技巧。

如果正在招聘,如果您说“对不起,我对查询优化器的了解不多,但我可以学习”,我不会排除您。不过,如果您开始抱怨这些问题,我排除在外。


5

杜德(Dude),我直接告诉您:作为软件开发人员,数据库是不可能的。到目前为止,我参与的每个项目都至少占用了一半的开发时间。数据库设计是软件开发不可或缺的一部分,您了解的越多,就能更好地解决问题。另外,不要对问题的类型和它所涉及的上下文感到担忧。在大多数情况下,雇主只是想看看您是否有能力思考解决当前的问题,或者您是否有信心至少对这件事说出一些明智的话。随着您成为一名毕业生,他们意识到他们实际上将必须花时间教您所有这些事情,但是他们想知道您是否值得花费时间和精力。保持敏锐谦虚!


我是一名开发人员,多年来没有接触过数据库。我们中有些人不使用CRUD网络应用。就是说,对于许多(也许甚至是大多数)角色,您的论点都具有作用。
克里斯托夫·普罗斯特

5

我想写信给该公司,说在软件开发人员面试中问这些问题是不合理的,并要求完成我的面试。

如果您发送那封信,您认为世界将会发生什么?您是否想象他们会说“嗯,这个候选人有意思。我们应该让他回来,让我们问他一些简单的问题”?我保证你不会。实际上,他们会做的只是绕过信而笑。

克服您的权利感。您将在现实世界中出游。

您如何看待有关数据库的问题是不公平的?您认为程序员不需要了解数据库,但是该公司显然需要。这就是他们问问题的原因!面试官不会仅仅为了问题而问问题。他们提出问题,以了解您是否知道他们需要的东西。如果您不知道他们的需求,那么您就不是合适的人选。

如果您不想学习数据库,那很好,但是如果某些公司不想雇用您,也不要抱怨。您没有工作。


1
我想,如果我能给予好评百万次
HLGEM

4

这些不公平的问题如何?开发人员使用数据库。您是否不认为他们至少应该熟悉使数据库查询高效且快速地涉及到的因素?并非每家公司都有内部DBA ...即使有,也没有从开发人员那里承担编写有效查询的责任。


4

如果他们问所有候选人的问题,那么他们是公平的-完成了。

不管是否觉得这些问题适合于职位,都只关系准雇主是否认为他们合适—并且,如果他们询问,那么他们很可能会这样做(要么是因为他们反映了所需的技能,要么是因为他们找到了他们得到的答复告诉他们有关受访者的有趣的事情)。

最后,您似乎对开发人员的职权范围有一些奇怪的想法-我迄今为止(据我迄今为止在25年的职业生涯中所记得的那样)从未与专门的DBA合作...


那么,您已经避免了大型企业非IT公司:)您需要注意其中的DBA纳粹!
ozz 2011年

@james“ Avoided”是一个错误的词-但是是的。。。点是,尽管我在大部分时间里一直是“开发人员”,因此至少需要一些DBA类型的技能(尽管我不需要建议我是一名DBA ...但是同样重要的是,不一定要成为/拥有专门的dba来进行更谦虚的项目,尽管有时认识到自己技能上的差距有时会很痛苦)
Murph

4

查看这些问题,我认为这可能是我的公司-我们会在电话面试中向所有候选人询问这些类型的问题。总是。它为我们提供了工作的标准。

上面的大多数回复都很好地总结了它...

a)我们希望拥有丰富经验的人,而不是只能做几件事的人。

b)那里的问题可以帮助我们探索您的知识,您可能不完全(或根本不知道)答案,这些问题是您扩展知识和经验的起点。

c)请记住,面试是为了我们和您的利益而存在的...从问题的类型中,您应该能够了解角色和公司以及我们是否适合您以及您是否适合我们...

d)这是工作,如果您没有通过面试,然后长大,停止抱怨,并在下一次面试时做得更好。


3

似乎他们没有DBA,因此他们也希望您担任该职位。这对于小公司来说很常见。


6
仅仅因为公司希望开发人员了解如何微调其数据库脚本,并不意味着他们没有DBA。我希望有一个可以优化自己的东西的开发人员,而不是将任何SQL脚本拖到服务器上并希望DBA能够使用它。与始终修复脚本相比,DBA还需要担心的事情更多。

1
并非每个公司都采用DBA。考虑将软件分发给客户的商业开发人员。客户端可能具有DBA,但是开发人员仍然需要有效地编写其软件所使用的查询。
GrandmasterB

我在一家小公司工作(加入后大约有二十人),直到后来才获得真正的DBA。当我查询从半分钟到半小时时,我必须自己弄清楚。
David Thornley,

1
无论如何,希望开发人员不仅仅了解编程,这也不是没有道理的。
安德烈斯·F

3

我绝对没有错。为什么开发人员(尤其是最终在数据库中工作的开发人员)不应该对此类项目保密?

软件开发人员是否应该不了解优化软件或如何访问应用程序事件日志以找出性能问题?如果是这样,对于数据库开发人员,为什么不一样呢?他们为什么不能合而为一?

如果我面试某人的软件开发职位也涉及数据库开发,那该死的我要确保他们不仅知道自己在做什么,而且知道他们可以提高代码性能或现有代码作为数据库可能是一个巨大的瓶颈。

与其采取一种态度,不如采取一种更好的行动方针,那就是“我不知道答案,但这就是我要找到的答案”。


3

正如其他人所指出的,在面试中,只要不触及某种受法律保护的区域(例如年龄,种族,性别等),面试中的任何问题几乎都是公平的,而且面试官会抛出异常向您提问,只是为了了解您对问题的反应以及如何找到问题的解决方案。此外,由于您似乎是应届毕业生,因此在询问您的工作经验以及在生产环境中解决了哪些问题方面,他们受到了一定的限制。因此,如果公司做了很多面向数据库的工作,他们提出的问题也可能与您面试的职位有关。

关于您的假设:

a)这些问题不能公平地归类为数据库开发问题。

也许吧,也许不是。如果您正在进行数据库开发,则将使用查询优化器并不时计划以确保查询没有明显问题。如果公司有数据库管理员或专家可以审查查询,则他们可能没有时间查看所有内容,并且他们也不想查看每个编码错误的查询。同样,开发人员负责维护其开发环境,包括任何数据库并让DBA处理生产方面也很常见。

b)我认为这些问题适合DBA面试,但完全不适合软件开发人员面试(无论有没有经验)。

他们可能适合DBA面试;但是无论如何,它们也是开发人员应该熟悉的主题,前提是仅能够识别出问题可能出在哪里并自己进行一些基本的故障排除。就像我之前提到的,如果公司资源有限,那么他们将要确保不会浪费人们的时间来解决可能是基本问题的事情。

c)第一个问题仅与数据库供应商有关。

具体细节可能是特定于供应商的,但是一般概念可以在任何地方应用,有时还可以向您展示您所需要的一般概念。如果您不想被一个单一的开发堆栈(即LAMP)所束缚,那么您将需要能够在面试中表明您了解核心概念并且可以轻松地迁移到不同的开发堆栈。

d)第二个问题是不公平的,因为软件开发人员通常不处理数据库性能日志,因为这是DBA的工作。

通常这是正确的,但是如果您的工作之一是为需要快速响应的给定数据库编写软件,那么您将需要确保尽最大努力编写这些查询,以便让一位特定领域的专家不会因书面查询问题而陷入困境。虽然您可能不需要了解日志告诉您的详细信息,但您可能需要能够识别明显的问题。

希望所有这些都对您有所帮助!


2

仅仅因为您是软件开发人员,并不意味着您应该只了解软件开发人员主题。从服务器管理到数据库技术,拥有各种各样的知识实际上是作为开发人员具有的非常有用的技能。向候选人问这些类型的问题我没有问题。如果他们没有正确选择它们,那很好,这并不能使他们脱离名单(我不希望他们知道所有事情),但是如果他们能够回答,那说明我开发人员的能力远不止于此。只是典型的技能设定程序员,而这是稀有品种。


+1,完全同意。如果相反,预期雇用者开始抱怨这些问题的“不公平性”,那么它们就属于更常见的“ 不雇用”现象
Andres F.

2

我还与一个潜在的雇主发生了类似的纠纷,后者问我有关人孔盖的问题。我问你,人孔盖的形状与编程有什么关系!


3
关于井盖的实际问题是什么?我敢打赌,这是一个思想实验,旨在评估您的思考能力,而与人孔盖无关。
肯尼·怀兰德

一个好的面试官会问您这些问题,以更好地了解您的想法和解决问题的方式。(尽管这些天来的沙井问题有点累了)。

2
这是一个非常常见的采访问题:“为什么人孔盖是圆形的?” 预期的答案应该是“这样它们就无法放入孔中”。(并且没有其他许多合理的原因,例如“因为该孔是圆形的(因为它钻了一个圆形)”或“所以您可以在抬起盖子后滚动盖子来移动它(否则它需要拖动,或者两个人在一起)移动)”
吉米

这个问题可能类似于可以解决公共汽车问题的高尔夫球数量。不一定有正确的答案,但面试官想看看您的想法,解决问题的方法。接受采访时大声思考很重要。

2
该声明当然是在开玩笑,我怀疑过去二十年来是否有人使用过著名的沙井问题。关键是在面试中,您要遵循面试官的规则。如果问题似乎不合适,请说出来并解释您的理由。

0

形式的响应好吧,我不确定,但是我可以通过转到进行查找,也是不错的选择。没有人认为您什么都知道,但是能够查找内容是一项关键技能

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.