SQLのプログラマーの知識をテストするための質問は何ですか?[閉まっている]


14

SQLのプログラマーの知識をテストするための質問は何ですか?質問に対する答えは何ですか?そして、質問に関連する概念を理解する可能性が高い時間の観点から、正解の欠如は何を意味しますか?

GOOGLED: SQLチャレンジ


2
私は間違いなく実際の実例を挙げて、複雑なクエリを書くように頼みます。たとえば、購入の表がある場合は、過去10年間のそれぞれで最も収益性の高い月を選択するように依頼します。しかし、あなたも質問と回答について尋ねるので、それはおそらくあなたが専門家ではなく、判断できないことを意味します。この場合、少なくともインタビューの前に最初のフィルターとして、サードパーティのテストサービスを試すことができます。tests4geeks.comをお勧めします。SQLテストがあります。
ダヴァルパテル

回答:


20

それはあなたがそれがどのくらい難しいかによって異なります。また、ほとんどのSQL問題には複数の許容可能な方法があり、他の問題を引き起こすだらしのない方法でSQL問題を解決する方法もあるため、答えを出すのは少し慎重です。答えを「評価」する人は、自分で解決できる必要があります。

とはいえ、ここで頭の外から思いついたものをいくつか紹介します。

非常に簡単なレベル:
EmpID、FirstName、Lastname、HireDate、およびTerminationDateの列を持つ従業員テーブルがある場合:
「Smith」で始まる姓で姓と名でソートされた会社で働いているすべての従業員を返すクエリを記述します。

簡単なレベル
上記のEmployeeテーブルに加えて、EmpID列とReviewDate列を持つ新しいテーブル "AnnualReviews"が与えられた場合:HireDateで
並べ替えられたレビューのないすべての従業員を返すクエリを記述します。

中レベル 上記の従業員テーブルが与えられた場合、会社でまだ働いている最古の従業員と最少の従業員との差(日数)を計算するクエリを作成しますか?

ハードレベル
上記の従業員テーブルを使用して、雇用または解雇なしに会社が行った最長期間(日数)を計算するクエリを作成します。

難易度
同じテーブルを使用して、各従業員を返すクエリを作成し、各行/従業員について、在職期間中および最大値に達した最初の日付に会社で働いた従業員の最大数を含めます。カーソルを使用しない場合の追加ポイント。


いいですね、答え-質問の進化が本当に好きです。質問をする人がなぜ答えられる必要があるのですか?出力と実行時間に基づいて単体テストを書くだけではどうですか?また、平均的なプログラマーがあなたが与えた最も困難なレベルに到達するのに必要な、SQLの概念の習熟が進む週の数を何と言いますか?また、あなたが与えた最も難しい質問に答えることができるプログラマは、SQL関連タスクの非常に大部分に効果的に対処できると信じますか?
失策

3
質問者(または少なくとも「グレーダー」)に回答してもらいたいと思う理由は、アプローチが結果と同じくらいあなたに伝えるかもしれないからです。また、技術者以外のインタビュアーが事前に書かれた回答を持ち、他の正解の可能性のある回答を受け入れないことも心配です(カードには「Moop」と書かれています)。
JohnFx

これらの質問が、SQL関連タスクの非常に大部分に対処する能力を示しているかどうかについて。彼らの仕事がクエリを書くことなら、おそらくそうでしょう。DBサーバーの管理を期待している場合は、それに固有の質問をする必要があります。
JohnFx

明確化のおかげで、この場合の非技術インタビュアーは人ではなく、システムなので、ユニットテストとランタイムになります。明らかに、システムはコードを書いたり読んだりしていませんが、人間はそうですが、世界には非常に多くのプログラマーがいます。人がテストに失敗したかどうかを推測しますが、彼らが正しいと思って、常に正しいとフラグを立てることができます。
失策

そして、はい、質問の対象はデータベース管理者ではなくプログラマーです。
失態

4

私は通常、データスペシャリストのインタビューにのみ参加するため、私の質問は難しい傾向があります。しかし、SQLを作成する人に必要なことの1つは、結合の知識と、左結合と内部結合のどちらを使用するかです。それを理解していない人なら誰でも、形や形を問わずデータベースにクエリを実行することはできません。

私がやろうとする別のことは、GROUP BYの実行方法と集計関数の使用方法を理解してもらうことです。

そして、UNIONとUNION ALLの違いは、私の仕事で多くの貧しい候補者を排除しました。


2

私が求めるだろう「なぜ、どのようにあなたは、SQLクエリで使用されるユーザからの入力値をサニタイズする必要がありますか?」

これは、SQLインジェクションを防ぐために必要、と答えることができること、これはSQLの構文とコマンド(例えば、約十分な知識を必要としているSELECTUPDATEDROPDELETEそれらがクエリを破るためにSQLコメントを使用することによって回避することができる方法だけでなく、など、)と悪意のあるユーザーがやりたいことを注入します。


1
答えではありません:入力を完全にサニタイズせず、準備されたステートメントを使用しますか?
ケビンクライン

@Emmad Kareem、答えられない人はSQLを書くべきではありません。
HLGEM

@gablin、なぜそうなのか本当に分かりません。少し説明してもらえますか?この主題について議論しているSQLの本は何冊ですか?
-NoChance

2

私はデータベースプログラマーのための技術的なテストの開発に携わっていました。質問は、私が非常に基本的なものと考えるものでした。特定のテーブル構造に対してCREATE TABLEステートメントを作成します。いくつかの簡単なクエリを実行します。等

SQLの専門家と自称したほとんどの求職者はテストを失敗しました。ある人は、彼は長年SQL開発者でしたが、GUIが彼のために行ったので、CREATE TABLEステートメントを書いたことがないと言いました。

他の技術テストでも同様の経験があります。Windowsサポートスタッフの場合、タスクは「ドメインユーザーの作成」、「プリンターの追加」、「ファイルのアクセス許可の変更」に似ています。ほとんどの人は、特にプレッシャーの下でこれらのタスクを実行できません。単純なことさえできるなら、おそらくかなり有能だと思います。


1
GUIを使用している開発者の側にいるのではないかと心配しています。CREATE TABLEスクリプトを定期的に記述することなく、キャリア全体を過ごすことができます。多くの人がCASEツールでデータモデルを開発し、自動的にDDLを生成します。一般的に、私は、テスト問題のより広い理解が関与するものの賛成で、離れて主に構文を暗記に頼る任意のテストから敬遠
cjmUK

+1 @Barry Brown:同意します。興味深い点です。
失策

0

もっと未解決の質問をしたい場合:DATE、DATETIME ...データ型について一般的な質問をします。異なるベンダーの実装/製品の違いについて尋ねます。コマンドラインツール、バルクローダー、きれいなプリンターについて話してください。おそらく、インタビューの中で新しいトリックを学ぶことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.