Тестовое задание на вакансию «Web-программист»

Необходимо решить как минимум по одной задаче из каждого раздела, решение всех задач только приветствуется! Срок исполнения задания: одна неделя. Ответ необходимо направить на электронный адрес: info@it-avenue.ru с темой «Вакансия-программист».

Если нас устроит ваша реализация тестового задания, то мы назначим собеседование, где подробно обговорим условия сотрудничества.

1. PHP

1.1 Написать php-скрипт, который бы выводил собственный код. Ипользовать функции чтения файла нельзя.  

1.2 Дан массив «шаблонов». Каждый шаблон имеет следующие параметры:
"Id" — уникальный числовой идентификатор шаблона
"ParentId" — идентификатор родительского шаблона, если таковой имеется, иначе 0
"Atribut" — атрибут (часть текста) родительского шаблона, которая должна быть заменена на текст данного шаблона
"Text" — текст данного шаблона.
Необходимо написать рекурсивную функцию getTemplate($id), которая по идентификатору шаблона возвращает итоговый шаблон,  полученный последовательным «вложением» дочерних шаблонов в родительские,  т.е. заменой атрибута родительского шаблона на текст дочернего. 
Пример массива шаблонов:
$templates=array(
    array("Id"=>1,"ParentId"=>0,"Atribut"=>"","Text"=>"Корневой шаблон / <%TITLE%>"),
    array("Id"=>2,"ParentId"=>1,"Atribut"=>"<%TITLE%>","Text"=>"Первый подшаблон<br/><%CONTENT%>"),
    array("Id"=>3,"ParentId"=>1,"Atribut"=>"<%TITLE%>","Text"=>"Второй подшаблон<br/><%CONTENT%>"),
    array("Id"=>4,"ParentId"=>2,"Atribut"=>"<%CONTENT%>","Text"=>"<b>Шаблон 4</b>"),
    array("Id"=>5,"ParentId"=>3,"Atribut"=>"<%CONTENT%>","Text"=>"<b>Шаблон 5</b>"),
    array("Id"=>6,"ParentId"=>2,"Atribut"=>"<%CONTENT%>","Text"=>"<b>Шаблон 6</b>"),
    array("Id"=>7,"ParentId"=>0,"Atribut"=>"","Text"=>"Корневой шаблон №2")
)

2. PHP,MYSQL

2.1 Даны 2 файла с логами.
В 1-ом файле в каждой строке выводится 5 атрибутов разделенные символом «|»: дата, время, IP-адрес пользователя, URL с которого зашел, URL куда зашел.
Во 2-ом — в каждой строке 3 атрибута, также разделенные символом «|»: ip aдрес пользователя, наименование используемого браузера, наименование используемой ОС.
Необходимо считать данные из этих файлов и записать в базу данных mysql.
Затем с помощью одного запроса вывести html-таблицу с полями: IP-адрес, браузер, ос, URL с которого зашел первый раз, URL на который зашел последний раз, кол-во просмотренных уникальных URL-адресов, общее время пребывания на сайте.

2.2 Вывести форму, содержащую поле для ввода ключевой фразы и сопроводительный текст: «В кл. фразе Вы можете использовать специальные символы: '*' - заменяет любую комбинацию символов; '?' - заменяет один символ. Таким образом на слово 'газ*' найдется 'газ', 'газета', 'газированный' и т.д. на 'баннер?' - 'баннера', 'баннеру', но не 'баннер' и 'баннерный'»
После отправки формы необходимо осуществить поиск по таблице с единственным текстовым полем, по вышеописанному алгоритму.

2.3 Необходимо реализовать блокировку на доступ к некоторым данным (файл, запись в БД) для двух параллельно запущенных процессов. если один из процессов поставил блокировку, второй процесс не имеет доступа к данным пока блокировка не будет снята. реализовать средствами PHP или MySQL (без использования LOCK TABLE)
Пример: test1.php и test2.php хотят
  • получить доступ к файлу test.txt (установить блокировку)
  • прочитать содержимое (в каждой строчке записано число)
  • просуммировать все числа
  • записать сумму в конец файла
  • снять блокировку

В случае если блокировка уже установлена, скрипт должен ждать снятия блокировки. Изначальное содержимое test.txt:
1
2
3

3. DHTML

3.1 Вывести «n» объектов (например картинок), которые бы можно было передвигать по экрану с помощью мыши. Страница при этом не должна обновляться.
Приветствуется, если это будет работать в браузерах IE c 5.0 и выше, firefox c 1.5 и выше, Opera c 7.5 и выше

3.2 Предложить вариант DHTML-дерева, работающего в IE5 и выше, Netscape6 и выше, firefox c 1.5 и выше, Opera c 7.5 и выше. Узлы должны раскрываться без обновления окна браузера.

4. APACHE

4.1 Имеется php скрипт get.php, выводящий значения GET переменныx var1, var2 и var3 из строки запроса. Необходимо настроить апаче таким образом, чтобы при вводе в строку запроса index-var1-<значение>-var2-<значение>-var3-<значение>.html, запускался этот скрипт и выводил указанные значения. Изпользовать директивы модуля mod_rewrite и файл .htaccess.

4.2 С помощью директив apache закрыть доступ из вне (из интернета) к некоторой папке. Использовать файл .htaccess.
Нравится
 
Развернуть