Вопросы на собеседовании по PHP

Наткнулся на хорошие вопросы на собеседовании. Данные задания были разработаны для облегчения проверки знаний соискателей. Задания разработаны таким образом, что Вы можете их выполнить в любое удобное для Вас время и в обстановке, которую считаете оптимальной.

Теперь подробнее о заданиях. Задания разделены на 3 категории. Категория B позволяет оценить базовые знания, насколько Вы, знаете базовые основы языка, основы программирования и насколько хорошо владеете программами необходимыми для разработки продуктов. В категории S расположены вопросы, позволяющие оценить глубину Ваших знаний в той или иной части языка программирования, а так же узнать о знании смежных технологий. Ну и последняя категория, это категория Q в ней собранны вопросы по разработке масштабируемых высоконагруженных систем.

Категория B

Задание B1:
Опишите плюсы PHP версии 5 по сравнению с версией 4.Какие новые возможности Вы считаете бесполезными?

Задание B2:
Опишите ситуаци, когда функциональное программирование лучше объектно-ориентированного.

Задание B3:
Расскажите о плюсах использования паттерна MVC. В каких случаях не стоит его использовать? Какие в нем минусы?

Задание B4:
Расскажите об используемых Вами фреймворках (программных каркасах). В чем их плюсы? Для каких задач лучше использовать существующий фреймворк, а когда лучше все написать самому?

Задание B5:
В чем плюсы и минусы шаблонизации? С какими трудностями Вы сталкивались в работе с шаблонами?

Задание B6:
В чем плюсы использования систем контроля версий? Какие сложности при работе с ним у Вас возникали?

Задание B7:
При работе в команде, каким бы местам в разработке, Вы бы удилили большее внимание? Какие бы соглашения (Coding Conventions) Вам бы помогли в командной разработке?

Задание B8:
Использование баг-трекеров. Какими баг-трекерами Вы пользовались? В чем плюсы использования?

Категория S

Задание S1:
Расскажите, в каких случаях лучше использовать Apache, в каких nginx, а в каких lighttpd сервера.

Задание S2:
Расскажите о использовании Memcached. Какие сложности возникают при его использования? Что бы Вы хотели в нем улучшить?

Задание S3:
В каких случаях Вы бы использовали MyISAM таблицы, а в каких InnoDB, кроме случаев с транзакциями?

Задание S4:
Есть 3 таблицы InnoDB, в двух из них по 200,000 записей (строки примерно по 100 символов) и одна с 20 записями. Как лучше получить взаимосвязанные данные - используя один JOIN или несколько SELECT запросов? Объясните ваше решение.

Задание S5:
Напишите SQL Stored Procedure для MySQL 5.1 базы данных, для заполнения базы тестовыми данными:
id:INT
name:VARCHAR (blabla + id)
desc:LONGTEXT (Is desc + name)
uid:INT (рандомное значение)

Задание S6:
Нужно разарботать систему организовывающаую работу между почтовым сервером и front-end приложением (Flash AS3 Application). Опишите следующие моменты:
Какой формат обмена данными, Вы бы использовали, для минимального трафико-обмена?
В чем плюсы выбранного Вами формата?

Категория Q

Задание Q1:
Есть проект, суть которого в продаже автомобилей. Требования у заказчиков такие: версионность данных(как Wikipedia), возможность расширения моделей данных (можно добавить к описанию автомобиля любое свойство, например наличие модинга). Опишите следующие моменты:
Какую базу данных лучше всего использовать?
Как реализовать версионность в данном случае?
Как реализовать возможность раcширения моделей?
Какова будет конечная структура базы данных?
Какие сложности могут возникнуть в реализации проекта?

Задание Q2:
Планируется проект, расчитанный на большое количество информации, для этого изначально планируется использовать более 6 серверов с MySQL базами данных (есть возможность докупить любое количество серверов). Опишите следующие моменты:
Как распределить нагрузку между всеми серверами?
Как реализовать максимальную стабильность работы серверов?
Как можно снизить загрузку серверов?
Оптимально ли использовать MySQL? Каковы плюсы и минусы использования?

Задание Q3:
От одного из заказчиков поступает просьба улучшить их проект. Проблема в проекте в том, что он не справляется с нагрузкой. Информация о проекте: сервис блогинга идентичный LiveJournal, 2 сервера (на одном PHP, на другом MySQL ), PHP 5.1, MySQL 5, Apache 2, RedHat Enterprise Linux. По умолчанию считаем, что архитектура проекта правильная, код может частично модифицироваться, улучшения дописываются к существующему коду. Опишите следующие моменты:
Что нужно изменить/добавить в сервисе, для стабильной работы?
Оптимальная ли конфигурация? Нужно ли что-либо в ней изменять?
Приведите примеры улучшений при малом финансировании ( до 500,000 руб.) и при большом (более 50,000,000 руб.).

Задание Q4:
Поступило предложение от заказчика, на создание аналога сервиса микроблогинга Twitter. На Вас ложится задача разработки первой версии архитектуры проекта. По умолчанию считаем, что заказчик готов предоставить неограниченные средства. Опишите следующие моменты:
Какую конфигурацию программной части Вы бы составили для проекта (Операционная система, языки программирования, база данных, фреймворки или сторонние разработки)? Опишите в чем плюсы вашей конфигурации.
Какие слабые стороны возможны у данного проекта? Какие решения Вы можете предложить?
Опишите схему внутренней работы проекта.

© Источник.

#1

Вопросы составлялись так:
1) берем несколько можных слов
2) Как нибудь их пизаем в одно предложение
3) Profit!!!

Типичный бестолковый HR

nex2hex, 6.01.2011 - 02:02
#2

комментатору 1.. Так говорят люди которые не могут пройти собеседование.. и по вашим словам вы явно не в теме, такие вопросы мог составить только тех. спец.. вопросы толковые и приближены к реальным задачам. Единственное про сервера и их архитектуру - перебор, но это явно на вырост.

Arhy, 3.04.2012 - 22:19
#3

Нужно определиться кого берете на работу.
Вопросы тут в итоге так:
B - PHP-программист
S - за исключением пары вопросов MySQL-программист (что по сути корректно, правда один вопрос опять же на архитектуру)
Q - архитектор (что по сути уже некорректно)
То есть тут вопросы для специалиста "по всему", а это уже не программист, это тим лид скорее. Да и сразу можно сказать, что глубоко не рассматривается ничего, и в итоге по таким вопросам на работу будет взят тот, кто работал фрилансером долгое время, то есть делал всё сам, от начала до конца, но возможно не идеально во всём этом разбирается.

test, 6.04.2012 - 11:36
Оставить комментарий