代码之家  ›  专栏  ›  技术社区  ›  Joe

优秀的架构面试问题[已结束]

  •  33
  • Joe  · 技术社区  · 6 年前

    在面试中,有什么好问题可以问,看看申请人对建筑有多了解?

    7 回复  |  直到 15 年前
        1
  •  40
  •   Uri    15 年前

    架构是那些不仅仅是一个琐事问题(例如,设计模式的使用)的事情之一,并且比其他采访主题更主观。通常没有一个正确的体系结构,因此评估某人更难。你能得到的最多的是被采访者的想法。

    我建议你向被面试者描述一个你(面试官)最熟悉的复杂产品或产品的一部分。然后让他思考如何设计和解释他的推理,然后专注于具体的决定和提问。

    当然,只有在以下情况下才能这样做:

    • 你可以听到其他不是你自己的设计。
    • 你可以发挥潜力 批评并承认 自己的设计可能不完美

    另外一个额外的好处是,如果他被雇用,你会看到你会如何处理分歧。

    如果你的产品曾经被重新设计过,另一种方法是描述旧版本的架构,并询问受访者他将如何重新设计。如果结果接近当前的体系结构,那么候选人很可能与您所在团队的风格和思维方式非常匹配。

        2
  •  16
  •   jnorris    15 年前
    1. 问他们在“社区”中追随和钦佩谁的建筑能力,为什么?这将给你一个他们建筑风格的哲学倾向的指示。而且,如果他们不能说出任何人的名字,或者他们为什么崇拜他们,那是一个巨大的危险信号,因为他们显然没有跟上社区的最佳实践和进步。
    2. 让他们说出一些与面试相关的架构设计模式的问题/冲突/权衡。如果他们不能做到这一点,这是一个危险信号,因为他们可能是无意识的不称职(即:一个狂热的男孩),而不是在这方面有真正的经验和洞察力。命名一个给定的体系结构所带来的优势要容易得多,而真正理解这些缺点需要更深入的洞察。
        3
  •  16
  •   kstewart    15 年前

    假设您已经检查了他们的文化/个性适合和发展技能,我建议您执行以下操作:

    1. 请学员描述他们实际设计和/或实现的中大型系统的体系结构。围绕他们所做的设计权衡提出探索性问题。

    2. 为候选人提供一个系统的设计,该系统有几个已知的缺陷。它可以是你自己编的,也可以是众所周知的。让候选人找出缺陷并重新设计系统,假设他们没有时间或金钱限制。

    3. 向候选人介绍一套非琐碎系统(即用于在医院环境中查看医疗图像的分布式系统)的要求,让他们将系统的组件白板化,以增加详细程度,直到您对他们从利益相关者(您)那里获得要求并获得批准的能力感到满意为止。在他们的设计中进行适当的权衡。

    所有这些都不能保证你会选择最好的“架构师”(我和乔尔和杰夫都有同样的问题)。然而,这些绝对是很好的过滤技术,应该可以帮助您为您的团队识别出有价值的特性的人。

        4
  •  15
  •   Chris Dolan    15 年前

    “所以,我不会在这里耍你的:你能告诉我一些能让我相信你对建筑了解很多的东西吗?”

        5
  •  5
  •   easel    15 年前

    我有点担心你的问题。乍一看,我建议“请描述中西部草原形式对现代工艺美术设计的影响”。

    把舌头从脸颊上移开,我建议克里斯做上面的事。为候选人提供一个机会,与你和你的团队就与你工作相关的架构的设计进行互动。如果你觉得没有能力根据看到他们解决问题而不是听不懂的问题来判断他们的能力,你需要让其他人参与面试。或者,从Joel和Jeff的书中翻开“架构”一词,开始寻找称职的软件工程师。

    在我看来,设计或“建筑师”的能力是一种技能,而不是一套知识。问他们一大堆问题,比如“使用J2EEVX和J2EEVY会产生什么样的性能后果”,或者“哪一个更好,CORBA或RMI”会让你看起来很傻。

        6
  •  4
  •   Travis    15 年前

    像这样提问的问题是,没有真正的“正确”答案,所以最主要的是让候选人开始说话。我会要求他们描述一个他们引以为豪的体系结构。然后继续说,‘你最自豪的是什么?’然后你可以问他们过去犯过什么错误,诸如此类的。

    我对此感到更舒服,因为你对这个人有了一种感觉,而不是他们回答一个听不见的问题的能力。

        7
  •  2
  •   encee    15 年前

    “你读过麦康奈尔写的代码吗?”