インタビュー中に発生する可能性のある実用的なタスクの小さなコレクションを共有したいと思います。
Habrとネットワークのオープンスペースには、面接の口頭部分を準備するための質問のコレクションがたくさんありますが、準備に便利に使用できる実用的なタスクのコレクションはありませんでした。
最初に、コレクションを自分用に複製して実装の説明を始めるだけで十分です。残りはすべてそこにあります。 タスク用の既成の入力があり、var_dump()またはprint_r()から逃れることができるFBクラスがあります。 すべてが揃っているので、すぐにタスクを実行できます。 誰かがそれを必要とすることを願っています。
使い方は?
便宜上、タスクはGithubのいくつかのフォルダーインターフェイスによって表示されます 。 ITestSortInterface(/ src / Training)インターフェイスを例として取り上げます。 名前は、ソートタスクが含まれていることを示しています。
<?php namespace Training; interface ITestSortInterface { /** * * * array(2,5,3,5,6,7,8,9,25,24,18,26,27,28,29,30,31) * */ public function testSort1($array); /** * * * array( * '1'=>array('price'=>10,'count'=>2), * '2'=>array('price'=>5,'count'=>5), * '3'=>array('price'=>8,'count'=>5), * '4'=>array('price'=>12,'count'=>4), * '5'=>array('price'=>8,'count'=>4), * ) * * 'price' DESC 'count' DESC * array( * '2'=>array('price'=>5,'count'=>2), * '5'=>array('price'=>8,'count'=>4), * '3'=>array('price'=>8,'count'=>5), * '1'=>array('price'=>10,'count'=>5), * '4'=>array('price'=>12,'count'=>4), * ) * */ public function testSort2($array); /** * * * array( * array(10,5,3,6), * array(8,2,11,13), * array(9,25,30,18), * array(34,37,38,24) * ) * * * array( * array(2,5,3,6), * array(8,10,11,13), * array(9,25,24,18), * array(34,37,38,30) * ) * */ public function testSort3($array); }
タスクを開始するには、目的のインターフェイスを実装するクラスを作成する必要があります。 クラスTestを呼び出しました:
<?php // require_once('loader.php'); use Training\ITestSortInterface; use Training\Data; // Test ITestSortInterface class Test implements ITestSortInterface { /** * * * array(2,5,3,5,6,7,8,9,25,24,18,26,27,28,29,30,31) * */ public function testSort1($array) { // if (!$lenght = count($array)) return $array; // $x = $y = array(); // , , . // - $i = 1 for ($i = 1; $i < $lenght; $i++) { if ($array[$i] > $array[0]) $x[] = $array[$i]; else $y[] = $array[$i]; } return array_merge($this->testSort1($y), array($array[0]), $this->testSort1($x)); } /** * * * array( * '1'=>array('price'=>10,'count'=>2), * '2'=>array('price'=>5,'count'=>5), * '3'=>array('price'=>8,'count'=>5), * '4'=>array('price'=>12,'count'=>4), * '5'=>array('price'=>8,'count'=>4), * ) * * 'price' DESC 'count' DESC * array( * '2'=>array('price'=>5,'count'=>2), * '5'=>array('price'=>8,'count'=>4), * '3'=>array('price'=>8,'count'=>5), * '1'=>array('price'=>10,'count'=>5), * '4'=>array('price'=>12,'count'=>4), * ) * */ public function testSort2($array) { // TODO: Implement testSort2() method. } /** * * * array( * array(10,5,3,6), * array(8,2,11,13), * array(9,25,30,18), * array(34,37,38,24) * ) * * * array( * array(2,5,3,6), * array(8,10,11,13), * array(9,25,24,18), * array(34,37,38,30) * ) * */ public function testSort3($array) { // TODO: Implement testSort3() method. } } $test = new Test(); /** * . * \FireDog\FB::info() - * Data::getData(Data::ARR_SIMPL_INT) - */ \FireDog\FB::info($test->testSort1(Data::getData(Data::ARR_SIMPL_INT)));
ここでは、2つのヘルパークラス\ FireDog \ FBおよびTraining \ Dataが使用されます。 (小さなコメントをさせてください:FBまたはデータを使用する必要はありません-これらは便宜上のヘルパークラスです。しかし、ブラウザコンソールはvar_dump()またはprint_r()のより便利な代替手段であるように思われます)
最初のものは、ブラウザコンソールにデバッグ情報を表示します。

ブラウザは、firephpプラグインをインストールする必要があります。 これが Chrome用のプラグインです。
2番目のクラスDataは、タスク用の既成データを保存します。 $ test-> testSort1()を設定するには、配列array(2,5,3,5,6,7,8,9,25,24,18,26,27,28,29,30,31)が必要ですData :: getData(データ:: ARR_SIMPL_INT)を取得します
このコレクションは更新され、インタビューの準備だけでなく、PHPでのプログラミングスキルのトレーニングにも使用できます。 タスクを送信すると、最も興味深いものがコレクションに公開されます。
Githubのコンパイル
PS
コレクションには、インタビューで遭遇する単純なタスクのみが含まれます。 このため、一部のタスクには次のような定式化が含まれています。「1次元配列を自分で並べる」はい、関数sort()がありますが、ここではインタビューのコンテキストが重要です。 そのように定式化されたタスクでポーズを取られ、インタビューをしている場合、おそらく、そのようなタスクにはアルゴリズムトレーニングを評価するという唯一の目標があります。 これが明確であることを願っています。