Интернет-издание, 2012. - 56 с.
Андрей Шевченко составил, структурировал и выпустил в виде бесплатной PDF книги список вопросов, которые всенепременнно могут встретиться (и чаще всего встречаются) любому PHP программисту на самом стандартном собеседовании. Более того — каждый вопрос снабжен достаточно подробным ответом.
Пролистать книгу будет полезно любому PHP программисту, который планирует вскоре быть отсобеседованным, либо же людям, собеседующим соискателей.
Содержание:
Вступление
PHP
Какая разница между функциями sort(), asort() и ksort()?
Что такое динамические переменные?
Какими способами можно перенаправить страницу в PHP?
Назови и опиши пять любых типов ошибок PHP.
В чем различия между четвертой и пятой версиями PHP?
Что такое тип данных?
Что можешь сказать про типизацию данных в PHP?
Сколько типов данных в РНР?
Что такое static функция и чем она отличается от обычной" (не static)?
Есть ли разница между self и this в php?
Что такое конструктор?
Приведи пример конструктора.
Обязательно ли писать ? в конце скрипта?
В каких случаях это не стоит писать?
Поддерживает ли РНР множественное наследование?
Какая разница между require(), require_once(), include() и include_once()?
Какая разница между функциями echo и print в PHP?
Что делает функция eval() ?
Чем отличается цикл while от do while?
Как перевернуть массив? Есть массив array('h', 'e', 'l', 'l', 'o'), как из него получить array('o', 'l', 'l', 'e', 'h')?
А как перевернуть массив без нее?
Как перевернуть строку?
Что такое рекурсия?
Напиши пример рекурсивной функции, которая вычисляет факториал числа.
Как вывести на экран ряд чисел Фибоначчи?
Сложение в PHP и JavaScript. "123" + abc". Что будет? А если 123 + "abc"?
Есть ли разница между одинарными и двойными кавычками в PHP?
Проход массива. Как вывести все элементы массива на экран?
В чём разница между функциями count() и sizeof()?
Что такое ассоциативный массив?
Нарисуй форму для отправки файла.
Пусть имеем HTML-форму, которая содержит одно поле ввода text и одно поле ввода textarea. Требуется создать для данной HTML-формы скрипт-обработчик script
1.php, который заносит построчно в файл data.txt данные. В итоге структура получаемого файла data.txt должна быть следующая:
Используя конструкцию switch, написать функцию boo, принимающую одно число в качестве аргумента. Если это число равно 2, функция должна вывести слово Двойка", если 3 - Тройка", в остальных случаях - Фигня какая-то".
Дан массив $arr = array(3,8,15,25,16,11,10,5,7,30). Вывести циклом индексы тех его элементов, которые делятся на 5.
Написать программу, которая выводит простые числа, т.е. делящиеся только на себя и на 1.
Сгенерировать 3 случайных числа в диапазоне от 0 до
10. Если сумма этих чисел меньше 14, сгенерировать новую тройку.
Чем отличается передача параметра по значению от передачи по ссылке.
Чему будет равно $a?
Есть массив a = аггау(тут много элементов). Проходим по массиву циклом for (i=0; i =count(a); i++). Можно ли как-нибудь ускорить цикл?
Вывести максимальное значение элемента массива array(1,2,3,4,10,100,3, 4987,6,7,8,9).
Напиши программу-цензор, которая бы заменяла вводимые пользовате-лем в форму слова fuck", idiot" и bitch" на f**k", id**t" и bi**h".
Какие магические методы знаешь? Что это вообще такое?
Назови по памяти любые функции для работы со строками, массивами и файлами.
Какая функция возвращает количество рядов результата MySQL запроса?
Общие принципы построения программ
Что такое MVC?
Что за что отвечает в MVC?
Что такое шаблоны (паттерны) проектирования?
Какие паттерны знаешь?
Напиши на PHP пример реализации паттерна Singleton.
ООП
ООП знаешь? Что это такое?
Расскажи основные принципы ООП.
Напиши пример реализации полиморфизма.
Что такое виртуальный метод?
А зачем такое нужно?
Зачем нужна инкапсуляция?
Как называется способность объекта скрывать свои данные и реализацию от других объектов системы?
Какие механизмы в ОО языках обычно позволяют обеспечить инкапсуляцию объектов?
Может ли быть конструктор виртуальным?
Что такое класс?
А объект?
Чем отличается класс от объекта?
Что такое область видимости переменной?
Чем локальные переменные отличаются от глобальных?
Чем отличается процедурный подход от объектно-ориентированного?
Какие еще есть парадигмы (модели, подходы) программирования кроме ООП?
Что такое абстрактный класс?
Можно ли создать экземпляр абстрактного класса?
Какая разница между абстрактным классом и интерфейсом?
Зачем нужен интерфейс, если есть абстрактный класс?
JavaScript
Как перенаправить страницу в JavaScript?
Как в JavaScript вывести на экран число, которое будет меняться, например, каждую секунду?
Сколько параметров можно передать функции?
Нужно алертом вывести какое-то сообщение, спустя 3 секунды после запуска скрипта. Как это сделать?
Чем отличается наследование в JavaScript от наследования в PHP?
Приведи пример наследования в JavaScript.
Пара слов об объектах в JavaScript?
Что представляет из себя метод объекта в JavaScript?
Зачем в JavaScript перед переменной писать var?
Есть две функции: function f(a,b) { return a+b } и var f = function(a,b) { return a+b }. Есть ли между ними разница? Если есть то какая?
Как создать массив в JavaScript?
Можно ли в JavaScript использовать функцию в качестве конструктора?
Сколько и какие конструкции для циклов есть в JavaScript?
Что сделает код: break me_baby; ?
Можно ли задать массив таким образом: var a = ''a,b".split('/)?
Что выведет alert(typeof null); ?
А это: alert(null instanceof Object); ?
0.1 + 0.2 == 0.3 ?
Что выведет alert(typeof NaN); ?
Что выведет alert(NaN === NaN); ?
MySQL
Что такое реляционная база данных?
Что такое первичный ключ?
Что такое нормализация и денормализация?
Что такое mysql_pconnect? Чем он отличается от mysql_connect?
Что такое MyISAM и InnoDB?
Чем они отличаются?
Как сделать индекс в MySQL?
Что такое SQL-инъекция?
Существует ли универсальная защита от SQL-инъекций?
Есть две таблицы: users - таблица с пользователями (users_id, name) orders - таблица с заказами (orders_id, users_id, status):
Выбрать всех пользователей из таблицы users, у которых ВСЕ записи в таблице orders имеют status = 0
Выбрать всех пользователей из таблицы users, у которых больше 5 записей в таблице orders имеют status = 1
Какая разница между LEFT, RIGHT и INNER JOIN?
Чем отличается WHERE от HAVING?
Что можешь сказать про команду GROUP BY?
Приведи пример использования GROUP BY.
Допустим, у тебя есть Интернет-магазин. Составь запрос, который покажет сколько денег принес каждый отдельно взятый покупатель в общей сложности за всё время существования магазина.
А теперь пусть этот же запрос показывает только тех, кто купил товаров в общей сложности минимум на 10 тысяч евро.
Что делает команда EXPLAIN?
Как вывести все поля из таблицы super_table?
Как вывести только поля name_first, name_last, salary из таблицы super_table?
Таблице super_table задать псевдоним t и вывести всех, у кого salary выше 3800
Выбрать страны, из которых поставляют продукцию производители, так, чтобы страны не повторялись по 2 и более раз.
Вывести всех украинских производителей.
Вывести только те магазины, которые находятся во Львове и/или Харькове.
Вывести все модели автобусов ЛАЗ, вместимостью не менее 15 пассажи-ров.
Вывести все автобусы в порядке возрастания количества мест.
Вывести все автобусы в порядке уменьшения количества мест.
Какие знаешь команды для подсчета значений поля?
Предположим, у нас есть таблица в которой есть поля name и id. Нужно вывести имя с наибольшим id, не используя при этом команду MAX. Как это можно сделать?
С помощью конструкции IN вывести производителей из Украины, Германии и США.
Вывести всех производителей за исключением тех, которые находятся в Китае, Таджикистане и России.
Вывести пустые / не пустые значения.
Вывести только те автобусы, названия которых начинаются на букву M.
Мы не помним как точно пишется Mercedes" или Mersedes, но нужно из таблицы выбрать автобусы именно этой марки. Как быть?
Выбрать только те автобусы, цена которых лежит в пределах от 100000 до 180000 долларов включительно.
Подсчитать количество автобусов в таблице, у которых 45 мест.
Приведи пример вложенного запроса.
Можно ли выбрать данные из нескольких таблиц?
Обязательно ли писать команды прописными буквами? Сработает ли за-прос, если его написать строчными буквами?
Что выберет такой запрос: SELECT brand FROM buses WHERE brand REGEXP 'lvo|ool'?
У нас есть таблица usa, в которой есть колонка city с названиями городов и колонка state, с названиями штатов. Нужно вывести новую колонку new_ column, которая будет содержать название города и через запятую название штата, в котором находится этот город. Например вот так: Raleigh, NC.
Есть таблица one, к ней нужно добавить таблицу two, которая содержит такие же поля (id, name, seller, price). Как это сделать?
CSS
В чем разница между записью #my и .my?
В чем разница между margin и padding?
Почему таблицы стилей CSS называются каскадными?
Что такое альтернативная таблица стилей?
Какая разница между значениями 0 и auto в свойстве margin?
Для чего применяются свойства border-position и border-all?
Какое свойство задает цвет фона?
Как в CSS обозначаются комментарии?
Как задать красный цвет для всех элементов, имеющих класс red?
Как убрать подчеркивание для всех ссылок на странице?
Как сделать жирным текст во всех элементах p ?
Что делает свойство clear?
Есть ячейка таблицы, в ней 3 дива, в каждом диве по текстовому слову. На первый див применен стиль float: left; на третий: float: right; что нужно применить на второй див, чтобы все три надписи/дивы были в одной горизонтальной строке, т.е. первый имел бы выравнивание по левому краю, третий по правому, а второй по центру?
Что такое псевдоклассы и псевдостили?
Название и назначение псевдоклассов.
JQuery
Как подключить JQuery к веб-странице?
В чем вообще смысл jQuery? Зачем оно надо?
Выбрать все элементы с id = idname
Выбрать все элементы div с id = idname
Выбрать все элементы с class = classname
Выбрать все элементы div с class = classname
Выбраит все span элементы в элементах div
Выбрать все div и span элементы
Выбрать предыдущий элемент от найденного
Выбрать следующий элемент от найденного
Выбрать все span элементы в элементах div, где span является прямым потомком div'a
Выбрать все span после первого элемента div
Выбрать первый li в ul
Выбрать div'ы у которых нет класса cls
Выбрать элементы с активной анимацией
Выбрать div'ы которые содержат класс firstclass и класс secondclass
Выбрать все div'bi с атрибутом title = test
Выбрать все отмеченные чекбоксы
Выбрать все input с type = radio
Выбрать видимый div с именем red, который содержит тег span
Что выберет этот фильтр? $(a[rel~='external']");
А этот? $(''div[name=apple]:visible:has(p)'');
Найти все элементы div с классом one, а также все элементы p с классом two, затем добавить им всем класс three и визуально плавно спустить вниз.
Сделать так, чтобы при нажатии на элемент а алертом выводилось Hello world!".
HTML
HTML5 знаешь? Нарисуй что-нибудь.
Чем HTML отличается от XHTML?
Что такое DOCTYPE и зачем он нужен?
Чем отличается div от span?
Как обозначаются комментарии в HTML?
Ссылки. Как задать адрес документа, на который следует перейти?
Как сделать ссылку на имейл?
Что делают теги em ?
Что такое ol , ul и li
Зачем нужны теги dl , dt , dd ?
Зачем нужны теги tr , th , td ?
В каком регистре лучше писать HTML-код?
Как убрать синюю рамку вокруг картинки-ссылки?
Обязательно ли писать alt в img ?
Что такое entities?
Как сделать чтобы все гиперссылки сайта открывались в новом окне, т.е чтобы по умолчанию использовался target="_blank"?
А как теперь быть, если какую-то из гиперссылок я захочу открыть в этом же окне, т.е. не создавая новое?
Разное
Что такое сериализация?
А десериализация?
Зачем они нужны?
Что такое Apache?
А mod_rewrite?
Аббревиатуры SVN и CVS о чем-то говорят?
А что это за системы такие?
Существуют ли еще какие-то системы управления версиями?
Что такое сессии? Где хранятся сессии: на стороне клиента или на стороне сервера?
Как долго "живет" сессия?
А при открытом браузере?
Возможно ли как-то продлить время жизни сессии?
Зачем нужны сессии?
Как устроены, и как работают сессии?
Поясни разницу между HTTP методами GET и POST.
А какие еще есть методы кроме GET и POST и для чего они используются?
Что такое стандарты W3C?
По какому протоколу осуществляется передача данных в сети Интернет?
Назови наиболее известные протоколы, используемые в сети Интернет?
Что такое Document Object Model (DOM) ?
Что такое AJAX и как он работает?
Что такое JSON?
А XML?
Приведи пример XML-документа.
Что такое XML Schema?
Что такое JSON Schema?
Что такое XMLhttpRequest?
Что такое API?
Вступление:Идея написания этой книги появилась у меня после того, как я, готовясь к своему первому собеседованию на должность PHP-девелопера, не смог найти толкового туториала, в котором были бы собраны наиболее часто встречающиеся вопросы и задачи, которые задают на таких собеседованиях. Но готовиться же как-то надо? Надо. Иначе спросят потом чем отличается MyISAM от InnoDB или что выберет вот такой jQuery-фильтр $(a[rel~=’external’]) и ты будешь сидеть и вспоминать чем же они еще отличаются кроме транзакций и что это за штука такая ~. Безусловно, отдельные вопросы без труда можно найти в Сети, но, во-первых, их далеко не так много, как хотелось бы, во-вторых, вопросы раскиданы по разным сайтам и блогам, что неудобно, ведь куда приятнее, когда все собрано в одном месте. Кроме того, зачастую это просто вопросы, без ответов, которые потом приходитя искать самостоятельно. Конечно, можно заново перечитать книги по HTML, JavaScript, PHP, ООП, MySQL, пересмотреть туториалы по JQuery и CSS. но будет ли у вас время сделать все это перед интервью?
Вот почему я составил для себя почти 100-страничный туториал, который дополнил новыми вопросами уже в боевых условиях, т.е. услышанными на реальных собеседованиях. Со временем этот разросшийся туториал стал мне уже не нужным, т.к. я неплохо выучил все что мне было нужно, но, не пропадать же добру! Поэтому я убрал из него все лишнее, оставив только те вопросы и задачи, которые реально задают на собеседованиях ну и плюс еще некоторые, интересные на мой взгляд. В итоге получился сборник в стиле вопрос – ответ, который удобно быстро пролистать, готовясь к собеседованию и который охватывает все основные концепции и ключевые области PHP и веб-разработки. Никакой лишней информации вроде во время интервью держите спину прямо! тут нет, только вопросы, многие из которых вы обязательно услышите и ответ,
который устроит того, кто вас собеседует.
Для кого предназначена эта книга? В первую очередь, безусловно, для начинающих PHP- и WEB-девелоперов, которые хотят качественно подготовиться к собеседованию, либо же просто освежить свои знания или проверить себя. Но она также может быть полезна и тем, кто только начинает проводить собеседования, т.к. помимо вопросов, здесь приведены и задачи, которые:
– Не требуют много времени на решение, что оптимально для формата собеседования;
– С одной стороны не тривиальны, а с другой не слишком сложны;
– Понятны без продолжительной вводной.
Книга построена в виде реального собеседования, только очень длинного.
Все вопросы разбиты на 9 разделов: PHP, Общие принципы построения программ, ООП, JavaScript, MySQL, CSS, JQuery, HTML и Разное.
Приятного чтения!