些細なことは、最初から木の幅優先探索をコードするように頼むことです。ええ、もしあなたが何をしているのか分かっていれば、それは簡単です。しかし、多くのプログラマーは、それに取り組む方法を知らない。
さらに有用なものは次のとおりです。私はこれをいくつかの言語で与えました。ここにはPerlのバージョンがあります。まず、次のコードサンプルを与えます:
# @a and @b are two arrays which are already populated.
my @int;
OUTER: for my $x (@a) {
for my $y (@b) {
if ($x eq $y) {
push @int, $x;
next OUTER;
}
}
}
私はそれらに次の質問をします。私は彼らにゆっくりと質問し、思考の時間を与えて、彼らにナッジを与えたいと思います:
- このコードを実行すると何がありますか?
- このコードは製造段階に入っており、このコードに戻って追跡されるパフォーマンス上の問題があります。潜在的なパフォーマンスの問題を説明してください。 (もし苦労しているのであれば、@ aと@bがそれぞれ100,000個の要素を持っていれば、どれくらいの比較が必要かを尋ねるでしょう。はではありません。これをより速くすることを提案します。 (コーディングが容易な方向を提案した場合は、コード化するように指示します。@intが何らかの方法で変更されるような解決策が考えられる場合は、それが重要かどうかをチェックする前に修正プログラムをコード化すべきでないことを認識しているかどうか。)
彼らはわずか(または非常に)間違った解決策を考え出す場合は、以下の愚かなデータセットは、あなたは全体の実行ほとんどミスを見つける:
@a = qw(
hello
world
hello
goodbye
earthlings
);
@b = qw(
earthlings
say
hello
earthlings
);
私はその2/3程度を推測すると思います候補者のこの質問に失敗します。私はまだそれに問題があった有能なプログラマーに遭遇していません。私は、数年の経験を持つ一般的なプログラマーよりも、常識的でプログラミングのバックグラウンドの少ない人がこれを上手く利用できることを見出しました。
これらの質問をフィルタとして使用することをお勧めします。彼らがこれらに答えることができるので、誰かを雇うことはありません。しかし、彼らがこれらに答えることができなければ、それらを雇うことはありません。
"文字列を取り、その文字列が数字の場合は真を返すメソッドを書く(最も効率的な正規表現回答)。" 私はあなたの仕事には理想的だと確信していますが、非常に悪いと思われる正規表現の解決策でその質問に答えた場合、私は働いています。プログラマー時間は効率的ですが、実行時間はありません。 このような単純な問題であっても、コンテキストは重要です。 – jheriko
ホワイトボードの効率的な使用とインタビューで私の時間を探しています。 合意された正規表現はほとんどのものではありません。そのような人為的な例の場合、あなたは本当にそのような実行時の制約を置きますか? 一般的に私の専門知識があるネットは、クロックサイクルにあなたのコードを精査しているわけではありません。あなたがそうだったら、本当にそれを管理することはできません。 – DevelopingChris
3rdのハックとは何ですか?置換| | |文字列に表示されない他の文字を含む? –