インタビュー中に間違っている/回答されていない質問にどのように対応しますか?[閉まっている]


31

今日、潜在的なインターンとの最初のインタビューを開催しました。これは主に未解決の質問ですが、私はそれらのためにいくつかの簡単なプログラミングタスクがありました。

  • 三角形の辺(すべての整数)a、b、cが直角三角形を表すことができる場合にtrueを返す関数を記述します。
  • FizzBu​​zz。
  • 再帰を使用してフィボナッチのN番目の要素を計算します(フィボナッチが何であるかわからない場合、定義F(n)= F(n-1)+ F(n-2); F(1)= 1; F(0)= 1)。
  • 整数の構造体リストを実装し、それを逆にする関数を記述します。

これらは明らかに非常に簡単なタスクであり、私は誰かがそれらを解決しないように準備されていませんでした。

彼らがこれらの質問に苦しんでいるとき、私はどのように行動するべきですか?答えをあきらめるべきですか?チップごとに教えてください(私はそれをして、自分で問題を解決しました)?それとも、インタビューを続行する(または単に停止する)だけですか?

追伸 質問に問題があるということは、バグを抱えているということではなく、開始できない場合もあります。これはフィボナッチとリストの質問の場合でした。


6
この種の質問に関する別の観点については、この記事を参照してください。
マチュー

2
彼らは最終年にいます。しかし、大学に入学する前から問題を解決していたので、私にとってはかなりショックでした。
ミコラス

2
ここでタフになる必要があります。誰かがリスト構造を実装できない場合、プログラミングする理由はなく、少なくともリストを雇う理由はありません。そして、私はそれが大学での最後の年だと読みましたか?これは複数年の教育を意味し、その時点で彼らはそれと同じくらい基本的なことを明確に知っているべきです。とはいえ、礼儀を示してインタビューを続けるのは公平だと思います。それは単なるまぐれかもしれない、と彼らは本当に素晴らしいプログラマーです。
マックス

2
この種の質問に対する全体的な反発は、頭を悩ます。私はこれらを楽しいと感じており、この種のクイズを楽しく見つけられなかった人は、おそらくエンジニアになるという考え方を持っていないと思います。私はクイズに手を振るようなひどい記事のこのランを見ました、そして、私は全体についてかなり混乱しています。
ビルK

3
しばらくお待ちください 一般的に、あなたが質問した理由は、「良い」プログラマーと「それほど良くない」プログラマーを区別するためだと思っていたでしょう!! また、このウェブサイトの読者として、誰もがそれらを解決できると思ったことに二重に驚いています!! とにかく、生徒たちはおそらく本当に緊張し、さまざまな背景を持つかもしれないことに留意してください。また、彼らはどんな仕事をするつもりですか?私はこの種の質問について複雑な気持ちを持っています。
Antonio2011a

回答:


36

あなたは質問でインターンのポジションについて面接していると言ったので、これはその観点からであり、フルタイムの開発者にとってはバーは少し高くなるでしょう。

インターンにインタビューするとき、彼らは研究を完了していない可能性があり、プログラミングやコンピューターサイエンスの経験がなくても大学に入学した可能性があることを覚えておく必要があります。そのため、誰かが知っていると合理的に期待できることと、その地位の威信の程度に期待をスケーリングする必要があります(つまり、Googleは、人々が聞いたことのない会社の期待に応えることができます)。

あなたが提示した質問に目を通すと、インタビューで次のように見えるでしょう。

1)三角形の辺(すべての整数)a、b、cが直角三角形を表すことができる場合にtrueを返す関数を記述します。

単純なコーディングによるジオメトリの基本的なアプリケーション。ほとんどの学生はこれをそれほど困難なく行うことができるはずです。ピタゴラスの定理は、インタビュー中のために少しのストレスを示している場合、せいぜい覚えておく必要があります。これは、面接に非常に緊張している人が落ち着くのを助けることができるという点で、「自我を高める」問題と見なすことができます。

2)FizzBu​​zz

繰り返しますが、いくつかの基本的な制御ステートメントの別のアプリケーション。モジュラス演算子にさらされていない、またはあまり使用していない学生は、それを思い出す必要があるかもしれませんが、問題を解決する実際の問題に遭遇するべきではありません。

3)再帰を使用してフィボナッチのN番目の要素を計算します(フィボナッチが何であるかわからない場合、定義F(n)= F(n-1)+ F(n-2); F(1 )= 1; F(0)= 1)。

これはかなり一般的な問題になる傾向があるため、ほとんどの(すべてではないにしても)学生は卒業前のある時点でそれを見ます。キャッチは、通常、再帰が生徒に提示されるときに表示されること、または再帰またはループベースのソリューションを比較することができるため、コースのシーケンスに応じて異なる時間にそれを見ることができるようになっているときに表示されることです。実際には、誰かが再帰を思い付かなかった場合、ループを使用する代替案を求め、彼らがそれを思い付かなかった場合、私は彼らの潜在的な能力にもっと懸念するでしょう。

4)整数の構造体リストを実装し、それを逆にする関数を記述します。

この質問は実際に書かれているため、あまりにも端が開いている可能性がありますので、候補者がどのように追加情報を探すかを確認するのに良い質問かもしれません定義された問題文(「整数の基本的なリスト構造を実装して、数字を末尾または任意のインデックスに追加し、削除し、リストの反転コピーを返す機能を含める」)生徒は解決できるはずです問題は、リストが初期のデータ構造コースまたは初期の基本的なコンピューターサイエンスコースのいずれかで提示される一般的な構造である限りです。

候補者とのやり取りに関しては、もし苦労しているのであれば、リラックスして、彼らが最初の本当のインタビューになるかもしれないので、パフォーマンスの不安を抱えているかもしれないので、少し寛容にしてください。問題を解決するためのヒントが必要になる場合があります。ほとんどの場合、最初の2つではなく3番目と4番目の問題の場合です。

また、インタビュープロセス全体を構築して、「優雅な出口」ポイントが組み込まれるようにします。たとえば、次のアジェンダがある場合があります。

  • 面接と挨拶、面接の手順。
  • スタッフプログラマーとの短いインタビュー、背景に関する基本的な質問。
  • プログラミングクイズのプレゼンテーション。
  • ブレーク
  • 休憩からの復帰、適切でない候補者の解雇。
  • スタッフプログラマーとの長期インタビュー。
  • 人事部へのインタビュー(必要な場合)。
  • 要約。

このインタビューフローは、候補者が休憩後に解雇される可能性があることを最初から知っているため、候補者を早期に解任できるようにする場合に適しています。また、クイズの前の短いインタビューは、彼らがいくつかのインタビューの練習をするテストを受けるために現れていないだけでなく、彼らが適切でないと判断することもできることを意味します。他のプログラマーがクイズを観察している間、または候補者を支援している場合、短い休憩中に候補者に合格/失敗する機会も与えます。

インターンシップのために面接をしていて、候補者が学生であるときはいつでも、彼らはまだ学生であり、面接をあまり練習していない可能性があり(パフォーマンス不安につながる可能性があります)、また、質問に答えることさえできます。つまり、彼らが与えられた問題に対する「理想的な解決策」のコピーとともに彼らに送ることは良い考えかもしれません。


3
+1とてもいい答え。このようなクイズのパフォーマンスの結果は、採用するかどうかを決定する際の「要因」にすぎないと考えています。これを厳密なgo / no-goフィルターとして使用すると、優れたインターンシップの候補者を見逃す可能性があります。インターンは、定義により、何か新しいことを試しています。彼らはあなたの職業に新しいだけでなく、「その場で」置かれることに対処するのに不慣れかもしれません。それには感情的な要素があり、人々はそれをさまざまな方法で扱います。
アンジェロ

@Angelo-だからこそ、インタビューを進めるかどうかを確認するのに十分な時間を人々に与えることができるので、私はいつも短いインタビューと観察/アシストされたクイズのファンです。休憩と早期解雇は、あなたがクイズで好むかもしれないほどうまくやっていない人とは対照的に、あなたが前に押したくないと知っている候補者のためです。
rjzii

短くて甘い。定型質問には定型回答が得られます。チーム/コラボレーションダイナミック、即興能力、個々のモチベーションなど、より重要な特性を決定する質問をしてみませんか?
エヴァンプレイス

82

面接の私の目標は、どちらの側にいても、同僚と話しているような気分になることです。同僚が問題を抱えていると、いつも私のオフィスに来ます。立ち往生したら同僚に助けを求めます。それで、インタビューで、私はそのダイナミックを再現しようとします。

言い換えると、同僚がフィボナッチ数列を実装する必要があり、それが何であるかを知らなかった場合、あなたは何と言いますか?彼らが自分で続けるのに十分それを理解するまで、あなたは彼らにそれを説明するでしょう。それが永続的でない限り、無知に恥はありません。

そのエクササイズを行っても、自分がその人と一緒に働いていると想像できない場合は、彼らは仕事に適していない。


32
+1:教室のダイナミクスではなく、面接中に動的なジョブを再作成します。
マチュー

3
+1:その通り。チームフィットで雇い、経験とスキルを支払います。
pdr

1
いい視点ね。私の最も成功したインタビューでは、人々は直面している問題に関する質問をしてきましたが、実際に彼らが解決策を見つけられるよう支援することができました。代わりに、面接を数日間のコンサルティングとして扱うことができればいいと思います。
ビルK

11
「永続的でない限り、無知に恥はありません。」の+1
mskfisher

9

インタビューでこのような質問をするのは、誰かが問題を解決する方法を見つけられるかどうかを判断することです。プログラマーになるという仕事は、一般に「これらの要件を取り入れてコードに実装する」と「実装が要件に一致しない理由を考えて修正する」という2つのことで構成されています。あなたが本当に探しているのは、これらの特定の質問に対する解決策ではなく、物事を理解する能力です。

これを理解して、誰かを開始するためのヒントを1つまたは2つ付けます。しかし、問題を解決する方法が分からないことが明らかになった場合は、答えが得られ、演習を続ける必要はありません。

例として、現在の仕事で面接したとき、グラフ上のあるノードから別のノードへの最短経路を見つけることについて質問を受けました。私はダイクストラのアルゴリズムのようなものを使用する可能性が高いと答えました。これは大学で1日前に学んだことを漠然と覚えており、それ以来使用したことはありませんでした。そして、質問。インタビュアーは、グラフがわずかに変更された場合、私の解決策は無限ループになることを指摘し、それが私の記憶を揺さぶったので、この問題を回避する正しい方法を説明しました。そして、私は仕事を得ました。


6

インターンのポジションについては、あなたは少し尋ねるかもしれません。

4番目の質問であなたが何を意味しているのかわかりません。再帰的な質問をするのは少し非現実的で、独自のコードベースを調べて、再帰が使用される領域の数を決定します。面接の状況はストレスが多く、候補者があなたがこれまでにプログラムするほとんどのものと比較して、めったに使用されない戦略を実装することを期待することは、特に面接の開始に向かって不公平です。個人的には、重要な概念が何を意味するのか/どのように使用されるのかを説明する必要がある場合、質問をして、缶詰の例を提供します。XブックまたはGoogle Y検索がコードベースに何かを実装するために必要なすべてを提供することを教えてくれる候補者にもっと興味があります。


感謝しますが、いくつか追加します。私は彼らと同じ学部に所属しており、最初の学期にこれらのタスクをカバーしましたが、最終年度に彼らがどのように問題を考え解決することができるかを見るのは良い評価だと思います(さあ、フィボナッチは彼らのために実際に与えられます)。リストの質問について、はい、私はここでそれをうまく説明しませんでしたが、彼らのために私は複数の行を取りました。そして、他のソフトウェア開発の事柄、その​​動機などについても公開討論を行いました!
ミコラスシムティス

4

私見あなたの最初の2つの質問は、彼/彼女をプログラマーと呼んでいる誰でも解決できるはずです。

インタビュアーがこれらのいずれかに苦労していることがわかった場合、問題を言い換えて、彼が完全に理解しているかどうかを確認します。次に、ペンと紙、ホワイトボード、人物を描くなど、彼女が問題に取り組むために好むあらゆるアプローチを使用するように励ます。また、彼女に声を出して考え、彼女の思考プロセスを把握し、必要に応じて、彼女が正しい道を進んでいないか、何らかの障害がある場合は、少しヒントを与えるように頼みます。しかし、いくつかのヒントが役に立たない場合、または上記で述べたように、私が彼女のために問題を解決することになった場合、おそらく時間の無駄をなくすためにインタビューを終了します。インタビューでは、候補者が知らないことではなく、候補者が知っていることを見て集中するように常に努めていますが、重要な知識が見つからないようであれば、しばらくしてafterめます。

3番目と4番目はやや難しいので、もし後輩がそれらを得ることができなかったなら、そうでなければ彼がそうでなければ良い問題解決アプローチと熱意を示したなら、私は受け入れることができました。しかし、高齢者にとって、彼らはまだ必要です。


4

「FizzBu​​zz」の意味を調べる必要がありました。私はゲームとそのルールについて聞いたことがありますが、その名前ではなく、しばらくの間ではありませんでした。したがって、面接対象者に情報を提供する必要がないとは思わないでください。

そうは言っても、これらはすべて基本的なコーディングの問題であり、検査によって答えをコーディングできなかった場合、エントリーレベルのコーディングの立場であってもインタビューする人が自分の道を考えることができると期待しています。そこで、私たちは同じページにいます。あなたの問題への答えは、彼らがどのように間違っているかによって異なります。

  • マイナーな構文の問題:特定の言語のコードを期待している場合、セミコロンを逃したり、識別子の1つのスペルを間違えたりしても、過度にカウントオフしないでください。ほとんどのIDEはすぐにそれをキャッチし、誰もが時々タイプミスをします。私が何かをコーディングすることを期待されたほとんどすべてのインタビューで、アルゴリズムがインタビュアーに適切に伝達され、ロジックが健全である限り、「疑似C-ish」は受け入れられました。

  • マイナーロジックの欠陥:アルゴリズムが予想シナリオのすべてではないが、ほとんどの場合に予想どおりに動作する場合(たとえば、FizzBu​​zzをコーディングする場合、15は「Fizz」または「Buzz」になりますが、両方が想定どおりになりません)、 「ユニットテスター」になり、そのインスタンスでアルゴリズムが失敗することを指摘し、修正できるかどうかを確認します。彼らはその特定のケースを見落としているか、要件を十分に理解していないかもしれません。両方とも、コーディングにおいて日常的に発生する完全に理解可能なものであり、追加情報またはフィードバックを提供するだけで簡単に克服できます。

  • 主要なロジックの欠陥:アルゴリズムが与えられたテストシナリオのほとんどまたはいずれにも合格しない場合は、それも指摘し、修正できるかどうかを確認します。これはもっと問題です。システムのいくつかの非常に基本的な要件を誤解したか、いくつかの大きなロジックホールを見落としていました。しかし、問題の詳細を考慮して、コードのどこでエラーが発生したかを正確に伝えずに修正できる場合は、要件を明確にせずに先に進みます。

  • どこから始めるかわからない/特定のケースへの答えをハードコードする/彼らの擬似コードを理解できない:これらは危険信号です。誰かにFizzBu​​zzルールに従うアルゴリズムをコーディングするように頼み、それらのルールを説明して、空白の凝視を取得したら、インタビューは終わりです。同様に、彼らがボードに何かを置くことができるが、問題空間の大部分で失敗し、失敗とそれを修正する方法を説明するときに手を握らなければならない場合、私は2回目のインタビューに進みません。


実用的なアプリケーションを使用して、彼らが学校で受け取った定型質問についてインタビュアーをテストしますか?なんて斬新なアイデア。+1
エヴァンプレイス

3

面接を受けたことがない、不安の問題がある、実際の生活の状況に陥ったことがないため、ヘッドライトで鹿のように振る舞う潜在的なインターンを実際に獲得した場合彼らが最後に取り組んだことを彼らに尋ねる。

それから彼の領土になるので、彼は狂気に神経質にならないかもしれません。適切な場所が見つかったら、「ねえ、どうやってそれを実装しましたか?」と尋ねます。彼が説明できるなら、それは彼の考え方への洞察をあなたに与えるかもしれません。

その後、アジェンダに独自のテストを配置します。


2

Fizzbuzzは絶対的な要件です。Fizzbuzzをコーディングできない場合は、雇わないでください。

通常、候補者にインタビュー前のコードセッションを依頼します。このセッションでは、Google Docsを使用してプログラミングの問題(通常、Fizzbuzz + Fizzbuzzを簡単に完了できる場合はより高いレベルの問題)を処理します。

通常、私は彼らと電話やスカイプで話します。彼らが問題を完了するのを見ているので(そして彼らが特定の時点で考えていることについて話しているので)、彼らはそうしなかったと合理的に確信できます。答えをGoogleで検索するだけです。

他の問題が適切に指定されている限り(つまり、それぞれに式を与えれば)、質問は問題ありません。

候補者にインタビューするとき、私は彼らが遭遇する可能性が高いプログラミングの問題に固執しようとします。あなたがウェブ上にいるとき、ユーザーが直面しているほぼすべてのものが何らかの文字列操作に関係しているため、文字列操作の問題が大好きです。彼らがそれをどう扱うかが重要です。


1

それはあなたが満たそうとしているポジションの口径に依存します。

あなたが上級開発者を目指すなら、私は彼らがそのすべてを知っていることを期待するでしょう。もし彼らがそれを間違え、私が悪を感じていたら、私はただインタビューをやめます、ありがとう、さようなら。私がもっと丁寧な気分でいたら、彼らに感謝し、インタビューの残りを急いで行きます。

私がジュニア開発者に行く場合、それらの質問は非常に難しいと考えることができます。私は彼らの能力と学ぶ意欲を探求することにもっと興味があるでしょう。それで、私は彼らにヒントを与えて、彼らをガイドして、彼らがどのように反応するかを見ようとします。


私はそれらのソフトだったように、これらは、しかし、私は問題があることを期待していなかったと私は柔らかすぎてきたように、今私が感じ、大学での最後の年にインターンだった...
Mykolas Simutis

面接を早期に中止し、彼らが仕事を得る機会に耐えられないなら彼らを弁解することは何も悪いことではありません、あなたがそれについて丁寧であることを確かめてください、ポジションのレベルは本当に重要ではありません。
rjzii

1

インターンインタビューは、異なる種類のインタビューです。私が通常行うことは、私の標準的な開発者の質問(あなたが提供した質問など)を使用して、彼らが教育のどこにいるかを測定することです。これらの問題を解決する能力は、2年生から高齢者まで大きく異なります。

その情報を入手した後、チームで働くことができるか、教えることができるか、当社でのインターンの恩恵を受けるか、開発/学習に情熱があるかなど、他のスキルにインタビューの焦点を合わせます。

私にとって、それは他の候補者とは一線を画すインターンを本当に設定する非技術的なものです。学期だけの仕事をしたい人よりも、学び成長するように駆り立てられている人をコーチング/メンタリングするのに数ヶ月費やしたいです。


たぶんそうかもしれませんが、これらの質問を解決していないので、非常に基本的なことからそれらを解き放つだけのように感じました!
ミコラスシムティス

事実、ほとんど経験のない2年生を採用することは、すべての組織でうまくいくとは限りません。
ブライアンディショー

1

インタビュー対象者があなたの会社にどのような価値を追加する可能性が高いかを自問してください。特にfizzbuzzレベルで問題を解決できない場合は、メンターが関与するコストを考慮してください。答えが意図した給与に見合っていない場合は、採用しないという経済的なケースがあります。

上司に戻って「採用する価値のある会社に十分な価値を与える候補者がいなかった」と言うことを恐れないでください。これは、常に負の価値を持っている人で終わるよりも、より良い行動をとる必要があります。なぜなら、常に助けてくれる人がいるためです。


0

私の答えは少し不親切または退屈に見えるかもしれませんが、うまくいくと思います。まず、候補者に非常に簡単な質問をします。これは、自信をつけるのに役立つウォームアップ質問として役立ちます。それらが成功するかどうかに関係なく、私はささいな問題ではなく、仕事に伴うものに直接関係する質問に移ります。

この時点では、すべてまたは何もありません。彼らがそれを航海すれば、素晴らしい、問題ありません。彼らが少し苦労しているなら、問題はありません。私は彼らを助け、他の質問に進んで他の能力を評価します。

しかし、もし彼らがそれを解決する能力を完全に欠いているならば、私は先に進み、インタビューの残りの時間を彼らを助けて燃やす。候補者はまだインタビューに従事していると感じていますが、インタビューを別の無関係な方向に誘導する必要はありません。候補者にとっても有益です。なぜなら、それは教育的かもしれないからです。


0
  1. それらに優しくしてみてください。あなたの質問から、あなたはここでさえも素敵になろうとしていないことがわかります。誰もがこの「フィズバズ」という用語を知っているべきだと思いますか?または、自分で書くのが面倒だったので、ネットを検索する必要がありますか?それどころか、ここの誰もが直角三角形とは何かを知っていると思います。
  2. 「構造リスト」とは何ですか?知りません。「リスト構造」を知っています。意味:整数のリスト?あなたが意味する整数のリスト?私も、どうやって始めればいいのかわかりません。そして、あなたが英語ではないことを話さないでください。私も。そして、私も英語圏の国に行ったことがありませんでした。あなたは確かに複数形の整数が整数sになることを知っています。あなたがここであなたの平等で理解できるようにしようとしていないなら、私はあなたがそこでどうやっているのか想像できます。
  3. リテラシープログラマは、フィボナッチ列が再帰によって行われてはならないことの本の例であることを知っています。あなたはあなたに対抗する能力またはコーディングスキルのためにそれらをテストしていますか?あなたの仕事をして、再帰を使用するスキルをテストするためのより良い例を見つけてください。
  4. プログラマーにとって「ストレス下で働く能力」とは、必要なときに夜働くことができることを意味します。しかし、優れたプログラマーが必要な場合、彼らはチーフが非常に素晴らしく、理解し、助けになる仲間であるのを待つでしょう。そうでなければ、優秀なプログラマーはいません。彼らはアルファラットオスではありません。攻撃を感じた場合、彼らは単に殻を閉じて何もしません。

したがって、私の答えは次のとおりです。

PSあなたはすでにマネージャーですので、あなたは本当にストレスを抱えるべきです。

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