Screen SQL Developer Key Skills Requirements

公開されました。 最終更新日
SQL:ソフトウェアエンジニアのインタビュー質問

SQL開発者を採用したいと思い、IT採用キャンペーンを開始しました。たくさんの履歴書やカバーレターを受け取ったら、いよいよ選考プロセスに入ります。応募書類に目を通したり、候補者と電話で話したりしているうちに、あるSQLプログラマーがITチームの一員として十分な能力を持っているかどうか、また、オンサイトの技術面接に招待する価値があるかどうかを考え始めます。一方で、会社にとって価値のある可能性を秘めたSQL開発者を断ることはしたくありません。一方で、弱々しい候補者をITチームの面接に招いて、「この候補者のプログラミングスキルは低く、5分話しただけで分かった」という不満を聞かされたくはありませんよね。

だからこそ、SQLプログラミングスキルのスクリーニングプロセスを計画し、ITリクルーターができるだけ正確にそれを行うことをサポートするような方法を選択することが非常に重要です。そこで、私たちはあなたに手を貸そうと考えました。以下に、候補者を迅速かつ効果的にスクリーニングする方法についての重要な情報をすべて掲載します。さあ、始めましょう。

1.SQLとは何ですか?

SQLは最もポピュラーな4GL(第4世代プログラミング言語)であり、プログラマーは、データベースがどのように結果を計算するかではなく、結果がどのように見えるかだけを宣言することになります。歴史的には、この宣言型プログラミングパラダイムは、人間のユーザーが(UIではなく)直接SQLを使って実行するデータイントロスペクションのためのアドホックなクエリにとって重要な機能でした。最近では、中央のデータベースからデータにアクセスするために、SQLはJavaのような他のより汎用的なプログラミング言語にも組み込まれています。

2.IT企業の採用担当者がSQLについて知っておくべきことは何ですか?

SQLに関しては、IT企業の採用担当者にとって価値のあるヒントがあります。

SQL開発者に必要なスキルは何ですか?宣言型プログラミングのパラダイムは、オブジェクト指向や手続き型プログラミング、あるいは関数型プログラミングとは全く異なります。開発者がSQLのエキスパートになるには、特別な考え方と経験が必要です。基本的なタスクは誰でも簡単に実装できますが(ビジネスアナリスト、要件エンジニア、プロジェクトマネージャーなど、プログラマーでない人も含む)、複雑なSQLを正しく理解するのはかなり困難です。

以上が、SQLについての留意点です。

  • SQLを頻繁に使用する開発者にとって、集合論についての十分な知識(あるいは少なくとも直感)は非常に重要です。このような知識がないと、開発者はデータセット全体をデータベースで直接一括処理するのではなく、個々のデータアイテムを1つ1つ取得し、Javaなどの汎用言語を使ってクライアントで処理する傾向があります。これはパフォーマンスに大きな影響を与えます。
  • 残念ながら、ほとんどの大学では、関係代数といくつかの基本的なSQL-92の機能以上のことは教えてくれません。SQLは過去数十年の間に、標準的なSQLだけでなく、ベンダー固有の方言も含めて大きく進化してきました。ウィンドウ関数やCTE(Common Table Expression)などの様々な機能があり、開発者が複雑なレポートを比較的簡単に実行できるようになっています。一般的に、ウィンドウ関数やCTEに関する知識は、SQL初心者と上級SQL開発者の区別に役立ちます。これは、ETL、レポート、BI、分析などのユースケースで重要です。
  • おそらく、SQLのパフォーマンスに関する問題の90%は、適切なインデックスを作成することで解決できるでしょう。そのため、インデックスが有益(まれに有害)となる状況を見極めることが重要です。残りの10%は、通常、DBAやオペレーションチームが担当し、特殊な設定をしない限り、開発者には関係のないことです。
  • 理論的には、宣言的なSQL文は、データベースによって可能な限り最適化されます。実際には、多くのデータベースではまだSQL開発者の助けが必要です。多くのSQL文は形式的には同等ですが、あるものは他のものよりも良い実行計画を生成します。これらはデータベースによって異なります。日常的なSQLの仕事では、開発者が実行計画やSQLのチューニングが必要であることを知っていれば、通常は十分です。特定のデータベースに必要なスキルは、仕事の中で得ることができます。より特殊な状況(ビッグデータ、高いスケーラビリティ)では、開発者は使用している特定のデータベースに関するチューニングの知識を持っていなければなりません。
  • SQLは「現代」の開発者にとっては「難解」に感じられます。これは、COBOLやFORTRANがまだ広く使われていた時代の言語構文に起因しています。構文を除けば、この技術に難解なところはありません。このような主観的な話題は、仕事に適したツールを見つけようとする好奇心旺盛な開発者と、ドグマに従った(つまり、後になって間違った選択をすることになる)開発者を分けるのに役立ちます。特に、技術系の採用担当者は、ORMの後ろにSQLを隠そうとする開発者(それは悪いことです)と、ORMはデータストレージ問題のサブセットを解決するだけであり、SQLは依然として重要な技術であることを理解している開発者を見分けることができるはずです。すべてのORMベンダーはこの区別に同意していますが、残念ながら多くの開発者はSQLに触れたくないと思っています。

3.選考段階でSQLプログラミングのスキルを確認するには?

IT業界のリクルーターは、履歴書をもとにしたSQLプログラミングスキルの評価から、ビデオや電話による面接、オンラインのコーディングテストまで、さまざまなスクリーニング方法を用いています。

以下では、それぞれの方法でSQLのスキルを確認するための、便利で実用的な採用のヒントをご紹介します。

3.1.履歴書に基づくSQLプログラミングスキルの技術審査

SQL開発者の履歴書はどのように読むべきでしょうか?IT業界のリクルーターとして、SQL開発者から送られてくる履歴書には本当に価値のある情報が含まれていますが、それをどのように読み、何を見るべきかを知っておく必要があります。そうすることで、候補者と同じ言葉で話すことができるようになります(少なくとも、候補者が話している基本的なことを理解することができます)。

そのため、この基本的なSQL用語集を用意しましたので、ご覧ください。

技術系採用担当者のためのSQL用語集

宣言型プログラミング、4GL SQLは、根本的に異なるプログラミング言語です(イントロも参照)。宣言型のプログラミングパラダイムに従っているということは、採用担当者にとって重要なことです。
DDL データベースを定義するために使用されるSQL言語のサブセットであるData Definition Language
DML Data Manipulation Language(データ操作言語)。データベース内のデータを操作するために使用されるSQL言語のサブセット。ほとんどのクエリはDML
実行計画 与えられたSQL文に対してオプティマイザーが選択したアルゴリズム。
オプティマイザー SQL文を実行計画に変換するエンジン。単純なステートメントであっても、何十もの有効な実行計画が考えられます。データベースはステートメントごとに複数の実行計画を保持することができます。
コストベースオプティマイザー(CBO 最近のデータベースには、CBOが搭載されています。CBOは、生産データの統計、ヒストグラム、ヒューリスティックに基づいて判断を下します。最新の商用データベースでは、CBOによる判断に勝るものはありません。
ルールベースオプティマイザー 古いデータベースでは、実行計画を決定するために単純なルールエンジンが実装されています。このようなルールは、実際の状況では間違っていることが多く、このような状況でのクエリは、ヒントを使用するなど、より多くのチューニングが必要となります。
参加する 関係代数における最も基本的な操作の一つで、2つのデータベーステーブル(例えば書籍と著者)を「結合」または「接続」して結果を得ることができます。
PL/SQL、T-SQL、pgplsqlなど。 これらはSQL言語の手続き的な拡張であり、つまりSQLを統合した汎用言語です。これらのスキルはプロジェクトによっては非常に有用ですが、必ずしもSQLスキルの重要な指標とはなりません。
ノーマライゼーション 概念的に異なるデータ(例:書籍、著者)を異なる関係(テーブル)に分離することで、リレーショナルデータベースの冗長性を低減すること。正規化にはいくつかの異なるレベルがある。
リレーショナルデータベース(リレーショナルモデル、リレーショナル代数など SQLは主にリレーショナルデータベースで動作しますが、他のデータストレージシステムでも動作します。リレーショナルデータベースは、リレーショナルモデル
E.F.コッド 任意の背景知識。コッドは関係代数の最大の貢献者であり、その他にも多くの貢献をしています。

SQLの基本を理解したところで、さらに詳しい説明に入ります。もしあなたが技術者でないならば、様々な技術の名前や略語に惑わされるのは簡単なことです。候補者が「sequel」と言っていたら、それは「ess-queue-el」という意味なのでしょうか?それともSQLはMySQLと似たようなものなのでしょうか?読み続けていれば、きっと答えが見つかるはずです。

相互に使用される最も一般的なSQL用語。

  • ステートメント、コマンド、クエリ
  • MSSQL、SQL Server(MySQLと混同してはいけない
  • オラクル(企業)、オラクル・データベース
  • 発音は「ess-queue-el」か「sequel」のどちらかです。この数十年間、コミュニティはどちらの発音にも決着をつけることができませんでした。
  • 一般的なテーブル表現、サブクエリのファクタリング、WITH句

SQLテクノロジーの各バージョン間の関係

  • SQL-92は最初に広く採用された標準である(それ以前にも標準はあったが)。
  • SQL-1999では、SQLを「チューリング・コンプリート」にしました。これは、どんなプログラムも一般的なテーブル式で実装できることを意味しています。もっと簡単に言えばSQLが本当に強力になったのです。
  • SQL-2003ではウィンドウ関数が追加され、分析に非常に便利になりました。
  • 一般的に、SQLは他のエコシステムよりも進化が遅く、下位互換性が高いと言われています。また、通常、ベンダー固有の機能は、SQLと緊密に統合している特定のプロジェクトにとって非常に重要である可能性がありますが、このリストでは対象外とします。

履歴書に記載すべき必須のSQLスキル

  • SQLパフォーマンスチューニング
  • SQL設計スキル
  • リレーショナル・セオリーの理解
  • SQLリファクタリングのスキル
  • XSLT、関数型プログラミング、NoSQLテクノロジーの経験
  • 集合理論
  • ウィンドウ機能やCTEに関する知識

SQL開発者の履歴書を見て、数年の経験があると書かれていたら、もう少し掘り下げて、履歴書に書かれている以下のことを確認してみてください。

  • 最も価値のあるSQLスキルの1つは、開発者の視点(実行計画の読み取り、インデックスの管理など)と、DBA/運用の視点(競合問題の解決、ストレージのチューニングなど)の両方からのSQLパフォーマンスチューニングです。後者は運用にやや特化していますが、SQL開発者が運用と密接に仕事をしなければならない場合にはプラスになります。
  • 新しいプロジェクトを開始する際には、SQL設計のスキルとリレーショナル理論の深い知識が重要です。初期の段階でデータベースの設計を正しく行うことは非常に重要で、設計の悪いデータベースを後から移行するのは非常に困難です。レガシーシステムでは、ほとんどの開発者は確立されたルールに従うだけでよく、設計スキルはそれほど重要ではありません(それでも役に立ちますが)。
  • SQLリファクタリングのスキルは、SQLがかなり複雑になり始めた大規模なチームでは非常に有用です。最近ではIDEツールのおかげで簡単になったJavaのリファクタリングとは異なり、SQLのリファクタリングは、SQLコードのテストが困難なため、いまだに非常に困難です。

SQLプログラミングのスキルを評価するために、履歴書の中で他にどのような点が評価できるでしょうか?

また、ITリクルーターとしては、SQL開発者の履歴書から以下のような結論を導き出すことができます。

  • SQLは、ステートレスなストリーミングデータ処理に適した技術です。これらの技術のいずれかに精通した開発者は、SQLにも精通しているでしょう。
    • XSLT
    • 関数型プログラミング(Lisp、Clojure、Ocaml、Haskell、Scala
    • MongoDB、CouchBase、Neo4jなどの様々なNoSQLテクノロジーは、SQLにインスパイアされたクエリ言語を搭載しています。
  • ほとんどのSQLの仕事はSQLだけの仕事ではありません。つまり、開発者は汎用言語(Java、C#など)とSQLの両方を扱うことができる必要があります。開発者がこのような能力を持っていることを示す良い兆候は、多くの異なるプログラミング言語への関心と経験を探すことです。

3.2.電話/ビデオインタビューでのSQLスキルの技術審査

候補者のSQLプログラミングスキルについて信頼できる結論を出すには、レジュメだけでは不十分です。そこで、IT企業の採用担当者は、電話やビデオによるインタビューを行うことがあります。面接では、候補者のスキルや経験をより深く掘り下げることができます。このような電話やビデオによる技術面接は、候補者をITチームとのオンサイト技術面接に招待するかどうかを決定するための基礎となることが多いので、適切な質問を選び、質問することは価値があります。

もちろん、募集している職種や確認したい具体的なスキルによって、質問内容は大きく異なります。以下では、候補者のSQLスキルを知るための一般的な質問をご紹介します。

1.開発者の経験に関するSQLインタビューの質問

  • Q1: 履歴書に記載されている技術のうち、過去2年間に商業的な経験がありましたか?どのような責任を負っていましたか?最大の成果は何でしたか?
  • Q1を質問する理由: この質問をすることで、候補者のSQLの最新の経験、責任、業績について詳しく知ることができます。そのため、候補者のことをよりよく知ることができます。

2.SQL技術についての開発者の意思決定に関するSQLインタビュー質問

  • Q2: 最近のプロジェクトでは、どのような段階で参加されましたか?技術の選択やプロジェクトのセットアップに関わっていましたか?もしそうであれば、どの技術/リレーショナル・データベース管理システムをプロジェクトに選択または推奨しましたか、またその理由は?
  • Q2を尋ねる理由: この質問は、候補者がテクノロジーに関する選択をどのように行うかだけでなく、決定に参加していたかどうかも示します。経験豊富な人材を求めている場合は特に重要です。

3.SQL開発者の行動に関する質問

  • Q3: あなたが行ったプログラミングプロジェクトの決定で、失敗したものを考えてみてください。なぜそれが失敗だったと思いますか?なぜそうなったのでしょうか?それを成功に導くために、何か別の方法があるでしょうか?状況を改善するために、どのようなステップを踏みましたか?この経験から何を学びましたか?
  • Q3を質問する理由:この種の質問は、候補者が自分の判断をどのように捉え、結論を導き出しているのか、また、過去の経験からどの程度学んでいるのかを知るのに役立ちます。

3.3.オンラインコーディングテストによるSQLスキルの技術審査

オンラインコーディングテストは、SQLのスキルを審査するのに最適な方法です。以下では、プログラミングテストの利用方法や、どのようなテストを選べばよいかについてご紹介します。

オンラインSQLコーディングテスト-スクリーニングのための主要または追加の方法

コーディングテストには2つの利用方法があります。例えば、IT企業の採用担当者が候補者の履歴書に目を通したり、電話やビデオで面接したりするなどのスクリーニングプロセスを通過した候補者を、プログラミングテストに招待する企業もあります。しかし、特定のSQLプログラミングのポジションに応募してきた候補者全員にテストを受けてもらうのが一般的です。これにはいくつかのメリットがあります。IT企業の採用担当者は、すべての応募者に時間を費やす必要はなく、プログラミングスキルに関する限り、仕事に適合する可能性のある候補者だけに時間を費やすことができます。さらに、コーディング評価を受けた候補者は、貴社のIT採用プロセスに何らかの関与と意欲を示します。それは、彼らが仕事を見つけたいと思っている可能性が高いことの表れでもあります。

SQLオンラインコーディングテスト - どれを選ぶべきか?

正確なスクリーニングを行うためには、コーディングテストが正しいものでなければなりません。

市場にはいくつかのSQLオンラインテストがありますが、多くの場合、プログラミングスキルや現実の問題を解決する能力ではなく、受験者の学術的な知識を検証するものです。これが、経験豊富なプログラマーを悩ませ、その種のコーディングテストを好まない理由となっています。コーディングテストが書籍の知識を検証するものであれば、自分のスキルを実際に見せて、現実のプログラミングの課題を解決する能力があることを証明することができません。

だからこそ、IT企業の採用活動ではコーディングテストを慎重に選ぶべきなのです。以下に、私が考えるSQLテストの特徴ベスト5をご紹介します。

  1. SQLコーディングテストは、いくつかのタスクで構成されています。多肢選択式のテストだけでなく、何よりもプログラミングのタスクで、その難易度は候補者が仕事に就いた場合の責任と一致していなければなりません(テストはアルゴリズムのタスクに基づくべきではなく、それでは候補者が現実のコーディングの課題を解決できるかどうかを検証できません)。
  2. プログラマーが外部ソースを使用することを禁止しても意味がなく、仕事と同じような環境を作ってあげることが一番の近道なので、オープンブック試験の方がはるかに適しています。また、受験者は日常的に使用しているようなIDEを使用できることが望ましい。
  3. SQLプログラミングテストでは、一般的な技術としてのSQLスキルだけでなく、特定のデータベースエンジンに特化した知識を検証する必要があります。
  4. コーディングテストでは、SQLのスキルをテストするために、コードレビューの課題が含まれることもあります。候補者の経験、コード品質へのアプローチ、デバッグやトラップ発見の効率性について、非常に正確な情報が得られます。シニアのSQL開発者を採用する際には、このような評価を義務付けるべきです。

4.DevSkillerがすぐに使えるオンラインSQLコーディング評価テスト

DevSkillerは、企業のIT採用プロセスを支援するために、候補者のプログラミングスキルを入社1日目の環境でテストできるインフラを提供しています。企業が独自に開発したコードベースや、フレームワークやライブラリを使ったITプロジェクト全体を利用して、オンラインでプログラマーをテストすることができます。また、すぐに使えるSQLコーディングテストも用意していますので、技術者採用キャンペーンにご利用ください。

MySQL
ミドル
テストされたスキル
持続時間
60 分以内
評価
自動
テストの概要

選択問題

知識評価 数学, 確率, ソフトスキル, エスエッチエル

コードギャップ

知識評価 MySQL, エスエッチエル

タスク - レベル。中程度

SQL|MySQL|ソフトハウス|開発者とそのプロジェクト - 開発チームの責任者から、進行中のプロジェクトにおける開発者とその役割のリストを作成するよう、タスクを与えられました。

ノードJS
ミドル
テストされたスキル
持続時間
87 分以内
評価
自動
テストの概要

選択問題

知識評価 JavaScript, ノードJS

コードギャップ

知識評価 JavaScript, ノードJS, エスエッチエル

プログラミングタスク - レベル。中程度

Node.JS|Rest API|ニュースバックエンドサービス - Node.JS で作成したニュースバックエンドサービスを Vanilla JS で実装し、認証と Rest API を書き込む。

エスエッチエル
ジュニア
テストされたスキル
持続時間
25 分以内
評価
自動
テストの概要

選択問題

知識評価 ロジカルシンキング, 数学, MySQL, エスエッチエル

コードギャップ

知識評価 エスエッチエル

タスク - レベル。簡単

SQL|MySQL|スタンプカタログ|AVG機能 - 価格が総平均価格以上のスタンプ(名前と価格)を選択します。

エスエッチエル
ジュニア
テストされたスキル
持続時間
33 分以内
評価
自動
テストの概要

選択問題

知識評価 ロジカルシンキング, エスエッチエル, MySQL

コードギャップ

知識評価 MySQL, エスエッチエル

タスク - レベル。簡単

SQL|MySQL|スタンプカタログ|AセルフJOIN - 同じ場所にあるスタンプ(名前と場所)を選択する。

エスエッチエル
ミドル
テストされたスキル
持続時間
53 分以内
評価
自動
テストの概要

選択問題

知識評価 エスエッチエル, ポストジェスチル

コードギャップ

知識評価 ポストジェスチル, エスエッチエル

タスク - レベル。中程度

SQL|PostgreSQL|Music Store|Time function - 各CDに収録されている全ての曲の時間を計算し、リストを出力します。

エスエッチエル
ジュニア
テストされたスキル
持続時間
26 分以内
評価
自動
テストの概要

選択問題

知識評価 ロジカルシンキング, エスエッチエル

コードギャップ

知識評価 エスエッチエル

タスク - レベル。簡単

SQL|PostgreSQL|ホテル - 平均価格 - 都市の平均価格のレポートを準備します。

エスエッチエル
ジュニア
テストされたスキル
持続時間
27 分以内
評価
自動
テストの概要

選択問題

知識評価 ロジカルシンキング, エスエッチエル

コードギャップ

知識評価 エスエッチエル

タスク - レベル。簡単

SQL|PostgreSQL|ホテル - 予約 - 日数、1日あたりの価格、宿泊の合計金額を記載した予約リストを用意します。

エスエッチエル
シニア
テストされたスキル
持続時間
52 分以内
評価
自動
テストの概要

選択問題

知識評価 ロジカルシンキング, エスエッチエル

タスク - レベル: ハード

SQL|PostgreSQL|ホテル - 都市と上位のホテル - 最終予約日を含む都市のリストと、この都市で最も人気のある(予約数の多い)ホテルのメイン写真(photos[0])を用意します。

テラフォーム
ジュニア
テストされたスキル
持続時間
69 分以内
評価
自動
テストの概要

選択問題

知識評価 デブオプス, テラフォーム, AWS

コードギャップ

知識評価 デブオプス, テラフォーム, AWS

プログラミングタスク - レベル。簡単

DevOps|Terraform, AWS|特定のAMIを使ってEC2インスタンスを作成する - TerraformとAWSのプロバイダを使って、SSHアクセスが可能なデフォルトVPCに特定のAMIを使ってEC2インスタンスを作成します。

ジャワ
ミドル
テストされたスキル
持続時間
57 分以内
評価
自動
テストの概要

選択問題

知識評価 ジャワ, スプリングブーツ

コードギャップ

知識評価 ポストジェスチル, エスエッチエル

プログラミングタスク - レベル。中程度

Java|Spring Boot|Item Retriever Microservice - ショッピングシステムからアイテムを取得するためのマイクロサービスを実装します。

シェアポスト

技術者の採用についてはこちら

ラーニングハブに登録すると、有益な情報をメールで受け取ることができます。

シームレスにコーディングスキルを検証&開発

DevSkillerの製品をご覧ください。

セキュリティ認証とコンプライアンス。お客様のデータの安全性を確認します。

DevSkillerのロゴ タレントブーストのロゴ タレントスコアのロゴ