вторник, 5 октября 2010 г.

Вопросы к собеседованию про PHP

Как я уже говорил, моё начальство вознамерилось нанять ещё одного PHP-разработчика мне в компанию. Круто, хоть будет с кем поговорить. Вероятно, скоро один из кандидатов придёт на собеседование. По этому поводу я подготовил список вопросов по PHP, но, как мне кажется, вопросы недостаточно сложны и список недостаточно длинен - я больше не могу придумать в силу своего скудоумия и отсутствия фантазии. Кроме того, я бы ещё дополнил его вопросами по HTML, CSS, JS и jQuery, MySQL, регулярным выражениям и основам работы в UNIX-подобных операционных системах, но, боюсь, у меня не хватит на всё это фантазии и знаний. Ну что там по jQuery спрашивать можно? Типа почему алерт, который стоит после гет-запроса, отобразится раньше, чем алерт, который стоит в функции, повешенной на калбек этого гет-запроса? Поэтому пока я решил ограничиться только PHP. Пару вопросов я убрал - про порядок выполнения деструкторов и про уборщика мусора (про уборщик мусора надо знать только, что он работает на выходе из функции), потому что в мануале про это как-то не особо написано, и если никогда с этим не сталкиваться, то можно только догадываться и строить логические рассуждения о том, как это должно происходить. Ну, оно происходит как и должно, если рассуждать логически, в отличие от того, как (по моему мнению) должна быть устроена модель ООП.

Ниже текущий вариант списка вопросов по PHP для чувака, который придёт собеседоваться. Хотите проверить себя?

Как вы думаете, всегда ли эта функция будет работать так, как задумано?
function foo($str, $find) 
{
if(strpos($str, $find))
{
echo '"'.$find.'" exists in "'.$str."'";
}
else
{
echo '"'.$find.'" does not exist in "'.$str."'";
}
}


Как вы думаете, чему равен $x в итоге?
function foo(&$a) 
{
return $a++;
}
$x = 17;
$x = foo($x);
echo $x;


В чём разница между функциями include() и require()? В чём разница между функциями require() и require_once()?

В чём разница между функциями count() и sizeof()?

Как вы думаете, чему в итоге равно $a?
$a = "1"; 
$a[$a] = "2";
echo $a;


Что будет выведено в итоге?
$q = $w = 'w'; 
${$q} = 'q';
echo ${${$w}};


Какие элементы будет содержать массив $a?
$a = array(1, 2, 3, 4, 5); 
foreach($a as &$v)
{
$v *= 2;
}
$v = 2;
print_r($a);


Как вы думаете, что останется от массива $a после нижеследующей процедуры?
$a = array(1, 2, 3, 4, 5); 
for($i = 0; $i < count($a); $i++)
{
if($a[$i] > 2)
{
unset($a[$i]);
}
}
print_r($a);


Что будет выведено?
class foo 
{
public $a = 4;
function inc_a($inc)
{
$this->a += $inc;
return $this->a + 1;
}
}
$z = new foo();
$x = new foo();
echo $z->inc_a($x->inc_a(19));


Что будет выведено здесь?
function foo($a)
{
return $a;
}
$a = foo('foo');
echo $a('a');


Как вы думаете, что будет выведено здесь?
class foo 
{
public static $v = 17;
function a()
{
echo $this->v;
}
}
class bar extends foo
{
public $v = 33;
}
$a = new bar();
$a->a();


Что означают слова public, protected, private, static и final перед определениями функций класса?

Как вы думаете, будет ли выведено что-нибудь в этом случае?
class foo 
{
public $i = 6;
}
$a = new foo();
$b = $a;
$b->i = 3;
unset($b);
echo $a->i;


Немного похожий случай. Как вы думаете, что будет выведено, если раскомментрировать первую строчку? А если вторую?
class foo 
{
public $i = 6;
}
$a = new foo();
$b = &$a;
// unset($a);
// $a = null;
echo $b->i;


Конечно, я к собеседованию ещё несколько вопросов придумаю, и часть заменю - это черновой вариант. Может, по джаваскриптам насочиняю ещё что-нибудь.

Комментариев нет:

Отправка комментария

Ублюдочный Гугл поломал форму комментариев. Извините.