1

Тема: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

Всім привіт.
Отже передісторія. На роботі шукали кандидата на посаду php junior web develoer.
Всім кидав одне і те саме тестове завдання. Ви можете оцінити його і сказати чи воно складне для початківця, чи просте, і чи взагалі реально його розв’язати.
Якщо ви хочете його розв’язати код викладайте у спойлер, що б інші його не побаччили)))

Дякую всім за увагу.

<?

  interface FileInterface {

    /**
     * Constructor
     * @param string $filePath
     */
    public function __construct($filePath);


    /**
     * Returns the file name
     *
     * @return string the relative path
     */
    public function getFileName();


    /**
     * Check if file located in specific directory
     *
     * @param DirectoryInfo $directory
     * @return boolean
     */
    public function isInDirectory(DirectoryInfo $directory);

  }


  /**
   * Реалізувати клас
   */
  class DirectoryInfo {
    # ваш код тут
  }

  /**
   * Реалізувати інтерфейс
   */
  class File implements FileInterface {
    # ваш код тут
  }


  # цей код має працювати
  $file = new File(__FILE__);
  $file->isInDirectory(new DirectoryInfo(__DIR__)); // return true


  $file = new File('/tmp/data/test.txt');
  $file->isInDirectory(new DirectoryInfo('/tmp/data/')); // return true
  $file->isInDirectory(new DirectoryInfo('/tmp')); // return true
  $file->isInDirectory(new DirectoryInfo('/tmp/other')); // return false
  $file->isInDirectory(new DirectoryInfo('/tmp/data/test')); // return false

  $file->getFileName(); //return test.txt

2

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

Я б fopen() використовував під перевірку файлу...
А взагалі то нормальне тестування, я вважаю.

3

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

Нічого надскладного немає. Але скажу, що ООП почав вивчати вже після того,як отримав більш-менш хороші знання PHP.
Людина може непогано кодити,але ООП не знати,це щодо рівня junior.

Подякували: 221VOLT1

4

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

Дурне питання, але уточнити варто: файл має існувати реально чи перевіряти тільки структуру адрес?

5

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

@koala  чомусь тільки ви задали таке питання, всі інші вирішують по своєму.
Файл  може не існувати або доступ наприклад тимчасово заблокований/заборонений ітд.
Я чомусь впевнений що ви без проблем можете вирішити цю задачу і так і так ))



Але скажу, що ООП почав вивчати вже після того,як отримав більш-менш хороші знання PHP.
Людина може непогано кодити,але ООП не знати,це щодо рівня junior.

Я також був не гуру ООП на перших стадіях але класи писати міг.  "може непогано кодити,але ООП не знати" Я згідний з тим твердженням але у мові РНР ООП відіграє як на мене ключову роль, тому тут ця фішка не пройде ;)  Моє бачення.

6

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

Вважаю, що ООП одлякує початківців, а тих кого не злякає матимуть потім до нього нездоровий потяг, що теж не айс.

Подякували: 221VOLT1

7

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

Файл  може не існувати або доступ наприклад тимчасово заблокований/заборонений ітд.

Щось мені незрозуміло, яка різниця немає файлу чи до нього немає доступу? Так чи навпаки цьому скрипту байдуже що не так з файлом, бо сенс тестування - виявити навичкі ООП. Так, чи я помиляюсь?

8

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

Не було чим зайнятись а під рукою тільки телефон,з якого і кодив..
Простий варіант..

interface FileInterface {

    /**
     * Constructor
     * @param string $filePath
     */
    public function __construct($filePath);


    /**
     * Returns the file name
     *
     * @return string the relative path
     */
    public function getFileName();


    /**
     * Check if file located in specific directory
     *
     * @param DirectoryInfo $directory
     * @return boolean
     */
    public function isInDirectory(DirectoryInfo $directory);

  }

  class DirectoryInfo {
    public function __construct($path){
$this->path = $path;
$this->pathinfo = is_dir($this->path) ? true  : false;
  }

}

  class File implements FileInterface {
    public function __construct($filePath){
$this->filePath = $filePath;
}

public function getFileName(){
return pathinfo($this->filePath)['basename'];;
}
public function isInDirectory(DirectoryInfo $directory) {
return $directory->pathinfo ? file_exists($directory->path.'/'.pathinfo($this->filePath)['basename']) : false;
}

  }

$file = new File(__FILE__);
var_dump($file->isInDirectory(new DirectoryInfo(__DIR__)));
echo '<br>';

$file = new File('/f.php');
var_dump($file->isInDirectory(new DirectoryInfo('./')));
echo '<br>';

echo $file->getFileName();

9 Востаннє редагувалося quez (13.11.2015 16:39:36)

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

funivan написав:

Файл  може не існувати або доступ наприклад тимчасово заблокований/заборонений ітд.

Тут немає ні одного метода, якому потрібно знати ці атрибути (крім існування). Ви впевнений, що їх потрібно тут використовувати?

10

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

А яка тема перша була? Ця чи Рукі. Бо я перше ту побачив. Зараз з одним PhD нянчусь, то в нього так ж проблеми як і в Рукі.

11

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

Vo_Vik написав:

А яка тема перша була? Ця чи Рукі. Бо я перше ту побачив. Зараз з одним PhD нянчусь, то в нього так ж проблеми як і в Рукі.

Ця

12

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

@Itary так, основна мета виявити навички ооп.
@0xDADA11C7 якщо початківець знає основи ооп це добре. Простіше сказати що тут і тут не юзати обєкти а масиви, аніж вчити і розказувати що таке класи і навіщо вони взагалі.
@quez основна мета це те що файл може не існувати. Я старався донести саме цю фішу.

13

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

Так як я виконав,я б пройшов би у вашу контору?:)

14

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

так, основна мета виявити навички ооп.

Тоді пробачте, я вишче, виявляється, подуркував...

15

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

Блін, дуже складне завдання як на мене. Навіть не знаю на якому сервері перевіряти чи файл існує.

16

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

Блін народ. Ну гляньте на умову задачі. Там ж пише повертає тру якщо строка така. Де там щось пише про існування файлу.

Подякували: coder1

17

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

Vo_Vik написав:

Блін народ. Ну гляньте на умову задачі. Там ж пише повертає тру якщо строка така. Де там щось пише про існування файлу.

Дякую, тепер поняв.

18

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

@VTrim на співбесіду скоріш за все я б вас запросив

Підказка:

Прихований текст

є ще така функція як basename  ;)
також є strpos ;)

19 Востаннє редагувалося VTrim (14.11.2015 19:50:36)

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

@funivan,
strpos я б точно не використовував,а на рахунок basename,то згадав пізніше, але вже не виправляв)
На співбесіду запрошуєте тільки тоді,коли людина справиться з тестовим завданням?

20

Re: Оцініть/Розвяжіть тестове завдання на посаду для junior php developer

@vtrim пішов такий треш що треьа кидати тестове завдання і потім співбесіда. А у резюме пишуть знаю сімфоні Уіі і паттерни а відповісти на питання чим паблік проперті від прайвет аідрізняється - не можуть.

Постараюсь написати статтю на блозі про те хто приходить на співбесіди ))

Подякували: 221VOLT1