Рубрики
Uncategorized

Интервью на PHP (I)

Автор оригинала: David Wong.

## I. Понимание парадигмы базы данных

  • Первая норма (1NF): Атрибуты неразделимы
  • Вторая нормальная форма (2NF): соответствует 1NF, и неосновные атрибуты полностью зависят от кода. 2NF-это ограничение на уникальность записей, требующее, чтобы записи имели уникальную идентичность, то есть уникальность сущностей, или, чаще всего, идентификатор первичного ключа.
  • Третья парадигма (3NF): соответствует 2NF и устраняет транзитивные зависимости. 3NF-это ограничение на избыточность полей, то есть ни одно поле не может быть получено из других полей, оно не требует избыточности полей.
  • Четвертая парадигма: Требуется удалить отношения “многие ко многим” в одной таблице.
  • Пятая парадигма состоит в том, чтобы перестроить исходную структуру из окончательной структуры.

Первая парадигма: каждая таблица должна иметь уникальный первичный ключ, идентифицирующий каждую строку.

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

Третья парадигма: Не должно быть зависимости между непервичными ключами.

2. Разница между абстрактным классом PHP и интерфейсом

Абстрактный класс:

Классы, определенные как абстрактные, не могут быть созданы. Любой класс должен быть объявлен абстрактным, если хотя бы один из его методов объявлен абстрактным. Метод, определенный как абстрактный, просто объявляет свой вызов (параметры) и не может определить его конкретную функциональную реализацию. При наследовании абстрактного класса подкласс должен определять все абстрактные методы в родительском классе; кроме того, управление доступом к этим методам должно быть таким же (или более мягким), как и в родительском классе. Например, если абстрактный метод объявлен защищенным, то метод, реализованный в подклассе, должен быть объявлен защищенным или общедоступным, а не частным. Кроме того, методы должны вызываться таким образом, чтобы они соответствовали типу и количеству требуемых параметров. Например, подкласс определяет необязательный параметр, которого нет в объявлении родительского абстрактного метода, и объявление не конфликтует. Это также относится к конструкторам, начинающимся с PHP 5.4. Объявления конструктора до PHP 5.4 могут быть разными.

Интерфейс:

Используя интерфейсы, вы можете указать, какие методы должен реализовывать класс, но вам не нужно определять конкретное содержимое этих методов.

Интерфейсы определяются ключевым словом interface, точно так же, как определение стандартного класса, но все определенные методы пусты.

Все методы, определенные в интерфейсе, должны быть общедоступными, что является особенностью интерфейса.

Для реализации интерфейса используйте оператор implements. Все методы, определенные в интерфейсе, должны быть реализованы в классе, в противном случае будет сообщено о фатальной ошибке. Классы могут реализовывать несколько интерфейсов и использовать запятые для разделения имен нескольких интерфейсов.

При реализации нескольких интерфейсов методы в интерфейсе не могут иметь переименования.

Интерфейсы также могут быть унаследованы с помощью оператора extends.

Чтобы реализовать интерфейс, класс должен использовать точно так же, как методы, определенные в интерфейсе. В противном случае это приведет к фатальным ошибкам.

Разница:

1. Реализации используются для наследования интерфейса и расширяются для абстрактных классов.

2. Переменные не могут быть объявлены в интерфейсах, но константы классов могут быть объявлены. Различные переменные могут быть объявлены в абстрактных классах.

3. Интерфейсы не имеют конструкторов, абстрактных классов может иметь

4. Метод в интерфейсе по умолчанию является общедоступным, а метод в абстрактном классе может быть изменен на общедоступный, защищенный и закрытый.

5. Класс может наследовать несколько интерфейсов, но только один абстрактный класс

3. Новые возможности PHP7

Новые функции PHP 7 включают объявление скалярного типа, объявление типа возвращаемого значения, оператор слияния с нулем, оператор космического корабля, массив констант, определенный define (), анонимный класс и т.д.

4. Принципы работы Nginx и PHP-fpm

Мы знаем, что Nginx (движок x) – это высокопроизводительная служба HTTP и обратного прокси-сервера, а также сервер IMAP/POP3/SMTP. Php-fpm является реализацией FastCGI и обеспечивает функцию управления процессами. Поскольку Nginx не только обрабатывает http-запросы, но и действует как обратный прокси-сервер, Nginx использует обратный прокси-сервер для преобразования динамических запросов в серверную Php-fpm.

Nginx и php -fpm

Оригинал: “https://developpaper.com/php-interview-i/”