В чем различия между 4-ой и 5-ой версиями PHP?

Основные изменения в PHP 5:
Новая версия движка - Zend Engine 2: увеличилась эффективность и производительность.
Объекты передаются по ссылке; добавлен метод клонирования объектов (__clone).
Новая объектно-ориентированная модель: добавлены интерфейсы, абстрактные классы, добавлены области видимости для свойств и методов (public, protected, private), унифицированный конструктор (__construct), деструктор (__destructor), статические свойства и методы (static), константы (const), добавлены "магические методы" - Magic Methods (основные, кроме ранее перечисленных - __get, __set, __call, __sleep, __wakeup, __toString), финальные методы (final).
Добавлены исключения (try ... catch).
Добавлены новые расширения, улучшена поддержка некоторых существующих.

Основные виды баз данных.

Иерархические
Сетевые
Реляционные
Объектно-ориентированные

Типы таблиц в MySQL.

MyISAM
InnoDB
BerkeleyDB (BDB)
MERGE
HEAP
ISAM

Что такое внешние ключи в БД?

Внешние ключи используются для организации связей между таблицами базы данных. Когда одно поле в таблице ссылается на другое (не обязательно в этой таблице), оно называется внешним ключом. Поле, на которое оно ссылается, называется родительским ключом. При обновлении поля в родительской таблице автоматически происходит определенное изменение поля в дочерней. Можно задать действие при обновлении родительского ключа (ON UPDATE) и при его удалении (ON DELETE). По стандарту SQL при этом с внешним ключом могут происходить следующие действия, в зависимости от заданных параметров:
SET NULL - все внешние ключи, которые ссылаются на обновленный или удаленный родительский ключ, получают значения NULL.
SET DEFAULT - устанавливает для всех столбцов, входящих во внешний ключ, значение, определенное по умолчанию в фразе DEFAULT, применяемой к данным столбцам. Если значение не определено, то по умолчанию оно равно NULL.
CASCADE - изменение значения родительского ключа автоматически приводит к таким же изменениям в значении (значениях) внешнего ключа.
NO ACTION. - значение внешнего ключа не изменяется. Если это приводит к нарушению целостности, оператор не исполняется.
По умолчанию используется значение NO ACTION.

Что такое реляционная БД?

Реляционная база данных - база данных, построенная на основе реляционной модели. В реляционной базе данных каждый объект задается записью (строкой) в двумерной таблице. Каждая таблица представляет собой двумерный массив и обладает следующими свойствами:
- имеет уникальное имя.
- каждый элемент таблицы — один элемент данных.
- все столбцы в таблице однородные, то есть все элементы в столбце имеют одинаковый тип.
- каждый столбец имеет уникальное имя.
- строки таблицы обязательно отличаются друг от друга хотя бы единственным значением, что позволяет однозначно идентифицировать любую строку такой таблицы.
- порядок следования строк и столбцов может быть произвольным.

Что такое инкапсуляция, наследование и полиморфизм?

Инкапсуляция - это механизм, который объединяет данные и код, манипулирующий зтими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. Когда коды и данные объединяются таким способом, создаётся объект.
Наследование - это процесс, посредством которого один объект может приобретать свойства другого и добавлять к ним черты, характерные только для него.
Полиморфизм - это свойство, которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач, иначе говоря использование одного имени для задания общих для класса действий. Кратко смысл полиморфизма можно выразить фразой: "Один интерфейс, множество реализаций".

Что такое MVC?

MVC (Model, View, Controller; Модель, Представление, Контроллер) – паттерн, представляющий объектно-ориентированный метод для разделения логики представления, бизнес-логики и модели данных.
MVC состоит из объектов трех видов:
Модель - это объект приложения, а вид - экранное представление. Контроллер описывает, как интерфейс реагирует на управляющие воздействия пользователя.
Иными словами:
Представление (вид) отвечает за отображение информации, поступающей из системы или в систему. Модель является "сутью" системы и отвечает за непосредственные алгоритмы, расчёты и тому подобное внутреннее устройство системы. Контроллер является связующим звеном между представлением и моделью системы, посредством которого и существует возможность произвести разделение между ними. Контроллер получает данные от пользователя и передаёт их в модель. Кроме того, он получает сообщения от модели, и передаёт их в представление.
За счет использования MVC повышается гибкость и улучшаются возможности повторного использования.

Что такое модель OSI?

OSI (Open Systems Interconnection Basic Reference Model; базовая эталонная модель взаимодействия открытых систем) - абстрактная сетевая модель для коммуникаций и разработки сетевых протоколов. Представляет уровневый подход к сети. Каждый уровень обслуживает свою часть процесса взаимодействия.
Модель состоит из 7-ми уровней, расположенных друг над другом. Уровни взаимодействуют друг с другом (по «вертикали») посредством интерфейсов, и могут взаимодействовать с параллельным уровнем другой системы (по «горизонтали») с помощью протоколов. Каждый уровень может взаимодействовать только со своими соседями и выполнять отведённые только ему функции.
Уровни модели OSI:
- физический уровень
- канальный уровень
- сетевой уровень
- транспортный уровень
- сеансовый уровень
- уровень представления
- прикладной уровень
В настоящее время основным используемым семейством протоколов является TCP/IP.

Где PHP по умолчанию сохраняет данные сессии?

По умолчанию PHP хранит данные сессии в файлах.

Что такое паттерн проектирования singleton и как он реализуется?

Гарантирует, что можно создать только один экземпляр класса и предоставляет к нему глобальную точку доступа.
Для реализации singleton в классе:
1) задается приватное статичное свойство, в котором хранится объект экземпляра класса;
2) методы __construct() и __clone() делаются приватными;
3) для создания экземпляра класса объявляется статичный метод, который при вызове проверяет, хранится ли в приватном свойстве объект данного класса. Если нет, создает объект данного класса, сохраняет в приватном свойстве и возвращает его. Если хранится, то просто возвращает свойство с сохраненным в нем объектом.

Что такое представления в БД?

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

Зачем нужен HAVING в SQL?

HAVING задает условие на группу строк сгруппированной таблицы. Т.е. HAVING подобен WHERE, но выпоняется после группировки.

Что такое memcached?

Memcached - система кэширования данных в оперативной памяти. Использование memcached позволяет значительно снизить нагрузку на базу данных или файловую систему, данные из которых в нем закэшированы.

Отличия таблиц MyISAM от таблиц InnoDB.

MyISAM работает в среднем быстрее InnoDB, но в InnoDB реализованы блокировки на уровне строк, что увеличивает скорость работы в приложениях, выполняющих и интенсивное чтение, и интенсивное добавление/изменение данных.
InnoDB, в отличии от MyISAM, поддерживает транзакции и внешние ключи.
Таблицы MyISAM можно копировать средствами самой файловой системы, в отличии от InnoDB, попытка переместить файлы таблицы которой приведет к потере таблицы.
MyISAM поддерживает полнотекстовый поиск.