it-swarm.cn

为什么软件工程师的面试难度特别大(与研究面试相比)?

首先,我的一些背景。我拥有CS博士学位,并且在您非常了解的甚大型公司中担任过软件工程师和研发研究科学家的工作。我最近换了工作并接受了两种职位的面试(就像我过去所做的那样)。

我的观察:SW工程师的求职面试比CS研究员的求职面试要困难得多,但研究员的工作薪水更高,更具竞争力,更有回报,更有趣,并且具有更高的发展空间。

这是研究人员的典型采访循环:

  • 通过电话采访了解我的研究是否与实验室的研究保持一致
  • 面对面:在一个小时内介绍我的最新研究成果(可能代表9个月的工作时间),并回答听众的问题
  • 与约5位研究人员进行的一对一面谈,他们向我询问有关我的工作/出版物/专利的非常合理的问题,包括:技术问题,我的工作适合相关工作以及如何将我的工作扩展到新领域

这是软件工程师的典型面试循环:

  • 在电话采访中,我被问到算法问题,也许还要做一些编码。很标准。
  • 在白板上进行的面试,他们在深奥的C++细节上钻出F ***(例如,多态虚拟函数调用的工作方式),算法(使全对-最短路径算法可用于1B顶点) ,系统设计(设计数据库负载平衡器)等。此过程持续进行六到七次采访。荒谬。

为什么有人愿意忍受这个呢?问C++琐事或编写代码证明自己的目的是什么?为什么不让SE面试更像研究人员面试,您可以在其中谈论您所做的事情?

物理,化学,土木工程,机械工程等其他领域的技术面试如何?

40
stackoverflowuser2010

确定您在技术上是否足够胜任这项研究是相对容易的-您拥有招聘经理可以阅读的出版物,而这些出版物可能暗示了其他可以与他们交谈的人可以检查您。

另一方面,软件工程是一门学科,到处都是无用的空间浪费,因此需要做大量的尽职调查,以确保您雇用的人实际上可以编写您打算雇用他编写的代码。

45
Wyatt Barnett

在这里走出去。

作为具有博士学位的研究人员,您已经向多家知名组织证明了您作为研究人员的价值和最低素质。您成功地在同行面前捍卫了一篇论文,并说服至少一位同行审阅了出版物来发表您的作品。

另一方面,软件开发没有资格标准。人们通常会夸大他们的知识库。结果,软件开发面试必须完成博士学位辩护和同行评审在学术界所做的所有工作。它们使您证明自己确实知道自己在说什么。

30
Ryan Michela

考虑一下。

如果我想申请这份CS研究人员的工作,我的简历/简历将一无所获。首先,我不会接受采访。我会收到一封标准的“无高级学位”信,告诉我我什至没有资格看我的简历。

我的问题是:“为什么要获得博士学位如此困难?”而且“为什么我需要博士学位才​​能成为CS研究人员?” “为什么有这么多障碍和障碍?”

为什么有人愿意忍受这个呢?

完成所有课程工作并在期刊和会议上发表研究成果有什么意义?为什么我不能仅仅进行研究并获得比工程学更高的报酬?

为什么要依靠研究生院和出版物来建立证书?为什么不使研究访谈更像SE访谈,而这一切都取决于您在访谈中可以立即回忆起什么呢?

17
S.Lott

好吧,我有一个理论。研究通常由赠款支付,因此现金供应量很高。他们有一大笔钱可以花,他们只需要找人花钱。不管您实际上在该职位上是否完成任何工作,公司/机构都不会记录净亏损,因为无论如何这只是一个已记账的费用。雇用错误人员的风险很小。最坏的情况是他们会丢弃您所做的一切。

另一方面,现有产品的成败取决于日常开发人员。特别是如果您从事产品开发,那么您就是公司的利润中心。好的或坏的开发人员所产生的巨大影响远远超出其薪水成本。不良的显影剂实际上会造成损坏。他们可以挫败团队,推出产品等。聘请一位糟糕的软件工程师的后果要高得多。

6
Scott Whitlock

简短的回答:市场上有很多人声称了解编程,但不能编程。

旁注:令我惊讶的是,没有人发布指向 FizzBu​​zz论文 的链接。

5
Nikita Barsukov

我们公司还“提出很多难题”,我将解释原因。我们确实在乎您是否真的知道虚拟函数调用是如何完成的,但不是因为它对于您将要完成的工作非常重要。

相反,我们确实在乎,因为我们需要知道您能以多快的速度学习基础知识。您声称拥有X年的经验?好的,我们会提出一些棘手的问题,以查找您是否具备扎实的知识。

您不知道如何在后台进行虚拟函数调用,但是您了解有关概要分析和优化的所有知识吗?太好了,我们很可能会雇用您-您已经在一个领域中获得了扎实的知识,因此您一定会在另一个领域中获得扎实的知识。

您声称拥有X年的“开发,调试和修复C++代码”的经验,并且不能用简单的语言解释指针如何指向对象?抱歉,我们不能雇用您-如果您不能这样做,当我们需要做出复杂的技术决策时,您将如何解释更棘手的问题?

5
sharptooth

我是一名软件开发人员(c/c ++),在该领域拥有20多年的经验。现在,我们通常看到的面试类型(脑筋急转弯,实现数据结构,在白板上进行搜索算法等)除了newgrads之外很少发生。如果某人在一家信誉良好的公司工作了合理的时间,则认为该人具有编写代码的能力的证明。现在它变得非常流派,我不确定为什么。的确,可以记住他们要求您编写代码的典型内容,因此在白板上进行操作实际上并不能证明任何事情。在一个工作项目中,您将使用Internet进行研究,而不会从头开始编写btree或链表。公司现在真正需要的是创新者,要求某人证明自己可以从大学的记忆结构中写东西并不能证明创新。

我认为这是另一种管理时尚-就像Scrum一样,这可能是由Google,Amazon和Microsoft发起的。其他所有人都像杰克·韦尔奇(Jack Welch)的职务一样被抄袭了,并且......

如果您是一位招聘经理,请阅读我的评论,那么您应该问的候选人是他们如何解决某些问题。与其让他们编写一个哈希表,不如给他们一个涉及哈希表的问题,并询问他们如何解决它。

我也同意这篇文章上方的开发人员所说,“给他们一个公司必须解决的现实问题”!

“但是我倾向于轰炸OOP /继承问题。为什么?因为一旦添加了对模板的支持,我几乎就将C++专门用于泛型编程。”

我也同意以上观点。在公司工作时,可以用自己的方式编写代码。我有时仍然想不起来要通过引用语法进行C++调用,因为我工作了15年的公司的高级架构师更喜欢使用指针而不是引用。您看到他是一位老C程序员。这就是我们所有人所使用的。

3
guest

我要走的是一条不同的道路,那就是问题可能不会太大,以至于软件工程面试本来就比较困难,而是不同部门正在寻找以面试风格表现出不同的东西。

我已经采访了相当广泛的行业(例如,初创公司,小型公司,大型公司,内部IT部门,软件公司,研究组织),而且他们都有不同的采访方式,而我发现通常这种采访方式倾向于遵循以下模式:

  • 初创企业通常会担心您可以开始编写代码现在并且可以处理快速节奏的环境。因此,他们倾向于关心您对头脑的了解程度,因为他们似乎不想看到您花费大量时间查找他们认为是“核心”知识的内容。如果您希望他们知道某些事情,那么在这种环境中承认您不知道某些事情可能不是一件好事。
  • 小型公司往往会在了解方面了解与初创企业相同的事物,但并不关心您如何处理快速节奏的环境(取决于工作),而不会关心您具有什么样的软技能带来以及您将如何适应公司。
  • 大型公司和内部IT部门似乎更关心确保您具有给定的技术知识水平,但是如果您不了解所有事情,则不必担心,因为他们预计将会有一些知识花费时间让您对公司的期望进行培训。因此,在这种环境中,承认您不了解某些东西但愿意学习和学习可以被视为一种好处。
  • 在研究环境中(即,根据我的经验,即为科学家提供软件开发支持),他们通常会关心您是否可以编写软件,而如果您愿意做些必要的事情以确保您可以了解他们的工作,那么他们会更加关注。在您尝试解决问题时,他们不必握住您的手。由于这也是一个研究环境,他们似乎也对您对学习新事物的兴趣感兴趣。

现在,我忽略了提及软件公司(例如Google,Microsoft)的原因,因为它们倾向于做自己的事情,并且取决于公司的成熟程度和所面试的人群,他们正在寻找不同的东西。

归根结底,就像生活中的大多数事情一样,这一切都取决于。我个人发现,有些公司非常关注“书本知识”,而这可能是以能够实际解决更高层次的问题为代价的,而其他公司似乎非常关注您如何更好地处理更高层次的问题。 (即,您可以为x设计一个模式),并在他们愿意花三到六个月的时间来使自己完全投入生产之前的假设下进行操作。

3
rjzii

同样,技术面试是任意和反复无常的。

在细节上烧烤一个人与看他们是否知道自己的CS之间有很大的区别。就像我在上面说的那样,我在C++方面拥有十多年的经验,但是我倾向于轰炸OOP /继承问题。 为什么?因为添加了对模板的支持,所以我几乎专门将C++用于(编程.

我已经采访了海湾地区和西雅图的几家BigHouseHoldNameTech公司,这是最好的采访之一,涉及他们必须处理的real问题在工作中,涉及数据结构和算法[即:[您拥有由XYZ组成的3000亿个数据点。您如何有效地存储和搜索?]。

这几乎可以让您知道候选人如何介入并帮助解决您面临的实际问题。另一家BigHouseHoldNameTech公司也绝对糟糕,但是他们问了几个小时,令人难以置信的神秘问题,您真的应该在手册中查找[即描述PCB之间的主要区别-这不是内核级别的位置]

对冲基金出于酷刑的目的而显得异常奇怪……期望在8个小时内解决白板上的类型问题 (背包 )。

2
red-dirt