Answers:
这是我针对高级数据库管理员的十大面试问题,这是汤姆·拉洛克(Tom LaRock)针对初级DBA的十大问题。
我注意到其他人建议候选人应对服务器进行故障排除。如果采用这种方法,请使用带有快照的虚拟机。以特定的方式设置服务器,使其具有某些配置或性能问题,并对其进行快照,然后在每次访问后可以回滚至快照。
如果这样做,则将任务限制为您实际要执行的任务。不要问生产DBA关于规范化的问题,也不要问开发DBA为什么一个节点不会加入集群。
生产DBA任务可能是:
开发任务可能是:
使用AdventureWorks模式。奇怪的是他们最近还没有玩过它,但是至少很容易解释。
作为面试的一部分,在我的软件团队中,我们测试了对数据库的理解。
我们提出了一个非常糟糕的设计(考虑CRM类型的应用程序),并要求他们在经过大约30分钟的思考时间后改进设计。
然后,我们根据他们的谈话向他们询问更多问题。
我们正在努力了解
然后,我们作为一个团队考虑了对于这些类型问题的初中/高级/建筑师类型的答案。
因此-效果v规范化-
首先会看到该问题,并能够讨论原因(初中)
会推荐4/5 NF,但要了解性能问题,他们会反规范化并了解如何表达问题(高级)
他们会建议其他类型的设计(例如,星型模式)并讨论许多层次的含义(建筑师)
会看到需要使用ref完整性来加强数据关系并能够讨论此问题,但不会看到“关键选择和设计”(初级)的问题
将讨论与数据量和数据类型有关的问题v寻找数据中的自然键,并能够讨论为什么他们要看这些自然键-以及参照完整性带来的问题(高级)
可以争论与键和完整性有关的各种观点,并能够提出用于快速设计的各种实际模型(建筑师)
您得到图片。
如果您想让我添加更多内容,请发表评论,并详细说明我们对其余部分的看法,但仅包括前两个内容即可向您提供我们所想的想法。
关键是要考虑1.问题2.我们作为一个团队,然后考虑了我们将考虑对这些类型的问题进行初级/高级/建筑师类型的答案的问题。
我强调团队,因为候选人和团队必须对进来的人的技能充满信心,如果他们提出了他们认为对不同层次的答案,那么进来的人将有望更好地适应团队。它还使团队能够影响候选人的选择。他们还提名一个人参加问题面板。对团队买入有很大帮助。
看到智能并完成事情
...并询问他们最近读过哪些书,他们读了哪些博客以及听了哪些播客。并询问他们是否参与stackoverflow.com和serverfault.com ;-)
这不一定与数据库有关,但是我想添加到访谈中的是动手解决问题和设计方案。
对于动手操作问题,请提供一个人可以访问的系统,使他们对开放式问题进行故障排除。我个人最喜欢的是性能问题,因为不一定需要在面试时可以重现某些内容,而且很少有正确的答案。取而代之的是,您可以观看候选者的整个故障排除过程,他们还需要与您展开讨论以获取有关环境的更多信息。关键是要让访调员对问题诚实,而不是将场景转变为寻找一种配置错误或类似情况的复活节彩蛋。
对于设计方案,我给应聘者一个新项目的概述(即没有遗留的依赖),并要求他们在其特定领域(无论是DBA,系统还是网络)提出符合项目目标的总体设计。关键是要使项目足够小,以至于有人可以将整个场景掌握在头脑中,而且解释所需的时间不会超过几分钟。
我在这里为我的系统和网络人员使用的一个示例是在给定我们业务的某些限制的情况下,针对正在建立的小型分支机构描述其设计。在DBA方面,可以使用小型/显而易见的CRUD应用程序。无论哪种情况,您都没有在寻找详细的设计,而是在寻找更多的概述,并查看候选人是否寻找出现的常见问题。
这两种情况的重点是打开有关该主题的讨论,并让候选人提出自己的问题进行讨论。应该清楚的是,您并没有要求给出确切的答案。
可以想象,我在面试中非常不喜欢琐事,我认为这使我对候选人的能力有了更深的了解。