您如何面试数据库程序员/管理员申请人?

Saj*_*Saj 12 database database-administration

在面试中,我会问一些基本的数据库设计问题。在数据库设计方面,规范化(何时-为什么)是我关注的问题之一。我网站上涉及同步服务器的一些场景以及它们考虑相关问题的内容/原因/方式;安全问题等等。

  1. 您会从他们喜欢的特定数据库系统(例如 Oracle)的上下文中询问他们吗?
  2. 你会问他们什么样的技术问题?
  3. 您会选择哪些场景以及您将寻找什么作为这些场景的答案?
  4. 您如何知道他们是否熟悉处理安全问题?
  5. 其他相关问题。(例如数据库还原/备份)

谢谢你。

Bre*_*zar 15

这是我针对高级数据库管理员的 10 大面试问题,这是Tom LaRock 针对初级 DBA 的 10 大问题。

我注意到其他人建议候选人应该对服务器进行故障排除。如果采用这种方法,请使用带有快照的虚拟机。以特定方式设置具有某些配置或性能问题的服务器,拍摄它的快照,然后在每次采访后您可以回滚到快照。

如果您这样做,请将任务限制为您实际让他们执行的任务类型。不要问生产 DBA 关于规范化,也不要问开发 DBA 为什么一个节点不会加入集群。

生产 DBA 任务可能是:

  • 为备份、索引维护和 DBCC 设置作业。看看他们是否询问您希望以多长时间备份一次数据库,以及您希望它在本地备份还是跨网络备份。不要问他们如何配置特定的磁带备份软件,除非他们已经在简历上。
  • 找出 Johnny 无法登录并运行他的查询的原因。
  • 有人抱怨查询速度慢。告诉我你要去哪里看看发生了什么。然后说他们刚刚打电话说他们的查询完成了,但他们想确保它不会再次发生。
  • 从昨晚的备份中恢复单个表。

开发任务可能是:

  • 调试这个存储过程。
  • 解读这个执行计划。
  • 创建一个视图以将客户加入发票。

使用 AdventureWorks 架构。很可能他们最近没有玩过它,但至少很容易解释。

  • 你会感到惊讶。我已经面试了数十名 DBA 候选人,他们无法回答 Tom 的问题,他们的职位高达六位数。 (5认同)
  • 真的吗?那个初级 DBA 问题清单很荒谬。这些是我在大学第一个学期后会从开发人员那里得到正确答案的问题。我更喜欢 Sr. DBA 的问题,除了“我是一名开发人员。解释为什么我的桌子上需要一个唯一的键”。我想这是因为我想相信开发人员已经知道这一点。我是一名开发人员,不知道任何人至少不能担任 Jr. DBA 角色:o (3认同)
  • 我也从 Gromer 的评论中得到了笑声,他希望相信开发人员已经知道他们需要在他们的桌子上有一个唯一的密钥。如果我在每次咨询活动中获得 1 美元,只需添加主键即可解决性能问题 - 哦,等等,我愿意,而且这远远超过 1 美元。;-) (3认同)
  • 同上布伦特所说的。在进行了无数次面试之后,我遇到了很多无法回答初级 DBA 问题的候选人,尽管简历上说他们拥有 10 年的 Oracle 和 5 年的 SQL Server 以及 OCP 和 MCDBA 证书。 (2认同)

小智 9

在我的软件团队中,作为面试的一部分,我们测试了对数据库的理解。

我们展示了一个非常糟糕的设计(想想 CRM 类型的应用程序),并要求他们在大约 30 分钟的思考时间后改进设计。

然后我们会根据他们谈论的内容向他们提出更多问题。

我们正在探索了解

  • 性能 V 规范化
  • 密钥设计和参照完整性
  • 改进的地方 - 即替代数据库结构 - 触发器、视图、程序
  • 设计中的薄弱环节——如何克服多对多关系
  • 这如何影响服务器 - 维护
  • 数据安全问题
  • 应用程序安全问题

我们作为一个团队,然后考虑了我们认为对这些类型问题的初级/高级/架构师类型的答案。

所以对于 - 性能 v 规范化 -

会首先看到问题并能够讨论原因(初级)

会推荐 4/5 NF,但了解性能问题,他们是否会非规范化并了解如何阐明问题(高级)

他们会推荐不同类型的设计,例如 Star Schema 并讨论多层次的含义吗(建筑师)

  • 密钥设计和参考完整性

会看到需要引用完整性来强制执行数据关系并能够讨论这个问题,但不会看到关键选择和设计的问题(初级)

将讨论与数据量和数据类型有关的问题 v 在数据中寻找自然键,并能够讨论他们为什么要查看这些 - 以及随后的参照完整性问题(高级)

可以争论与 Keys 和 Integrity 有关的各种观点,并能够为快速设计提出各种实际模型(架构师)

你得到了图片。

如果你想让我添加更多,然后发表评论,并详细说明我们对其余部分的看法,但只包括前两个,让你了解我们的想法。

关键是要考虑 1. 问题 2. 我们作为一个团队已经考虑过我们认为对这些类型问题的初级/高级/架构师类型的答案。

我强调团队作为候选人,团队必须对进入的人的技能充满信心,如果他们提出了他们认为不同级别的答案,那么进入的人有望更好地适应团队。它还使团队能够影响候选人的选择。他们还提名一个人参加问题小组。对团队的支持有很大帮助。


Ste*_*erg 5

您可以构建一个虚构的数据库,其中存在一些规范化问题和潜在的安全故障,但总体上看起来非常典型,就像员工数据库一样。然后,您可以先向受访者提出一些简单的问题,例如他们将如何通过联接获取数据库中的某些数据,然后逐步回答有关规范化和安全问题的更难的问题。