Вопросы на собеседовании
PHP
C++ (ООП)
Базы данных
.NET
Некоторые распространенные вопросы на собеседовании для PHP программиста:
В чем различия между 4-ой и 5-ой версиями PHP?
Основные виды баз данных.
Типы таблиц в MySQL.
Что такое внешние ключи в БД?
Что такое реляционная БД?
Что такое инкапсуляция, наследование и полиморфизм?
Что такое MVC?
Что такое модель OSI?
Где PHP по умолчанию сохраняет данные сессии?
Что такое паттерн проектирования singleton и как он реализуется?
Что такое представления в БД?
Зачем нужен HAVING в SQL?
Что такое memcached?
Отличия таблиц MyISAM от таблиц InnoDB.
Основные виды баз данных.
Типы таблиц в MySQL.
Что такое внешние ключи в БД?
Что такое реляционная БД?
Что такое инкапсуляция, наследование и полиморфизм?
Что такое MVC?
Что такое модель OSI?
Где PHP по умолчанию сохраняет данные сессии?
Что такое паттерн проектирования singleton и как он реализуется?
Что такое представления в БД?
Зачем нужен HAVING в SQL?
Что такое memcached?
Отличия таблиц MyISAM от таблиц InnoDB.
Оставить комментарий
В чем различия между 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).
Добавлены новые расширения, улучшена поддержка некоторых существующих.
Новая версия движка - 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
InnoDB
BerkeleyDB (BDB)
MERGE
HEAP
ISAM
Что такое внешние ключи в БД?
Внешние ключи используются для организации связей между таблицами базы данных. Когда одно поле в таблице ссылается на другое (не обязательно в этой таблице), оно называется внешним ключом. Поле, на которое оно ссылается, называется родительским ключом. При обновлении поля в родительской таблице автоматически происходит определенное изменение поля в дочерней. Можно задать действие при обновлении родительского ключа (ON UPDATE) и при его удалении (ON DELETE). По стандарту SQL при этом с внешним ключом могут происходить следующие действия, в зависимости от заданных параметров:
SET NULL - все внешние ключи, которые ссылаются на обновленный или удаленный родительский ключ, получают значения NULL.
SET DEFAULT - устанавливает для всех столбцов, входящих во внешний ключ, значение, определенное по умолчанию в фразе DEFAULT, применяемой к данным столбцам. Если значение не определено, то по умолчанию оно равно NULL.
CASCADE - изменение значения родительского ключа автоматически приводит к таким же изменениям в значении (значениях) внешнего ключа.
NO ACTION. - значение внешнего ключа не изменяется. Если это приводит к нарушению целостности, оператор не исполняется.
По умолчанию используется значение NO ACTION.
SET NULL - все внешние ключи, которые ссылаются на обновленный или удаленный родительский ключ, получают значения NULL.
SET DEFAULT - устанавливает для всех столбцов, входящих во внешний ключ, значение, определенное по умолчанию в фразе DEFAULT, применяемой к данным столбцам. Если значение не определено, то по умолчанию оно равно NULL.
CASCADE - изменение значения родительского ключа автоматически приводит к таким же изменениям в значении (значениях) внешнего ключа.
NO ACTION. - значение внешнего ключа не изменяется. Если это приводит к нарушению целостности, оператор не исполняется.
По умолчанию используется значение NO ACTION.
Что такое реляционная БД?
Реляционная база данных - база данных, построенная на основе реляционной модели. В реляционной базе данных каждый объект задается записью (строкой) в двумерной таблице. Каждая таблица представляет собой двумерный массив и обладает следующими свойствами:
- имеет уникальное имя.
- каждый элемент таблицы — один элемент данных.
- все столбцы в таблице однородные, то есть все элементы в столбце имеют одинаковый тип.
- каждый столбец имеет уникальное имя.
- строки таблицы обязательно отличаются друг от друга хотя бы единственным значением, что позволяет однозначно идентифицировать любую строку такой таблицы.
- порядок следования строк и столбцов может быть произвольным.
- имеет уникальное имя.
- каждый элемент таблицы — один элемент данных.
- все столбцы в таблице однородные, то есть все элементы в столбце имеют одинаковый тип.
- каждый столбец имеет уникальное имя.
- строки таблицы обязательно отличаются друг от друга хотя бы единственным значением, что позволяет однозначно идентифицировать любую строку такой таблицы.
- порядок следования строк и столбцов может быть произвольным.
Что такое инкапсуляция, наследование и полиморфизм?
Инкапсуляция - это механизм, который объединяет данные и код, манипулирующий зтими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. Когда коды и данные объединяются таким способом, создаётся объект.
Наследование - это процесс, посредством которого один объект может приобретать свойства другого и добавлять к ним черты, характерные только для него.
Полиморфизм - это свойство, которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач, иначе говоря использование одного имени для задания общих для класса действий. Кратко смысл полиморфизма можно выразить фразой: "Один интерфейс, множество реализаций".
Наследование - это процесс, посредством которого один объект может приобретать свойства другого и добавлять к ним черты, характерные только для него.
Полиморфизм - это свойство, которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач, иначе говоря использование одного имени для задания общих для класса действий. Кратко смысл полиморфизма можно выразить фразой: "Один интерфейс, множество реализаций".
Что такое MVC?
MVC (Model, View, Controller; Модель, Представление, Контроллер) – паттерн, представляющий объектно-ориентированный метод для разделения логики представления, бизнес-логики и модели данных.
MVC состоит из объектов трех видов:
Модель - это объект приложения, а вид - экранное представление. Контроллер описывает, как интерфейс реагирует на управляющие воздействия пользователя.
Иными словами:
Представление (вид) отвечает за отображение информации, поступающей из системы или в систему. Модель является "сутью" системы и отвечает за непосредственные алгоритмы, расчёты и тому подобное внутреннее устройство системы. Контроллер является связующим звеном между представлением и моделью системы, посредством которого и существует возможность произвести разделение между ними. Контроллер получает данные от пользователя и передаёт их в модель. Кроме того, он получает сообщения от модели, и передаёт их в представление.
За счет использования MVC повышается гибкость и улучшаются возможности повторного использования.
MVC состоит из объектов трех видов:
Модель - это объект приложения, а вид - экранное представление. Контроллер описывает, как интерфейс реагирует на управляющие воздействия пользователя.
Иными словами:
Представление (вид) отвечает за отображение информации, поступающей из системы или в систему. Модель является "сутью" системы и отвечает за непосредственные алгоритмы, расчёты и тому подобное внутреннее устройство системы. Контроллер является связующим звеном между представлением и моделью системы, посредством которого и существует возможность произвести разделение между ними. Контроллер получает данные от пользователя и передаёт их в модель. Кроме того, он получает сообщения от модели, и передаёт их в представление.
За счет использования MVC повышается гибкость и улучшаются возможности повторного использования.
Что такое модель OSI?
OSI (Open Systems Interconnection Basic Reference Model; базовая эталонная модель взаимодействия открытых систем) - абстрактная сетевая модель для коммуникаций и разработки сетевых протоколов. Представляет уровневый подход к сети. Каждый уровень обслуживает свою часть процесса взаимодействия.
Модель состоит из 7-ми уровней, расположенных друг над другом. Уровни взаимодействуют друг с другом (по «вертикали») посредством интерфейсов, и могут взаимодействовать с параллельным уровнем другой системы (по «горизонтали») с помощью протоколов. Каждый уровень может взаимодействовать только со своими соседями и выполнять отведённые только ему функции.
Уровни модели OSI:
- физический уровень
- канальный уровень
- сетевой уровень
- транспортный уровень
- сеансовый уровень
- уровень представления
- прикладной уровень
В настоящее время основным используемым семейством протоколов является TCP/IP.
Модель состоит из 7-ми уровней, расположенных друг над другом. Уровни взаимодействуют друг с другом (по «вертикали») посредством интерфейсов, и могут взаимодействовать с параллельным уровнем другой системы (по «горизонтали») с помощью протоколов. Каждый уровень может взаимодействовать только со своими соседями и выполнять отведённые только ему функции.
Уровни модели OSI:
- физический уровень
- канальный уровень
- сетевой уровень
- транспортный уровень
- сеансовый уровень
- уровень представления
- прикладной уровень
В настоящее время основным используемым семейством протоколов является TCP/IP.
Где PHP по умолчанию сохраняет данные сессии?
По умолчанию PHP хранит данные сессии в файлах.
Что такое паттерн проектирования singleton и как он реализуется?
Гарантирует, что можно создать только один экземпляр класса и предоставляет к нему глобальную точку доступа.
Для реализации singleton в классе:
1) задается приватное статичное свойство, в котором хранится объект экземпляра класса;
2) методы __construct() и __clone() делаются приватными;
3) для создания экземпляра класса объявляется статичный метод, который при вызове проверяет, хранится ли в приватном свойстве объект данного класса. Если нет, создает объект данного класса, сохраняет в приватном свойстве и возвращает его. Если хранится, то просто возвращает свойство с сохраненным в нем объектом.
Для реализации singleton в классе:
1) задается приватное статичное свойство, в котором хранится объект экземпляра класса;
2) методы __construct() и __clone() делаются приватными;
3) для создания экземпляра класса объявляется статичный метод, который при вызове проверяет, хранится ли в приватном свойстве объект данного класса. Если нет, создает объект данного класса, сохраняет в приватном свойстве и возвращает его. Если хранится, то просто возвращает свойство с сохраненным в нем объектом.
Что такое представления в БД?
Представление — это заранее определенный запрос, результаты выполнения которого сохранены в базе данных, имеют вид обычной таблицы и проявляющие себя подобно таблице, но не требующие дополнительного места для хранения.
Зачем нужен HAVING в SQL?
HAVING задает условие на группу строк сгруппированной таблицы. Т.е. HAVING подобен WHERE, но выпоняется после группировки.
Что такое memcached?
Memcached - система кэширования данных в оперативной памяти. Использование memcached позволяет значительно снизить нагрузку на базу данных или файловую систему, данные из которых в нем закэшированы.
Отличия таблиц MyISAM от таблиц InnoDB.
MyISAM работает в среднем быстрее InnoDB, но в InnoDB реализованы блокировки на уровне строк, что увеличивает скорость работы в приложениях, выполняющих и интенсивное чтение, и интенсивное добавление/изменение данных.
InnoDB, в отличии от MyISAM, поддерживает транзакции и внешние ключи.
Таблицы MyISAM можно копировать средствами самой файловой системы, в отличии от InnoDB, попытка переместить файлы таблицы которой приведет к потере таблицы.
MyISAM поддерживает полнотекстовый поиск.
InnoDB, в отличии от MyISAM, поддерживает транзакции и внешние ключи.
Таблицы MyISAM можно копировать средствами самой файловой системы, в отличии от InnoDB, попытка переместить файлы таблицы которой приведет к потере таблицы.
MyISAM поддерживает полнотекстовый поиск.
|
0 | Tweet | Нравится |
|