web-dev-qa-db-ja.com

インタビューでPHPスキルをテストするにはどうすればよいですか?

私の会社はPHPの開発者を雇う必要がありますが、私の会社ではPHPの知識がなく、PHPのスキルをテストするのが難しいと感じています。 C/Java開発者であれば、Game of Lifeの簡単な実装を作成するように依頼しますが、PHPは完全に異なる言語です。

私は興味を持ってこのテストを見ました:

http://vladalexa.com/scripts/php/test/test_php_skill.html

誰か他の提案がありますか?

58
Mascarpone

コード

  • 候補者にコードを書くよう依頼する
  • 候補者にコードを読むように依頼する

候補者にコードの作成を依頼する場合は、次のことを確認してください。

  • コードは自明ではないが小さい
  • マニュアルとインターネットへのアクセスを許可します

候補者にコードを読むように依頼する場合は、次のことを確認してください。

  • コードにいくつかの些細なエラーがあります
  • コードにいくつかの重要なエラーがあります
  • コードは正常に動作しますが、簡単に最適化できます

3つ以上の異なるコードを使用できます。単純なコードから始めて、候補者が簡単に対応できることがわかった場合にのみ、次のコードに進みます。物事を盛り上げるために、いくつかの再帰を投入します。

リソース

PHPリソースの詳細なリストを求めてください。本、ブログ、フォーラム、雑誌など。それが私の現在の雇用主が StackOverflow について知った方法です。

候補者が StackOverflow またはProgrammersについて言及している場合は、ユーザー名を尋ねたり、調べたりすることはできません。彼らが彼らの評判を宣伝したければ、彼らは履歴書に Careers 2. リンクを含めたでしょう。

フレームワーク

すべてのPHP開発者は最も人気のあるPHPフレームワークを知っている必要があります:

少なくともそのうちの1つに堪能であること。それぞれにいくつかのコードサンプルを用意し、候補者にどちらがより精通しているかを教えてから、それらを読んで説明するように候補者に依頼することができます。

デバッグとプロファイリング

私は常にPHP開発者はデバッグとプロファイリングのスキルに欠けていると感じていました(おそらくPHP一緒に働いた開発者のみ)。)候補者が積極的に xdebug を使用していることを確認します。残りの面接を気にせず、単に採用するだけです。;)

入力のサニタイズ

これは重要。それがなぜ重要であるかについての議論から始め、次にそれを達成するための最も一般的な方法を尋ねることができます。この ディスカッション は、何を尋ねるかを支援します。

いくつかのヒント:

PHPスナフス

多くのPHP snafus in this excellent conversation 。を見つけることができます。上級職に面接する場合は、それらのいくつかについて明確に尋ねる必要があります。いくつかの例:

PHPの文字列内の数値の処理:

"01a4" != "001a4" // true
"01e4" == "001e4" // also true

有効PHPコード

System.out.print("hello");

PHPでは、文字列は関数ポインタと同じくらい優れています。

$x = "foo";
function foo(){ echo "wtf"; }
$x(); # "wtf"   

単体テスト

もっと言う必要がありますか?

結論

良いPHP開発者は、さまざまなスキルと才能を組み合わせる必要があります。

  • HTTPの十分な理解
  • Apache構成の十分な理解(会社で別のWebサーバーを使用している場合でも)
  • JavaScriptの少なくとも基本的な理解
  • HTML/CSSの優れた理解

リストはどんどん続きます。面接は求人の具体的なニーズに合わせて調整するようにしてください。優れた開発者だけを雇うのではなく、すぐに彼/彼女に必要なことに優れた優れた開発者を雇う必要があります。

71
yannis

あなたがリンクしたテストは興味深いもので、Yannis Rizosの answer は素晴らしいですが、これも重要だと思います。

優れた開発者が必要な場合は、PHP開発者を探してはいけません。PHPを知っている優れた開発者を探してください。つまり、インタビューの少なくとも半分は、それほど多くない質問をする必要がありますPHP構文またはPHP関数。

MVCとは何か、AJAXとは何か、HTTPの仕組み、RESTの仕組み、SQL結合の仕組み、いくつかのデータ構造、いくつかのパフォーマンスの基本(測定方法、改善方法)、テスト基本、セキュリティの基本(XSS、XSRF、注入、防御方法)、典型的なPHPドメイン-Web、ネットワーキング、データ変換など)に適用される基本的なプログラミング技術の知識.

彼がそれが上手い場合は、簡単なコードを書くように頼むことに進み、テキスト内のほとんどの母音が並んでいる単語を見つける、テキスト内の各単語を逆にする、または2つを掛けるなど、長くはかからない簡単なタスクを選びます。行列。必要に応じて、PHPでGame of Lifeを実装するように依頼することもできます。

彼がそれを通過した場合、あなたはよりトリッキーなPHP=質問に進むことができますが、これにあまり重点を置かないでください。彼はマニュアルでそのほとんどを読むことができます、そして彼ができること読んだら、彼が上手くなれば、すぐに習得します。PHPはシンプルに構築されているので、彼が優れたプログラマーであり、PHPの実用的な知識があれば、おそらく彼はできるでしょう。追いつくために。彼が一般的にプログラムする方法を知っているなら、PHPでプログラムする方法を学ぶことは逆より簡単です-PHP単体テストの目的やXSSの問題を取り除く方法がわからない場合に重要です。

44
StasM

Yannis Rizosの answer は良い答えですが、私はそのテストに合格しないことを知っているので、PHPチョップを改善するためにどこに重点を置くかを決定するためのリソースとしてその答えを使用するかもしれません、面接プロセスに参加するPHPを知っているプログラミングの仲間を見つけることは、あなたの価値があると思います。前の回答の質問はすべて問題ありませんが、ドメインに関する知識がないと、回答の質を評価するのが難しくなります。

とはいえ、一般的なプログラミング機能とチームフィットが言語固有の知識よりもおそらく重要であると他のユーザーが言っているように、必要なものによって異なります。

13
cori