良好的架构面试问题

时间:2009-05-03 03:28:54

标签: architecture

在面试中要问一些好问题,看看申请人对建筑有多了解?

7 个答案:

答案 0 :(得分:40)

架构是不仅仅是一个琐事问题(例如,设计模式使用)的事情之一,并且比其他访谈主题更主观。通常没有一个正确的架构,这使评估某人变得更加棘手。你能得到的最多的是对受访者如何思考的想法。

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

当然,只有在下列情况下才会这样做:

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

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

如果您的产品曾被重新架构,另一种方法是描述旧版本的架构,并询问受访者他将如何重新架构它。如果结果接近当前架构,那么候选人很可能会很好地适应您团队的风格和心态。

答案 1 :(得分:16)

  1. 询问他们所关注的“社区”中的人,并钦佩他们的建筑能力以及原因?这将使您了解其建筑风格的哲学倾向。此外,如果他们不能说出任何人的名字或为什么他们钦佩他们,那就是一个大红旗,因为他们显然没有跟上社区的最佳实践和进步。
  2. 让他们用与面试相关的建筑设计模式来命名一些问题/建议/权衡。他们不能这样做,这是一个红旗,因为他们可能在无意识中无能(即:一个粉丝),而不是在这个领域有真正的经验和见解。命名给定体系结构所带来的优势要容易得多,而真正理解这些缺点需要更深入的洞察力。

答案 2 :(得分:16)

假设您已经检查了它们的文化/个性适应性和开发技巧,我建议您执行以下操作:

  1. 要求候选人描述他们实际设计和/或实施的中大规模系统的架构。询问有关他们所做的设计权衡的探讨问题。

  2. 为候选人提供一个系统设计,该系统具有多个已知缺陷。它可以是你组成的,也可以是众所周知的。要求候选人识别缺陷并重新设计系统,假设他们没有时间或金钱限制。

  3. 向候选人提出一系列非平凡系统的要求(即用于在医院环境中检查医学图像的分布式系统)让他们在系统组件的白板上增加细节,直到您感觉到他们能够从利益相关者(你)那里获得要求,并在他们的设计中做出适当的权衡。

  4. 这一切都不能保证你会选择最好的“建筑师”(我和标题建筑师的问题与Joel和Jeff一样)。但是,这些肯定是很好的过滤技术,应该可以帮助您识别具有适合您团队特征的人。

答案 3 :(得分:15)

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

答案 4 :(得分:5)

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

从脸颊上移除舌头,我会建议克里斯在上面做了什么。为候选人提供与您和您的团队互动的机会,以设计与您的工作相关的架构。如果你觉得有能力判断他们的能力是基于看到他们解决问题而不是罐头问题,你需要让其他人参与面试。或者从乔尔和杰夫的书中取一页并划掉术语“架构”并开始寻找有能力的软件工程师。

在我看来,设计或“建筑师”的能力是一种技能,而不是一套知识。向他们提出一系列问题,例如“使用J2EE vX与J2EE vY的性能影响是什么”或“哪个更好,CORBA或RMI”只会让你看起来很傻。

答案 5 :(得分:4)

提出这样的问题的问题在于,实际上没有一个“正确”的答案,所以最重要的是让候选人开始说话。我会请他们描述一个他们已经实施的他们引以为豪的架构。然后跟进诸如“你最为自豪的是什么?”之类的事情。然后,你可以问他们过去犯过什么错误,等等。

我对此感到更自在,因为你感受到了这个人,而不是他们回答罐头问题的能力。

答案 6 :(得分:2)

“你读过McConnell的Code Complete吗?”