WebまたはSQL開発者向けのFizzBu​​zzタイプの質問は何ですか?[閉まっている]


10

しばらくして、私たちは再び採用し、プログラマーのためのテストを検討しています。それらのいくつかは少し時代遅れです。Web開発者とSQLに対するFizzBu​​zzタイプの質問にはどのようなものがありますか?つまり、それほど簡単ではありませんが、ペンと紙を使用してGoogleを使用しなくても、5〜10分で解決できますか。

私は通常、CVに基づいて候補者の約3分の2以上を排除し、その後、1時間の面接(電話で行うことができます)で少数を除くすべての候補者を排除します。この時点で、候補者は性格テストを作成しており、FizzBu​​zzのようなコードを少し書く機会があります。したがって、私は多数の候補者を排除しようとはしていませんが、候補者が採用可能でコーディング可能であるという私の最初の評価を検証しようとしています。


2
あなたはウェブ開発者にどんなスキルを求めていますか?
オデッド

HTML / CSS / JSON / HTTPの理解を求めていると思います。Rachelが述べたように、FizzBu​​zzはJavascript / PHP /などのテストに適しています。
Domchi

回答:


12

私はFizzBu​​zzを、レジュメで知っていると主張していることを人々が実際に知っているかどうかを確認するためのテストだと考えています。何を話しているのかわからない候補者を除外するための質問以外には使用しません。

適切なSQLの置き換えは、Aで始まる2つの結合テーブルのNameフィールドを選択するなど、SQLステートメントを書くように候補者に依頼することです。これは簡単で、候補者が実際にSQLについてある程度の知識を持っていることを示しています。

SELECT Table1.Name, Table2.Name
FROM Table1 
INNER JOIN Table2 ON Table1.Id = Table2.Id
WHERE Table1.Name LIKE 'A%' OR Table2.Name LIKE 'A%'

Web開発者の場合は、FizzBu​​zzに質問します。あなたがウェブ用にプログラミングしているからといって、基本的なプログラミングロジックを実行する能力に欠けているべきではありません。

実際の面接の質問を探している場合は、オンラインで簡単に検索できる優れた質問がたくさんあります。グーグルで10秒かかって、リストしたい以上のものを見つけました。


2
結合は、新人をより高度なSQLプログラマーから分離するための良い方法です。SQLプログラミングでは通常、通常は必須であるサーバー側プログラミングとは異なるパラダイムを考える必要があるためです。結合とサブクエリは、セットの観点からSQLステートメントについて考え始めるまで、私を悩ませていました。
クリスC

@CCRicers同意します。上級SQL開発者にインタビューしている場合は、実際にGROUP要件も追加します。これは、グループの意味と機能を完全に理解する前にSQLを使用していたためです
Rachel

自己結合を要求することを検討してください:「CREATE TABLE EMPLOYEE(ID NUMBER、NAME TEXT、MANAGER_ID NUMBER)」次に「従業員とそのマネージャーをリストするにはどうすればよいですか?」
kevin cline

採用しているデータベース/ SQLの種類(および開発者の背景/環境)に応じて、実際の「FizzBu​​zz」の回答を求めることができます。
時計じかけのミューズ2011

また、仕様が悪いという追加の利点があるため、候補者がコードを書く前に要件を明確にするかどうかをテストします。
Peter Taylor

4

これは、このサイトで締め切られた非常によく似た(おそらく重複している)質問に対して私が出した答えです。

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

簡単なレベル 上記のEmployeeテーブルと、EmpIDおよびReviewDate列を持つ新しいテーブル「AnnualReviews」を考えると、HireDateで並べ替えられたレビューがなかったすべての従業員を返すクエリを記述します。

中レベル
上記の従業員テーブルを前提として、会社で現在働いている在職期間が最も多い従業員と最も少ない従業員の差(日数)を計算するクエリを記述しますか?

ハードレベル 上記の従業員テーブルを前提として、誰かが雇用したり解雇したりせずに会社が経過した最長期間(日数)を計算するクエリを記述します。

難しいレベル
同じテーブルを再度使用して、各従業員を返すクエリを記述します。各行/従業員について、在職期間中に会社で働いた従業員の最大数と、最大数に達した最初の日付を含めます。カーソルを使用しないための追加ポイント。


1
興味深い質問です。しかし、「ハード」/「ハード」レベルは私には本当に難しいようです。まともなSQLの経験があっても、インタビューの状況で解決するのはおそらく非常に難しいと思います。たぶん、候補者を一人で30分ほど置いておくと。
sleske

私はカーソルが何であるかさえ本当に知らないことに気づいたとき、「より難しい」質問が難しいと言うことができました...そして、MySQLを毎日使用しました!:-/
thesunneversets

@Johnfx明日インタビューしたur問題については、これらの回答をご覧ください。docs.google.com
document / d /

なぜ私にそれを見る必要があるのですか。自分でテストして、正しい答えが得られるかどうかを確認できます。
JohnFx 2013

3

fizzbuzz自体はどうですか?ここにOracleバージョンがあります:

select case when mod(level,35) = 0 then 'fizzbuzz'
            when mod(level,7) = 0 then 'buzz'
            when mod(level,5) = 0 then 'fizz'
            else to_char(level) end fizzbuzz
from dual connect by level <= 100

1
素晴らしさのために+1しますが、仮想数値テーブルは、みんなのSQLツールボックスに入るほど頻繁には出てきません。それらを見つける必要があります
コンラッドフリックス

0

どういうわけか、人は時間をかけて作業するのに多くの問題を抱えている傾向があるので、ちょっとしたテストをするのに良い場所かもしれません。

このようなもの:

パート1:特定の月のN番目または最後の平日を計算する関数を作成します。来月の第一、第三、最終火曜日。

パート2(必要な場合):定期的なスケジュールの一時的な式を保持するテーブルを設計します。スケジュールは、「1か月以上のN番目の平日」、「1か月以上のN日」、「日付からN日ごと」のいずれかです。

例:毎月15日、毎年3月の最終水曜日、毎月の最終日、2008年12月2日から17日ごとなど。


2
-1:時間を使って作業することは、本当に難しいことです。JodaTimeのようなライブラリーが存在し、単なる些細なソフトウェアではない理由を推測してください。
sebastiangeiger、2011

@sebastiangeiger同意する。私はSQLをほぼ毎日使用しており、SQLの日付関数を効率的に使用することはできますが、Googleの支援なしでは、このようなことをすばやく簡単に行うことはできません。実際、私はこれを数か月前に行う必要があり、SQLでそれを理解しようとする数分後、Googleでそれを取得し、自分のニーズに合わせていくつかの変更を加えて使用するスクリプトを取得しました。
Rachel

問題のある領域を探しているのではありません。私は、平均的な開発者が日常的に取り組んでいる何かを探しています。問題なく、慣れていない環境(利用可能なコンピューターがない)でリコールできます。あなたの例はそれほど難しいものではありませんが、彼の考えを確認するために私の前でコーディングしている誰かに私が与える問題のほうが多くなっています。
Domchi

1
@Eli FizzBu​​zzはそれに応じて解決/コード化されることが期待されていると思います。
Aaron McIver

1
パート2は良い質問だとは思いません。実際、このトピックには、ビジネスの他のデータベース設計問題ではほとんど発生しない奇妙な解決策があります。答えがわからないということは、SQLの知識不足を示すものではありません。
NoChance
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.