良いインタビュープログラミングプロジェクト[終了]


26

潜在的な従業員にプログラミング能力を評価するために提供できる小規模なプログラミングプロジェクトを探しています。これらは、大学を出たばかりのプログラマーになります。私は、誰かが数時間かかり、彼らがインタビュー後に回答をメールで返すプロジェクトを探しています。

1つの例は、このテキストの段落を取り、アルファベット順の一意の単語のリストを返すことです。各単語の後に、その単語が何回出現したか、その単語がどのセンテンスで出現したかを教えてください。

誰にも良い提案がありますか?


ACMプログラミングコンテストの質問。これらの質問のアーカイブはこちらで見つけることができます。
-whatsisname

1
これらのプログラミングパズルサイトは興味深いですか?Programmers.stackexchange.com/questions/756/programming-puzzles/…–
grokus

回答:


43

私は、誰かが短期間で何もできず、その人について有用なことを何も伝えることができないと結論づけました。しかし、すべての優秀な候補者には、すでに書かれた個人的なプロジェクトがあります。そのため、特定の課題を「誇りに思っている、あなたの名前を刻印して喜んでいるコードを教えてください」に置き換えました。

彼らのプロジェクトの選択は、1時間以上のタスク以上のものをあなたに伝えます。そして、それを議論するのに1時間費やしてさらに学ぶことができます。


4
会社で面接し、かなり単純な(15-20行)機能を与えられ、「これは何をするの?」私は彼らに言った後、「誰かがそれを間違えていますか?」と尋ねました。インタビューした人の大半は答えられないと言われました。たぶんそれは簡単な代替手段かもしれません(それを書くことができないコードを読むことができる人は誰も知りませんが、間違った人々に会ったことがないのかもしれません)。
TMN

4
@TMN-ああ、それも少しやります。しかし、私はコードを読むことができて、うまく書けない人々に会いまし
pdr

@TMN独学で、コードを書くよりも読む方がはるかに上手になるまで、コードを読むのにかなりの時間を費やしました。それは起こる可能性があり、実際に、書くスキルを上げるには時間と練習が必要です。
ジミー・ホッファ

27

私はこの心とゲームのがらくたにとても飽きています。私は、コードサンプルのために私に尋ねた場所にされてそれらを離れてリッピングした後からサンプルコードを説明するために私に尋ねてきた彼らのそれが出て割れた2歳児によって書かれたように見えたシステム。あいまいな並べ替えアルゴリズム、ネットワークサービス、GUI、データ構造(常にツリーまたはリンクリスト)を実装するように求められました。インタビュアーがプログラミングの最も重要な部分だと思うことについて、いじる面倒な質問のあらゆるフレーバー。

結局、それはほとんど役に立たない。従業員を評価する最良の方法は、従業員を30日間雇用し、その従業員が仕事をどの程度うまく行っているかを確認することです。テストの開発に時間を費やすと、誰かが日常的にどのように機能するかについてはわかりません。


8
説明されている1つのbigtangのような単純なアルゴリズムをコーディングすることは、少なくとも「マインドゲーミー」ではありません。そのようなことをすることができることは、面接を受けるための前提条件であるべきです(そして、それは私の会社でです)。紙で見栄えの良い候補者を選別するのに非常に便利です。最後にやりたいことは、文字列が回文であるかどうかを判断する関数を書くことができない人にインタビューすることです。bigtangのテストを実行できないトップスクールのCS PhDの数には驚くでしょう。つまり、このようなテストを完了することは必要ですが、十分ではありません。
-Jer

+1 @Jer。前回プログラマーにインタビューしたとき、8人の候補者のうち6人が最も基本的なタスクを完了できませんでした(GoogleとSOを使用しても)。30日間は言うまでもなく、5分間、実際のコードベースの近くに配置する方法はありません。
ジュリアヘイワード

2
@JuliaHayward:誰でもウェブ/ドキュメントにアクセスできるプロジェクトを完成できると期待しています。誰かが流行語を投げ始めて、インターネットにアクセスせずに並べ替えアルゴリズムをあいまいにすると、さまざまな並べ替え技術や毎日の仕事のパフォーマンスに不可欠なものを覚えているという誤った仮定の下で問題が発生します。
悪魔のような子犬

12

誰かが自分の時間に実用的なプロジェクトを行えるようにすることは、必ずしもそれを行うのが彼らであるという意味ではありません。

面接のために全員が早く到着します(少なくとも、そうすべきです)。それらを見る準備ができるまで、彼らが作業するための「しばらくお待ちください」シートがあります。主に使用する言語で応募者の知識をテストする8つの質問があります。

誰もが自分の前にコンピューターを置いて正しい答えを出すことができるので、私たちはすべて正しい答えを探しているのではありません。私たちはプロセスを探しています、彼らは質問を試みますか、彼らはどうやって答えに来ますか。

インタビューに参加するとき、私たちは彼らと話し合い、彼らが持っているかもしれない質問に答えます。また、彼らが思いついた答えをどのように得たかを尋ねることができます。

これは以前の研究と組み合わせて、候補者を除外する最良の方法です。

更新2016/06/15

開発者の採用方法のプロセスを大幅に変更しました。

フェーズ1:7つの質問をする15分間の電話インタビュー。最初の2つは、「今まで取り組んだ中で最も楽しいことは何ですか?」です。(プログラミング関連である必要はありません)、および「空き時間に楽しみのために何をコーディングしますか」

フェーズ2:自分の時間で完了するミニプロジェクト。次に、彼らとスクリーン共有を行い、彼らは彼らが構築したものを見せてくれます。また、画面共有中に、プロジェクトに2つの変更を加えてから、彼らがそれを通して動作し、動作するのを観察します。

フェーズ3:対面インタビュー。

このプロセスにより、文化の適合性をすぐに把握できます(フェーズ1)。彼らが仕事をすることができて、実際に彼らの話を歩くならば(フェーズ2)。最後に、それらの値が探しているものとインラインであることを確認します(フェーズ3)。


1
これは一種の素晴らしいです。私はそれが好きです!
-davidhaskins

3
私はトリビアに変わる多くのインタビューにありましたが。この特定のsysntaxに行き詰まり、彼らの大規模な理解を得ないように注意してください。特に、彼らが少しの才能や興味を持っていると言われている場合。その結果、私は彼らのために働きたくなかったのです。
ジョンニコラス

「誰かが自分の時間に実践的なプロジェクトを行うことを許可することは、必ずしもそれを行うのが彼らであることを意味するわけではありません」書かれていません。それが起こった場合、彼らはインタビューと彼らの保護観察を通過するつもりはありませんが、私は私のアプローチを再考するかもしれません。
pdr

@ジョン。同意しました、「ああ、そこにコンマを忘れた」ことはできません。私が述べたように、それはどのようにアプローチするか、そして彼らが言語を理解するかどうかについて理解することです。彼らが自分のものを確実に知っているなら、より大きなものに移ります。
RDL

2
@RDL、インタビュープロセスの大部分は、私たちが探している種類の開発者にとってはちょっと楽しく、残りは地獄にあるように設計されています。優れた開発者が挑戦に抵抗できないことはご存じでしょう。
pdr

4

Jon Jaggerの素晴らしいCyber​​-Dojoをチェックしてみてください。

これは、テスト駆動開発慎重に実践し、チームダイナミクスについて学習するために設計されたWebベースの統合環境です。多くの小さなプログラミングタスク(カタの)があり、PythonやRubyからJavaやC ++まで、さまざまな言語をサポートしています。

生産性のために設計されたIDEとは異なり、コード補完、構文の強調表示、自動リファクタリングはないため、これらがなくてもインタビュー対象者が何ができるかを確認できます。

最も良いのは、カタを行った後、戻って各カタの赤/緑の進行を見ることができる(または、TDD * 8 'を行わない場合はそうでないかもしれません)。すべてのコンパイル/テストは、テストの結果とともに変更をgitリポジトリにコミットします。

インタビューコーディングテストにこれを使用すると、候補者が問題を解決する能力だけでなく、問題解決へのアプローチ、外部要因に制約されない場合に使用するプロセスについて多くのことがわかると思います。候補者がそれに費やす時間。

独自のCyber​​Dojoサーバーが必要な場合は、プロジェクト全体をgithubで見つけることができ、そこからリンクされたTurnkey Linuxアプライアンスの仮想マシンもあります。つまり、すでにVMwareプレーヤーまたはVirtualBoxがインストールされていると仮定すると、アプライアンスをダウンロードする数分!


3

私はこれを行った会社に一度だけインタビューしました。彼らは6つか7つの問題の質問シートを提供しました。指示は、各問題を解決する方法を作ることでした。

タスクの一部は、コードを再利用できることを理解することでした。問題は他のソリューションのコードを使用する可能性があります。連続的でもありませんでした。たとえば、質問5は、質問5で使用した方法を使用して作成できます。

そのようなことを試してみることをお勧めします。

質問は?Project Eulerサイトの開始時の質問のいくつかは良いものです。

また、プロジェクトをどのようにまとめることができるかを知りたい場合は、簡単なゲームを試すこともできます。

または、何かを思い付かない場合は、最終プロジェクトのコードを送ってもらうよう依頼します。


3

プロジェクトを完了するように人々に依頼するには、特定のスキルセットを念頭に置いて評価し、それらのスキルをテストするプロジェクトを設計する必要があります。

1つの例は、このテキストの段落を取り、アルファベット順の一意の単語のリストを返すことです。各単語の後に、その単語が何回出現したか、その単語がどのセンテンスで出現したかを教えてください。

この質問で何を探していますか?それを解決する方法はいくつありますか?また、各アプローチは答えを書いた人について何を教えてくれますか?この質問に対する効果的な回答で示されるスキルは、ビジネスにとって最も重要なスキルと同じですか?

これらの質問に対する答えが欲しくありません。候補者のグループをプロセスにかける前に、答えを考えてほしい。探しているスキルがわかっていれば、それらのスキルを探すための質問を作成するのは難しくありません。評価するために設計されたもの(もしあれば)を完全に理解せずに他の人の質問を使用すると、本当に自分をだまして、みんなの時間を無駄にしていることになります。


時間を無駄にしてすみません。
bigtang

1
@bigtang、それはまったく違います。上記が暴言として出てきた場合は申し訳ありません-私はそれがどのように見えるかもしれませんが-私の目標は、あなたが新しい採用で探しているスキルに基づいて独自のプロジェクトを作成するためのケースを構築することでした。あなたはほとんど何からでも小さなプロジェクトを作ることができますが、あなたとインタビューを受けた人の両方にとって価値のあるものにするためには、要件はあなたが最も大切にしているスキルによって動かされるべきです。
カレブ

最初の文を完全に削除しました(敬意を表して、自分で適切なプロジェクトを考え出すのに十分でない場合、どうしてあなたは候補者の提出物を評価するのに十分賢いと思いますか?)。値と少し不潔なようだった
マイケルデュラント

0

1つの例は、このテキストの段落を取り、アルファベット順の一意の単語のリストを返すことです。各単語の後に、その単語が何回出現したか、その単語がどのセンテンスで出現したかを教えてください。

彼らはこれをどの言語で書くでしょうか?彼らがCに重点を置いている学校から出てきた場合、これはPython / Perl / Rubyなどを教えるものほど速く書くことはできません...あるいはJavaやC#さえも。それにもかかわらず、それは良い小さなテストです。

実際にインタビュー中に簡単なものをいくつか提案します。トリックの質問はありません。私はこれについてTMNと一緒にいます。基本的なタスクを実行する2、3の関数を与え、それらが何をするかを尋ねます(他の人のコードを読む)。次に、選択した言語で記述するための基本的なタスク(20行未満)をいくつか与えます。これは、エントリーレベルが(エントリーレベルの位置で)コーディングできるかどうかを知るのに十分なはずです。それはインタビューとGPAとともに、あなたが知る必要があることについて良いアイデアを与えるはずです。


1
私は言語が重要であるとは思わない、それは擬似コードで行うことさえできる。主なアイデアは、推定従業員が「そこに」入り、問題解決の良い兆候を示しているかどうかを確認することです。
ジョナスビストレム

率直に言って、split()およびarray / lists(push / appendを使用)を使用する言語は、これを簡単にします。Cプログラマーがsplit()およびlistを「想定」することを許可します。これは、ささいなことです:-)
ChuckCottrill 14年

-1

その言語の設計パラダイムを使用して、あなたが見ているどの言語でもConwayのGame of Lifeを実装してもらいます。

JavaまたはC#ConwayのGame of Lifeはオブジェクト指向である必要があり、LISPまたはF#は機能します。


2
これを完了するのにどれくらいの時間を与えますか?
ジョブ

オブジェクト指向の実装全体を完了するのに約4時間かかりますが、今では約12回行っています。彼らがどのように考え、どこまで到達するか(そしてテスト可能なコードを書くかどうか)を見たいなら、それよりも短い時間を与えてください。直接行う場合は、45分を与えて、彼らがどこまで到達するか、なぜ彼らがした道を選んだのかを見てください。それらが完全に失われることはなく、自分で試してみるように奨励することもできます。プログラマーについて多くのことが明らかになります。
ジョージストッカー

8
候補者にConwayのGame of Lifeテストを書くように頼むと、彼らが大学に入学してからどれくらい経ったか、またはその問題を書いて研究した。@George Stockerを何十回も書いたので、あなたは雇うでしょう。Game of Lifeは、実際の開発作業とどの程度相関していますか?
ChuckCottrill 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.