Перейти к основному содержимому

22. Каверзные вопросы

В чём разница между == и ===?​

Junior

Ответ:

  • ==: Равенство (проверяет значение, выполняет приведение типов).
  • ===: Идентичность (проверяет и значение, и тип).

Что произойдёт при сравнении "10" и 10 с помощью ==?​

Junior

Ответ: Вернётся true из-за приведения типов (type juggling).


Что выведет следующий код?​

Junior
function foo(&$var) {
$var++;
}
$a = 5;
foo($a);
echo $a;

Ответ: 6. Оператор & передаёт переменную по ссылке, поэтому изменение внутри функции влияет на оригинальную переменную.


В чём разница между array_merge() и оператором + для массивов?​

Middle

Ответ:

  • array_merge(): Для строковых ключей последнее значение перезаписывает предыдущее. Для числовых ключей значения добавляются в конец и переиндексируются.
  • +: Для строковых ключей сохраняется первое значение, второе игнорируется. Для числовых ключей также сохраняется первое.

Как ведут себя статические свойства в наследуемых классах?​

Middle

Ответ: Статические свойства являются общими для всех классов в иерархии наследования, если только они не переопределены явно в дочернем классе.


Почему использование PHP в качестве демона связано с рисками?​

Senior

Ответ: PHP изначально спроектирован для обработки кратковременных запросов. В долгоживущем процессе утечки памяти в вашем коде или библиотеках со временем приведут к аварийному завершению процесса.