PHP: Тестовое задание для разработчика

Двигатель Стирлинга

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

Не буду ходить вокруг да около, а напишу какое оно есть, и надеюсь на Ваши комментарии:

Данное тестовое задание скорей всего больше подходит для junior разработчика, чем для матерого волка seniorа.

Аннотация

Данный документ описывает тестовое задание, которое должен выполнить претендент на должность Junior PHP Developer.
Задание рассчитано на 80 часов разработки. После завершения тестового задания принимается решение, оно может быть одним из следующих:

  • завершение испытательного срока и зачисление на работу
  • продолжение испытательного срока еще на 2 недели с живыми или тестовыми проектами
  • завершение испытательного срока и отказ в зачислении на работу 

Тестовое задание разделено на четыре составляющих – первая часть обязательна, остальные не являются обязательными, и связаны только с первой частью. Тем не менее выполнение необязательных частей является безусловным плюсом.

Гостевая книга

Гостевая книга предоставляет возможность пользователям сайта оставлять сообщения на сайте. Все данные введенные пользователем сохраняются в БД MySQL, так же в базе данных сохраняются данные о IP пользователя и его браузере.
Форма добавления записи в гостевую книгу должна иметь следующие поля:

  • User Name (цифры и буквы латинского алфавита) – обязательное поле
  • E-mail (формат email) – обязательное поле
  • Homepage (формат url) – необязательное поле
  • CAPTCHA (цифры и буквы латинского алфавита) – изображение и обязательное поле (http://ru.wikipedia.org/wiki/CAPTCHA)
  • Text (непосредственно сам текст сообщения, HTML тэги недопустимы) – обязательное поле

Сообщения должны выводится в виде таблицы, с возможностью сортировки по следующим полям: User Name, e-mail, и дата добавления (как в порядке убывания, так и в обратном). Сообщения должны разбиваться на страницы по 25 сообщений на каждой. Сортировка по умолчанию – LIFO.
При написании проекта следует обратить внимание на защиту от XSS атак и SQL –инъекций. (http://ru.wikipedia.org/wiki/Межсайтовый_скриптинг и http://ru.wikipedia.org/wiki/Инъекция_SQL)
Приветствуется создания простейшего дизайна с использованием CSS.

Гостевая книга. JavaScript и работа с файлами.

К базовой функциональности, следует добавить следующие возможности:

  • К сообщению пользователь может добавить картинку или текстовый файл
  • Изображение должно быть не более 320х240 пикселей, при попытке залить изображение большего размера, картинка должна быть пропорционально уменьшена до заданных размеров, допустимые форматы файлов: JPG, GIF, PNG
  • Текстовый файл не должен быть больше чем 100кб, формат TXT
  • Просмотр файлов должен сопровождаться визуальными эффектами (для примера можно посмотреть http://www.huddletogether.com/projects/lightbox/ )

Гостевая книга. Регулярные выражения.

К базовой функциональности, следует добавить следующие возможности:

  • Пользователь может использовать следующие HTML тэги в сообщениях:
    • <a href=”” title=””> </a>
    • <code> </code>
    • <i> </i>
    • <strike></strike>
    • <strong> </strong>
  • Должна быть проверка на закрытие тэгов, код должен быть валидным XHTML

Гостевая книга. JavaScript и AJAX.

К базовой функциональности, следует добавить следующие возможности:

  • Валидация вводимых данных на стороне сервера и клиента
  • Функция предпросмотра сообщения, без перезагрузки страницы
  • Для HTML тэгов сделать панель с кнопками ([link],,[italic],[strike],[strong])
  • Добавление визуальных эффектов так же приветствуется 

Требования

Система должна корректно работать на ОС Linux со следующей конфигурацией:

  • PHP 5.1+
  • MySQL 4.1+
  • Apache 2.2+

Допустимо использовать следующие библиотеки:

  • PHP Zend Framework или PEAR
  • JS jQuery или Prototype

 

P.S. На картинке изображен двигатель Стирлинга, wikipedia частенько дает пищу для ума...

67 thoughts on “PHP: Тестовое задание для разработчика”

  1. PHP-кода там кот наплакал, а вот остальных составляющих несоизмермо больше выходит. НА мой взгляд, для всенаправленного веб-разработчика – задание хорошее, для PHP-дева – практически бессмысленное. С PHP там справится и так называемый Junior, а вот правильная кроссбраузерная верстка, работающий в долбаном IE повсеместно яваскрипт, правильная реализация AJAX/AHAH – задача для разработчика с приличным опытом.

    Выскажу ИМХО основанное на том, как работаем мы уже не один год.
    (С) каждому – свое!
    Исповедую концепцию “специально обученных мальчиков”, НО каждого специалиста в своем деле.
    Один мальчик программирует инфраструктуру, объектную модель; второй – верстает html-ки; третий – скрещивает html-ки c бизнес логикой; четверый – тестирует продукт.

    Человеки-оркестры себя ОБЫЧНО показывают плохо со всех сторон.

    Поптыки создать “универсального-бойца” – самообман на границе с жлобством.

    Мое Тестовое ЗАПРЕЩАЕТ логику заниматься версткой, ajax, js и прочей беллетристикой, прежде всего акцентируясь на архитектуре кода (дада, её можно построить даже на Pretty Home Page!) и умении\понимании работы\проектирования реляционных БД.

    А ajax-шмаякс он либо изучит позже (в рамках минимума), либо ему напишет ему СОМ (специально обученный мальчик).

    Господа – пусть каждый занимается СВОИМ делом и тогда у ВАС будет успех.

  2. О! Действительно дельное замечание предыдущего оратора. Каждый должОн:-) заниматься своим делом. Меня, например, действительно бесит верстка. Зато php, например, очень люблю и охотно выполняю. Антон, кстати, у Вас на сайте на этом необходим опытный глаз юзабилити-специалиста.

    1. У каждого свои требования к разработчику, что должен знать разработчик диктует работодатель, а не наоборот :)
      P.S. Нет, спасибо, мне бы просто времени побольше, чтобы заняться дизайном…

    2. Читаем внимательно: первая часть обязательна, остальные не являются обязательными…
      :) за две недели как раз джуниор найдет и прочитает нужную литературу. А если нет – извините, не умеет учиться ))

  3. Нихера себе тестовое задание! тут целый функционал. тестовое задание это когда можно за часик справиться прям на собеседовании!

    1. Та задание по сути очень простое! За начинающий за неделю может сделать:) по крайней мере я за неделю склепал=)

  4. хорошее задание, я к сожалению пока могу сделать только первые 2 пункта

  5. Не вижу ничего сложного в тестовом задании. Однако, справедливо подметили, – чересчур объемно. В силу того, что здесь охвачено множество областей, я бы на это затратил, пожалуй, даже не одни полные сутки :(

  6. Для 2-х недель задание в самый раз. ))))

  7. Отличное тз. Выполню как-нибудь на досуге в целях проф. пригодности =)

  8. Для junior то что нужно. Но 2 недели это много.

  9. хех) делал такое же задание, когда устраивался в компанию (устроился). правда давали на выполнение 1 неделю. вообщем интересное задание, много с чем столкнулся, еще успел написать АктивРекорд.

  10. Это и задание мне и дали, когда я устраивался на работу. Наверно отсюда и брали. Сделал я его за неделю, и код был ужасен. Архитектура проекта ужасна, без использования шаблонизаторов , а что такое Active Record даже не слышал. Но код работал и тогда это казалось круто :)

  11. Доброго времени суток, Антон! Такой к вам вопрос, насколько это задание актуально на сегодняшний день? Возможно появились какие-то уточнения или дополнения? Благодарю за внимание!

  12. Антон, у Вас отличный блог, не забрасывайте) Я личинка junior php dev с полугодовым опытом, пришлось менять работу, было практически идентичное тестовое(но сроки более сжаты), 80 часов реальный срок

Comments are closed.