Завдання на співбесіді - від простого до складного.

Так, це крик душі. Тому що в середньому за тиждень я співрозмовляю кілька, які претендують на посаду php-програміста.

Крик душі, власне в наступному:

з, припустимо, 10 осіб найпростіші тести складають максимум двоє (один - наполовину або на дві третини). Ось така проста статистика.

Можливо, я ставлю надто складні запитання (дещо видозмінені питання під палачами)?

Власне, в даній топіці я запропонував би поговорити на тему завдань, пропонованих потенційному співробітнику на співбесіді.

Може бути, хтось поділиться своїми завданнями, або в коментарях якимось чином народиться щось дивно-просте, але дозволяє зрозуміти рівень людини?

Завдання номер раз.

$x = 1;

if ($x == '1') {

echo 'a';

}

if ($x == true) {

echo 'b';

}

if((bool)$x === true){

echo 'e';

}

if ($x === true) {

echo 'c';

}

if((int)$x === true){

echo 'd';

}

/*

Який рядок виведеться при виконанні скрипту?

Чому сповнюється або не сповнюється кожна з умов?

*/

Завдання номер два

/*

Рядок

site.ru/?x=foo

*/

error_reporting(E_ALL);

ini_set('display_errors','1');

ini_set('register_globals','on');

var_dump($x);

unset($x);

ini_set('register_globals','off');

var_dump($x);

/*

Що виведе скрипт в ідеальних умовах сервера?

*/

Завдання номер три

class Test{

private $var;

function setMe($value){

$this->var = $value;

}

}

class More extends Test{

public $var;

}

$oTest = new Test;

$oMore = new More;

echo $oTest->setMe('foo');

echo $oMore->setMe('foo');

echo $oMore->var;

echo $oTest->var;

/*

Для якої версії PHP буде працювати цей скрипт?

Що виведе цей скрипт?

*/

Завдання номер чотири

/*

Припустимо, що вхідний URL такий:

site.ru/?x=1

Припустимо, що у нас є таблиця виду

--news

----id (int,11)

----anons (varchar,255)

----text (text)

Існують записи

1 анонс текст

2 анонс1 текст2

*/

$query = «SELECT anons,text FROM news WHERE id='».$_GET['x'].""'"";

$res = mysql_query($query);

if($res && mysql_num_rows($res)>0){

while($row = mysql_fetch_assoc($res)){

echo $row['anons'];

echo $row['text'];

}

}

/*

Зробити SQL-іньєкцію скрипту, яка виведе всі існуючі новини.

Змінити запит так, щоб SQL-іньєкція не працювала.

Віддати заголовок 404 Not Found у разі, якщо новини з вказаним ID у базі виявлено не буде.

*/