SQLのプログラマーの知識をテストするための質問は何ですか?質問に対する答えは何ですか?そして、質問に関連する概念を理解する可能性が高い時間の観点から、正解の欠如は何を意味しますか?
GOOGLED: SQLチャレンジ
SQLのプログラマーの知識をテストするための質問は何ですか?質問に対する答えは何ですか?そして、質問に関連する概念を理解する可能性が高い時間の観点から、正解の欠如は何を意味しますか?
GOOGLED: SQLチャレンジ
回答:
それはあなたがそれがどのくらい難しいかによって異なります。また、ほとんどのSQL問題には複数の許容可能な方法があり、他の問題を引き起こすだらしのない方法でSQL問題を解決する方法もあるため、答えを出すのは少し慎重です。答えを「評価」する人は、自分で解決できる必要があります。
とはいえ、ここで頭の外から思いついたものをいくつか紹介します。
非常に簡単なレベル:
EmpID、FirstName、Lastname、HireDate、およびTerminationDateの列を持つ従業員テーブルがある場合:
「Smith」で始まる姓で姓と名でソートされた会社で働いているすべての従業員を返すクエリを記述します。
簡単なレベル
上記のEmployeeテーブルに加えて、EmpID列とReviewDate列を持つ新しいテーブル "AnnualReviews"が与えられた場合:HireDateで
並べ替えられたレビューのないすべての従業員を返すクエリを記述します。
中レベル 上記の従業員テーブルが与えられた場合、会社でまだ働いている最古の従業員と最少の従業員との差(日数)を計算するクエリを作成しますか?
ハードレベル
上記の従業員テーブルを使用して、雇用または解雇なしに会社が行った最長期間(日数)を計算するクエリを作成します。
難易度
同じテーブルを使用して、各従業員を返すクエリを作成し、各行/従業員について、在職期間中および最大値に達した最初の日付に会社で働いた従業員の最大数を含めます。カーソルを使用しない場合の追加ポイント。
私が求めるだろう「なぜ、どのようにあなたは、SQLクエリで使用されるユーザからの入力値をサニタイズする必要がありますか?」
これは、SQLインジェクションを防ぐために必要、と答えることができること、これはSQLの構文とコマンド(例えば、約十分な知識を必要としているSELECT
、UPDATE
、DROP
、DELETE
それらがクエリを破るためにSQLコメントを使用することによって回避することができる方法だけでなく、など、)と悪意のあるユーザーがやりたいことを注入します。
私はデータベースプログラマーのための技術的なテストの開発に携わっていました。質問は、私が非常に基本的なものと考えるものでした。特定のテーブル構造に対してCREATE TABLEステートメントを作成します。いくつかの簡単なクエリを実行します。等
SQLの専門家と自称したほとんどの求職者はテストを失敗しました。ある人は、彼は長年SQL開発者でしたが、GUIが彼のために行ったので、CREATE TABLEステートメントを書いたことがないと言いました。
他の技術テストでも同様の経験があります。Windowsサポートスタッフの場合、タスクは「ドメインユーザーの作成」、「プリンターの追加」、「ファイルのアクセス許可の変更」に似ています。ほとんどの人は、特にプレッシャーの下でこれらのタスクを実行できません。単純なことさえできるなら、おそらくかなり有能だと思います。