インタビューは3つの部分で構成され、30〜60分かかります。
1.プログラマー自身の話。
2.地平線に関する短い質問。
3.問題解決
プログラマー自身の話。
まず第一に、私は彼にどのように彼がウェブプログラミングに来たかを伝えるように頼みます。 私が始めたとき、私はプログラミング中毒になったとき:)
仕事の最後の1つか2つの場所、その人が何をしていたのか、彼が責任を負っていたのか、技術的および組織的にそこで何をしていたのかについて非常に質問します。
リラックスするには人が必要です。
この段階で、5つのオプション、ハッチが丸い理由、その他の質問について尋ねましたが、何も与えられないため、これは長い間消滅しています:)
何が人を動かし、彼の経験が何であるかが明らかになるとすぐに、技術的な部分に移ります。
地平線に関する短い質問。
Webプログラミングはテクノロジー動物園です。プログラマーと同じくらい強力なドライバーの要件についての逸話を思い出します:)
10〜15分で、この技術またはその技術をどの程度深く所有しているかを理解し、理解のレベルを理解する必要があります。
私は、DBMS、SQL、アルゴリズム、データ構造、言語、コマンドライン、OOP、* nixの分野で尋問しています。
初級、OK、上級の3つのレベルで経験と理解を共有しています:)
まず、データベース。 最初のタイプの質問の中には、「正しい結合はJOINとどう違うのですか?」、そして3番目の「B +ツリーとは何か、なぜインデックスの実装で頻繁に使用されるのか?」があります。
OOPについて非常に興味深い。 「カプセル化、ポリモーフィズム、継承とは何か」という質問が第2レベルである場合、それが実際に何であるか、なぜ、SOLID + DRY + IoCに重点を置いてリファクタリングを悪化/改善するかを説明し、ユニットにすることができます(またはリファクタリングを混同しないでください)パフォーマンスの最適化あり)。
原則として、1つまたは2つの文が質問に答えます。 知識のある候補者が覚えている場合、例えば、自己均衡の赤黒木を抽象的に話すことができます。 まあ、彼が定期的にHabrを読んでいて、それについての記事を見ていることに気づいたら。
もちろん、Linuxについて尋ねますが、少なくともUbuntuの下に座っている人は喜んでいます。 grep(ls | grep "test")を含む名前に "test"を含むファイルを一覧表示する方法、またはls | grep xargs svn up。
「それだけではありません」(C)TV-SHOP 90x
問題解決
しかし、理論がどれほど美しいものであっても、それはすべて最も重要な部分の前のウォームアップにすぎません。
候補者と30分間話をして、彼がHRの女の子ではないことを理解し、動機を理解し、スケジュールのポイントとRFPへの希望を話します。
そして、私はタスクを与えます。 ここで何らかの形で翻訳されたこの記事には、実際のプログラマーは再帰とポインターを使用する能力によって決定されることに同意します。
多くの点で、これは人間の進化に似ています。 彼らは、7 + -2の要素をすぐに頭の中で操作する能力と、再帰を理解することでサルと区別されると言います(ノミを研ぐ必要があり、パターンが再帰的に減少し、刃が非常に鋭く、切れ味が良くなります)。
したがって、ポインター算術とは何かを想像し、再帰の仕事を理解する心の能力は、プログラマーを普通の人々と区別します。
原則として、私は簡単なタスクを与え、チェックせずに直接オンラインでコードを書くようにお願いします。 最近、私は人が心配している場合私なしで10-15分を与えています。
そして、1つまたは2つのタスクで、インタビューの結果が何であるかが明らかになります。
ハッチに関する質問-nafig。 再帰を長く生きる!
更新しました。 口頭インタビューと自宅での追加タスクを伴うタスク。
タスク1
無制限のネストの配列を考えると、深さと要素への現在のパスに比例したインデントを持つネストされたリストとして表示する関数を記述する必要があります。
showMenu(メニュー)を呼び出します。
次のようなHTMLコードを生成する必要があります
配列:
メニュー= [ 「単純なアイテム」、 [ 「タイトル」=>「複合アイテム」、 'items' => [ 「シンプルアイテム2」、 「シンプルアイテム3」、 [ 「タイトル」=>「別の複雑なアイテム」、 'items' => ['...'] ] ] ] ];
タスク2
文字列を作る
「{お願い|ちょうど}この{驚zing |クール|簡単な}テスト文を{変更{速い|即座に}ランダムに|毎回変更}にしてください。」 可能なすべてのオプションが提供されました(ネストは制限されません)
例えば
str = "{A | B | C}テスト"
3つのオプション
「テスト」
「Bテスト」
「Cテスト」
str = "{A | B} {A | B}"の4つのオプション
「AA」
BB
「AB」
「BA」