Антон Шевчук // Web-разработчик

PHP: Тестовое задание для разработчика // 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 частенько дает пищу для ума...

© Антон Шевчук 2007-2017