web-dev-qa-db-ja.com

データベースプログラマー/管理者の応募者にどのように面接しますか?

インタビューの中で、私は基本的なデータベース設計の質問をします。正規化(いつ-なぜ)は、データベース設計に関して私の懸念の1つです。同期されたサーバーを含むいくつかのシナリオと、それらが関連する問題をどのように/なぜ/どのように考慮するか。セキュリティの問題など。

  1. 特定のデータベースシステム(Oracleなど)のコンテキストから、彼らが好むことを尋ねますか?
  2. どんな技術的な質問をしますか?
  3. どのようなシナリオをサイトに配置し、それらのシナリオに対する回答として何を探しますか?
  4. 彼らがセキュリティ問題の処理に精通しているかどうかをどのように確認しますか?
  5. その他の関連する質問。 (例:DBの復元/バックアップ)

ありがとうございました。

12
DragonBorn

ここに 上級データベース管理者向けの私のトップ10のインタビュー質問 そしてここに ジュニアDBAのためのトムラロックのトップ10の質問

他の人が候補者がサーバーをトラブルシューティングする必要があることを示唆していることに気づきました。そのアプローチを採用する場合は、スナップショット付きの仮想マシンを使用してください。特定の構成またはパフォーマンスの問題がある特定の方法でサーバーをセットアップし、そのスナップショットを作成します。その後、インタビューのたびに、スナップショットにロールバックできます。

その場合は、実際に実行するタスクの種類にタスクを限定してください。正規化について本番DBAに尋ねたり、開発DBAに1つのノードがクラスターに参加しない理由を尋ねたりしないでください。

本番DBAのタスクは次のとおりです。

  • バックアップ、インデックスメンテナンス、およびDBCCのジョブを設定します。データベースをバックアップする頻度と、ローカルまたはネットワーク全体でデータベースをバックアップするかどうかを尋ねられるかどうかを確認します。特定のテープバックアップソフトウェアがすでに再開されていない限り、どのように構成するかを質問しないでください。
  • ジョニーがログインしてクエリを実行できない理由を調べてください。
  • 誰かが遅いクエリについて不平を言っています。何が起こっているのか調べるためにどこを見ればいいのか教えてください。次に、電話をかけてクエリが終了したと言ったが、それが二度と起こらないようにしたいという。
  • 昨夜のバックアップから1つのテーブルを復元します。

開発タスクは次のようになります。

  • このストアドプロシージャをデバッグします。
  • この実行計画を解釈します。
  • 顧客を請求書に結合するためのビューを作成します。

AdventureWorksスキーマを使用します。最近は遊んでいない可能性がありますが、少なくとも説明するのは簡単です。

15
Brent Ozar

私のソフトウェアチームでは、インタビューの一環として、データベースの理解をテストしています。

非常に貧弱な設計(CRMタイプのアプリケーションを考えてください)を提示し、約30分の思考時間の後、設計の改善を依頼します。

次に、彼らが話していることに基づいて、さらに質問をします。

私たちは理解のために調査しています

  • パフォーマンスVノーマリスト
  • キーデザインと参照の整合性
  • 改善の場所-つまり、代替DB構造-トリガー、ビュー、手順
  • 設計が弱い領域-多対多の関係を克服する方法
  • これがサーバーに与える影響-maintaince
  • データセキュリティの問題
  • アプリケーションのセキュリティ問題

私たちはチームとして、これらのタイプの質問に対するジュニア/シニア/アーキテクトタイプの回答と見なすものについて考えました。

そのため-パフォーマンスv正規化-

そもそも問題を見て、その理由を話し合うことができます(ジュニア)

4/5 NFを推奨しますが、パフォーマンスの問題を理解し、非正規化し、問題を明確にする方法を理解します(シニア)

彼らはスタースキーマなどの異なるタイプの設計を推奨し、多くのレベルでの影響について話し合いますか(アーキテクト)

  • キーデザインと参照整合性

データの関係を強化するために参照の整合性が必要であり、これについて話し合うことができると思いますが、キーの選択と設計に関する問題はわかりません(ジュニア)

データボリュームとデータタイプに関する問題vデータ内の自然キーを探すことについて議論し、それらがなぜこれらを調べているのか、および参照整合性に続く問題について話し合うことができる(上級)

キーと整合性に関するさまざまな視点について議論し、高速設計のためのさまざまな実際のモデルを考え出すことができます(アーキテクト)

あなたは写真を取得します。

私がさらに追加したい場合は、コメントを投稿して、残りの部分についての考えを詳しく説明しますが、最初の2つを含めて、考えていることについてのアイデアを提供します。

ポイントは、1。質問について考えることです。2。teamとして、これらのタイプの質問に対するジュニア/シニア/アーキテクトタイプの回答と考えられるものについて考えました。

私は候補者としてチームを強調し、チームは入ってくる人のスキルに自信を持っている必要があります。彼らがさまざまなレベルへの答えとして見ているものを思いついた場合、入ってくる人はうまくいけばチームにより良く適合します。また、チームは候補者の選択に影響を与えることができます。また、質問パネルに参加する人を指名します。チームの賛同を得るのに大いに役立ちます。

9
littlegeek

いくつかの正規化の問題、潜在的なセキュリティの不具合があった架空のデータベースを作成できますが、それは一般に、従業員のデータベースのようにかなり典型的に見えます。次に、面接対象者に、結合を介してデータベース内の特定のデータを取得する方法に沿って簡単な質問をすることから始め、正規化とセキュリティの問題に関するより難しい質問に進みます。

5
Stefan Thyberg

Smart and Gets Things Done を参照してください

...そして、彼らが最近読んだ本、彼らが読んだブログ、彼らが聞いているポッドキャストを尋ねます。そして、彼らがstackoverflow.comとserverfault.comに参加しているかどうか尋ねます;-)

1
Chris W. Rea

これは必ずしもデータベースに関連しているわけではありませんが、インタビューに追加したいのは、実践的な問題解決と設計シナリオです。

実践的な問題については、その人がアクセスできる1つまたは複数のシステムを用意し、オープンエンドの問題のトラブルシューティングを依頼します。ここでの私の個人的なお気に入りはパフォーマンスの問題です。インタビューのためにオンデマンドで再現できるものである必要はなく、正解が1つあることはめったにありません。代わりに、候補者がトラブルシューティングプロセスを実行するのを観察できます。また、候補者は、環境に関する詳細情報を得るために、あなたとのディスカッションを開く必要があります。重要なのは、インタビュアーが問題について正直であり、シナリオを1つの設定ミスなどのイースターエッグハントに変えないことです。

設計シナリオでは、候補者に新しいプロジェクトの概要を示し(つまり、レガシーの依存関係がない)、プロジェクトの目標を満たす特定の領域(DBA、システム、ネットワーク)の一般的な設計を考え出すように依頼します。重要なのは、誰かがシナリオ全体を頭に入れておくことができるようにプロジェクトを十分に小さく保つことであり、説明するのに数分もかかりません。

私がここで私のシステムとネットワークの人々に使用する例は、私たちのビジネスの特定の制約を考慮して、設置されている小さなブランチオフィスの設計を説明することです。 DBA側では、おそらく小さくて明白なCRUDアプリケーションを使用します。どちらの場合も、詳細な設計ではなく、概要の詳細を探し、候補者が一般的な問題を探しているかどうかを確認します。

これらのシナリオの両方の重要なポイントは、トピックに関するディスカッションを開き、候補者が自分の質問でディスカッションを主導できるようにすることです。どちらにも正確な答えを求めているのではないことは明らかです。

イメージングできるように、面接での雑学クイズは大いに嫌いです。これにより、候補者の能力をより深く理解できると思います。

1
Doug Luxem

彼女/彼に話させてください。過去の経験について尋ね、彼が遭遇した問題とそれらがどのように対処したかを尋ねます。一般的な問題を解決するためにこれまたはそれを選択する動機は何でしたか[バックアップ?モニタリング?スケールアウト、スケールアップ、セキュリティ]。

聞くだけでその人のことをたくさん話せると思います。

それから、あなたが与えられた分野で特定の専門知識を探しているなら、詳細な質問をしてください-ステファン・ティバーグからの提案は非常に良いです。

0
pQd