技術面接とプログラマー能力[終了]


14

私が言うことは本質的に少し物議をかもしているかもしれませんが、私は今日非常に落胆しています-そして私はこれを尋ねます。

私はインターンシップのポジションについて大手テクノロジー企業にインタビューしたところ、典型的なアルゴリズム指向のインタビューの質問がたくさん聞かれました。今、私の背景を考えると、私はアルゴリズムに強いと思います(大学院レベルのアルゴリズム-NPの完全性やそれ以上のもの(近似アルゴリズムとランダム化アルゴリズム)にも優れた成績を収めています)が、残念ながらインタビューを失敗しました。文字列の問題を約10分で解決する非常に効率的な方法を考えてください。面接が終わったら、コップ1杯の水を飲み、バナナを食べてしばらくリラックスしてから、問題をもう一度試しました。回答5分以内に到着する可能性があり、さらに最悪の事態でした-私は実際にそのトラックにいて、インタビュアーがそれについてヒントを与えましたが、あまりにも多くのプレッシャーが私を料理しました。私の全体的な経験から、技術面接について考えるようになりました。いくつか質問があり、このフォーラムでそれらを提起したかった-

  1. 誰かの技術的能力を30分で判断することは本当に可能ですか?正直なところ?それともサイコロを投げただけですか?

  2. 技術面接の質問は問題解決能力を測定しますか?この点は非常に議論の余地がありますか?博士課程の学生として、数学の問題解決には、これまで聞いたことのないことを解決することが含まれることを知っています。一方、2つのリンクリストを並べ替えてマージしたり、k番目のレベルでバイナリツリーのすべての要素を印刷したりすることは、誰かが事前に解決策を見たり問題を解決したりすると、「単なる演習」になりますか?

  3. これらのインタビューで空飛ぶ色で出てきた人々は、偉大なプログラマーになることを続けますか?彼らは続けて、洗練されたゲームエンジン、グラフィックライブラリを設計し、高速な分岐結合フレームワークを作成しますか?技術面接での成功と実際のプログラミング能力との間に正の相関関係があることを示す証拠はありますか?それとも、これらのインタビューは「物事を成し遂げる」タイプの人(Spolsky)を見つけることに向けられたものですか?

ICML、VLDB、モビコムなどの画期的なアイデアを発表している多くの学者が、これらのインタビューにふさわしいことは間違いないでしょう。しかし、私は彼らがあなたがこの惑星で見つけるであろう最も賢い人々の一部であることをあなたに保証することができます。

私は主にアカデミア(大学生)です-ですから、フェンスの向こう側にいる誰かからの知覚に大いに感謝します。これらのインタビューを実際に行っている人はいますか?

[わかりました。すべての素晴らしく、思慮深い応答をありがとう。もう質問したくないので、この質問に答えてください。

候補者Xが既知のオープンソースプロジェクトに貢献した作品の優れた公開ポートフォリオを持っているとします。実際に行ってパッチを確認し、彼が閉じたバグを確認して、彼が作成した設計を確認できます。その場合、問題は、彼の公開されている/検証可能な作品にどれだけの重みを与えて、15分以内に非常に工夫されたバイナリツリーインタビューの質問にどれだけうまく答えるかです。]


11
就職のために人にインタビューするとき、私は良いプログラマーを探しているのではありません。私は良いエンジニアを探しています。プログラマーが問題を見て、解決策をコーディングします。優れたエンジニアは問題を見て、「これは私が解決する必要のある本当の問題ですか?」と尋ねました。そうでない場合は、正しい問題が何であるかを把握し、関係するすべての要素(スケジュール、お金、能力)のバランスをとるソリューションを設計し、それをプログラマーに渡してコーディングします。
PlayDeezGames 2012

2
うーん、理にかなっています。誰でも、C ++ / Java / pythonの生のコーディングスキルを6〜12か月で習得できます。ただし、パフォーマンス、スレッド、メモリの問題、およびトレードオフについて非常に注意深く理解する必要があるものを実際に設計することが重要です。同意する。ごめんなさい!しかし、私はあなたに賛成票を投じることはできません、十分な担当者がいません。
user396089

回答:


11

それを念頭に置いて...

  1. 面接プロセスの主な目標は、各面接対象者の個人的な能力について絶対的な真実に到達することではなく、多数の候補者の中から少数の候補者を選択することです。
  2. 良い開発者を引き継ぐよりも、悪い開発者を雇う方がはるかに費用がかかります。

面接の際は、多くの場合、不完全なショートカット(技術クイズなど)が使用されます。これは、先ほど述べたように、30分で人物を判断できる完璧なプロセスがないためです。しかし、ほとんどの人はあなたと並んで一緒に作業するという贅沢を持っているわけではないので、それがそれが何であるか、誰もがプレイするオッズゲームであるということを受け入れるべきです。


「それはとても良いです。悪い開発者を雇うことは、良い開発者を雇うよりもはるかに高価です」-ええ、私はここでの議論を理解しています。悪い開発者はゼロに近く、それに関連する負のコストは、期待されるユーティリティの合計値を正から負に引き下げる可能性があります。
user396089

5
@ user396089、学界では、人々は少なくともあなたにサービスを提供するためにリップサービスを支払うつもりです:トレーニング、メンターシップ、個人の成長など。少なくとも名目上、それは彼らの使命の一部です。民間部門では、その関係功利主義者の97%です。企業は彼らに利益がある限りにおいてあなたに機会を提供することにのみ興味があります。
Charles E. Grant

チャールズが言ったことに加えて、あなたがドアを通り抜けるとき、あなたはちょうど他の50人の候補者と同じように、会社と雇用マネージャーにとって全く知らない人です。ですから、あなたはプロレベルでも個人レベルでもこれまでで最高の人物になるかもしれませんが、状況を考えると、その時点での会社の目標は、実際に将来の価値を最大化すると同時に、最大化を追求しながら検索コストを最小化することです。
DXM

今日のインタビューで解決できなかったが後で解決した単純な文字列の問題について考えているのはおかしいです。しかし、それでも3週間近く試してみましたが、私の趣味のプロジェクトに関連する問題をまだ解決できていません。詳細はここで見つけることができます- stackoverflow.com/questions/9056108/...
user396089の

1
@ Antonio2011a:「どれほど有効か」はおかしな言葉で、白黒ではありません。さまざまな人々がさまざまな戦術を使用して、潜在的な従業員の質を判断します。唯一の真のテストは人があなたと一緒に働き、時間を増やすことを可能にすることなので、これらの戦術のすべてはある種のショートカットです。それでは、この質問はどのように有効ですか?または、ビッグOについて尋ねることがどれほど有効であるか、または彼が取り組んだことについて尋ねることがどれほど有効であるか。これらはすべて灰色の領域であり、完璧なものはありません。
DXM、2012

9

誰かの技術的能力を30分で判断することは本当に可能ですか?

ではない正確に。まったくプログラムできない人や、CVで説明できない人を排除することができます。それを超えて、私は通常、一般的な知性とフィールドへの関心を測定しようとしています。解決を求められた問題を知らずに、状況についてさらにコメントすることは困難です。

技術面接の質問は問題解決能力を測定しますか?

それは私の技術的な質問の目標ではありません。代わりに、候補者がコンピュータサイエンスの基礎を理解しているかどうかを調べています。問題解決能力を評価するために、私は候補者に彼らが取り組んだ興味深い問題について話すように頼みます。

これらのインタビューで空飛ぶ色で出てきた人々は、偉大なプログラマーになることを続けますか?それとも、これらのインタビューは「物事を成し遂げる」タイプの人(Spolsky)を見つけることに向けられたものですか?

それだけです。偉大さはまれです。私は有能な誰かを見つけてうれしいです。


問題は、KMPのバリエーションでした(文字列を1回パスすると、以前に見た一部の文字の出現回数が格納されます)。文字列の長さとあなたが持っている数に応じて最後に-あなたは実際の質問に答えることができます。オールインワンパス-O(n)時間と一定のスペースを使用O(1)
user396089

2
「有能な人を見つけてうれしい」
AProgrammer 2012

2
面接に合格するのは、(少なくとも!)幸運のおかげです。ある程度の知識を身につけたら、チャンスはほとんどすべての人が理解するよりもはるかに(!)大きな役割を果たします。読書の提案:MlodinowのThe Drunkard's Walk
コンラートルドルフ

はい、私はその本と、ナシム・ニコラス・タレブによるさらに面白くて皮肉な「ランダムネスによってだまされた」を読みました。言うまでもなく、私は本を読んだ後しばらくの間不況に陥りました。2冊の本の基本的な前提を理解していれば、それは「そうです、そのすべての運、運、そして運についてのすべてです」。世界はランダムであり、それに対処する必要があります。
user396089

5
  1. はい。はい、正直です。これは、30分で人の能力を完全に把握するのに十分な時間だと言っているのではありません。面接担当者の仕事は、面接対象者が誰であるか、彼らが何ができるかについての感触を得るために、そこで最善を尽くすことです。彼らが本当に知らなかった履歴書に何かを入れた人々を見つけることは簡単です。面接対象者が何ができるか、スキルと長所をすべて正確に把握することはできません。

  2. はい。彼らはあなたにインタビュー対象者の考えを見てもらいました。正しい答えを得る必要は必ずしもありません。誰かが苦労している問題に対処するのを見るのは、誰かが問題なく正解するのを見るのと同じくらい有益です。私はいつも、インタビュー対象者が答えられないかもしれないと思う質問をします。

  3. 技術面接で最高の候補者が見つかるという実証的な証拠は知りませんが、これは私が試した中で最高のものです。人によって得意なことは異なり、技術的な答えを正しく得ることが、採用するかどうかを決定する唯一のものではありません。会社にふさわしいことも非常に重要です。

あなたの質問に基づいて、あなたが理解する必要がある最大のことは、レターグレードのような明確に定義されたフィードバックが終わったことです。正しい答えを得ることは結果の一部にすぎません。優れたコードを作成し、アイデアを伝え、他の人の意見を聞くことも同様に重要です。ただし、これらの領域はより主観的であり、そのように扱う必要があります。

あなたが問題をどのように解決したかと同じように、一歩下がって頭をきれいにします。多くのことが面接に入り、面接担当者はそれが完璧なシステムではないことを知っています。彼らはあなたがあなたのために最善を尽くそうとしているように、彼らは会社のためにできる限りの最善を尽くそうとしています。


2
@unholysampler-「正しい答えを得ることは結果の一部にすぎない」というのは素晴らしい点です。クリスマスの1日後に完璧なオンライン販売ポータルを提供することは重要ではありません。遅すぎる。時間は正しい答えを持つことと同じくらい重要です。
jasonk

+1「彼らはあなたがあなたのために最善を尽くそうとしているように、彼らは会社のために彼らができる最善を尽くそうとしている。」
Burhan Ali、

5

30分で、人の技術的能力が少なくともxと同等であると判断できます。つまり、彼らの能力は彼らが示したものよりも高いかもしれませんが、あなたはそれが悪化していないことをかなり確信することができます。xが要件よりも高い場合は、それらを採用します。はい、あなたが実際の能力を下回って実証するのは不公平です。私が言えることは、デモンストレーションが上手くなることです。

誰かが実際に記憶された答えをがらがらとすると、私は彼らにもっと難しい問題を与えるでしょう。学界では暗記は重要なスキルです。仕事では、そこにグーグルがあるとき、それはほとんど冗長です。

最も優れたプログラマーがどのように採用されているかを見て、ある時点で就職の面接に合格したと仮定しても安全です。いいえ、誰かが30時間のインタビューから素晴らしいプログラマーになるかどうかはわかりません。幸い、ほとんどの企業は優れたプログラマーを必要としません。彼らは、快適なゾーンのすぐ外でタスクに取り組むことを恐れない堅固で信頼できるプログラマーとうまくやっていきます。

画期的な思想家が面接を失敗する可能性がある理由は、派手で画期的な問題を解決する機会が非常にまれであり、平凡であるが難しい問題を同僚が解決できることを証明した後にのみ、それらを解決するために信頼されます負荷が16%を超えるとソフトウェアがクラッシュする理由など、できません。


2
+1「...むずかしいが、16%を超える負荷でソフトウェアがクラッシュする理由など、同僚ができない難しい問題。」
ジェイディー

3

面接のテクニックが実際に機能するかどうかを知る人はほとんどいません。しかし、何も彼らの仮説を否定しないとき、彼らはそれが真実であることの確認としてそれをとります。したがって、サイコロを投げる明確な要素があります。

市場が合理的かつ効率的であるという経済理論が真実である場合、企業は面接が苦手な人を、彼らの仕事を悪くしない方法で採用しようとするでしょう。したがって、不適切なスーツを着て、汗をかき、非常に緊張し、面接のプレッシャーの下で技術的な問題を実行するのに苦労した誰か-外部の証拠があった場合、彼らはそうでなければ技術的な問題を行うことができ、仕事のプレッシャーはそれらのようなものではなかった(一般的にはそうではないので)面接の結果-候補者を他の方法で引き付けるよりも上手に候補者を獲得する可能性が最も高く、それに応じて行動する企業の最良の機会を表します。(企業の世界ではマネーボールを考えてください)。最終的にインタビューのバイアスは消えます。

実際には、これは人間の性質に反します。面接担当者は、ポジションに関係なく、自信を持って外向性の人が好きで、技術面接が履歴書や参考文献よりも悪い情報を提供する場合でも(おそらくあなたの場合はそうです)、それを考慮に入れます。

あなたの質問について:

  1. 幾分。テストのS / N比は低くなっていますが、技術面接での適格だが悪い面を犠牲にして、完全に不適格であるものを取り除くように調整できます。

  2. #1を参照してください。ノイズの一部は、人々が以前に問題を見たことがあるかどうかのばらつきから生じます。

  3. #1を参照してください。これらのテストと優れたプログラマになることの間には、おそらく小さな正の相関関係があります。

私のアドバイス-基本的な知識を得るために、いくつかのサンプルの技術的な質問を調べます。サイコロが少し転がっていることを覚えておいてください。面接中は自信を持ってください。あなたが実際に考えていることに気を散らすことなく、あなたが考えていることを説明できるなら、そうしてください。それが本当にうまくいかない場合は、面接で緊張していることを認めて、通常は問題がないようなものであると思われることを知らせてください。


1
「自信に満ちた外向的な人のようなインタビュアー」...これは私を少し困惑させます。私のマイヤーズブリッグスタイプはINTJです(MBは実際の性格タイプを少し代表していると仮定しています)。
user396089

2
多くのソフトウェア開発者は私のような内向的です。その結果、多くのインタビュアーもそうです。確かに、自信が役立ちます。しかし、賢明な答えはさらに役立ちます。
ケビンクライン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.