Pull to refresh

Задачи на собеседовании — от простого к сложному.

Reading time2 min
Views27K
Да, это крик души. Потому что в среднем за неделю я собеседую несколько, которые претендуют на должность 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 в базе обнаружено не будет.
*/
Tags:
Hubs:
+45
Comments364

Articles

Change theme settings