Acid: Как я устраивался на работу программистом в Екатеринбурге

Работа для программераДобрый день. Расскажу о некоторых событиях за последние пару недель.
Первое: РСЯ начал приносить доход? до 10руб в день. Это очень радует.
Второе: 7-го августа 2012 года я был в Екатеринбурге на собеседовании. Приглашали на работу программистом в одну из крупных компаний Екатеринбурга. Зарплату обещали от 40 000 до 70 000руб.

Для того чтобы определить мой опыт и квалификацию, мне надо было сделать тестовое задание. В зависимости от того как я его выполню и будет зависеть моя зарплата. Прислали его на следующее утро после собеседования, 8-го августа.

Далее я приведу задание которое надо было выполнить! И исходный код который я набросал.

Итак Вы все таки решили почитать как я проходил тест на проф пригодность =). Спасибо… прошу комментировать.

Вот собственно само задание:

Тестовое задание
Постановка
Необходимо создать удобный интерфейс для добавления и редактирования видео-единиц.
Задание
1. Разработать структуру таблиц базы данных для хранения видео-единиц, обложек к ним и их жанров.
Видео-единица должна обладать следующими атрибутами: название фильма, оригинальное название фильма (опционально), страна, годы начала и окончания съемок, режиссёр, список актеров, продолжительность (в секундах), дата премьеры (формат: дд.мм.гггг), анонс, описание.
Учесть, что к каждому фильму возможно прикрепление нескольких жанров.
Загружаемая обложка должна сохраняться в следующих размерах: (100×145, 150×218, оригинальный размер);
2. Написать набор скриптов предоставляющих интерфейс для добавления и редактирования данных по видео-единицам и прикрепления к ним жанров.
Требования
1. Тип СУБД: MySQL 5;
2. Приложение должно быть написано на PHP5, с применением ООП;
3. Применение паттерна MVC (Model-View-Controller);
4. В случае применения, каких либо специфичных библиотек и PECL-модулей, по ним должно быть представлено минимальное описание, правила установки и настройки.
5. Приложение должно быть написано без использования фреймворка.

Текст задания я не менял, выложил как есть!

На собеседовании я сразу сказал, что:
— я процедурник, т.е. работаю без классов
— мало работал с java
— в теории знаю jQuery
— не работал в команде
— не оптимизировал высоконагруженные проекты и базы данных
но:
+ хорошо владею php
+ отличное знание языка SQL
+ хорошо владею связкой php+mysql
+ отличные знания среды разработки Delphi
+ проектирование баз данных для последующих проектов
+ работа с FireBird, Interbase, MsSql
+ знаю хостинг, и несколько движков
+ не конфликтный )

Разговаривали часа полтора… меня внимательно выслушали и обещали выслать задание о котором я сегодня и пишу.

Как я реализовал задачу:

Создал базу mysql.
Состоящую из 4-х таблиц. Имя базы films_tc
1. Таблица с фильмами film_list
2. Таблица с жанрами film_genre
3. Таблица соответствия картинок(обложек) film_pic
4. Таблица сопоставления id жанра и id фильма film_with_genre

Все исходные коды я приложу в конце статьи. Берите мне не жалко ) если найдете косяки буду очень признателен за комментарии. Пользователь для базы в примере: root, пароль: пустой. Запускать на денвере =)

Файлы скриптов в проекте:
class.php — класс для работы с фильмом(ами)
config.php — подключение к БД
film_edit_form.php — скрипт для изменения фильма
films_list.php — список фильмов для выбора
index.php — главная страничка с меню
upload.php — файл для загрузки картинок обложки к фильму на сервер

Особенности скриптов:

1. В файле config.php я использовал глобальные переменные, в которые поместил имя БД для подключения к базе из любого места в скрипте.

2. Так я находил жанры для определенного фильма. Выполнял запрос который брал параметры из результата работы вложенного запроса.
[php] $res = mysql_query("select * from `".$GLOBALS["database"]."`.`film_genre` where id_genre in (select id_genre from `".$GLOBALS["database"]."`.`film_with_genre` where id_films=".$id_film.")"
[/php]

3. Для отображения данных о фильме использовал запрос к базе. Выбирал фильм по полю id_film. Затем результат раскладывал в таблице используя массив. Печать массива для понимания правильно ли запрос возвращает данные. Затем можно эту строку закомментировать.
[php] print_r ($class_films->get_film_info($id_film));
[/php] Получаю массив полей фильма из таблицы
[php] $arr_film=$class_films->get_film_info($id_film);
[/php] Пример использования:
[php] <tr><td>Страна</td> <td><input name="film_country" value="<? echo $arr_film[3]; ?>"/></td></tr>
<tr><td>Год окончания сьемок</td> <td><input name="film_begin" value="<? echo $arr_film[4]; ?>"/></td></tr>
<tr><td>Год начала сьемок</td> <td><input name="film_end" value="<? echo $arr_film[5]; ?>"/></td></tr>
<tr><td>Актеры</td> <td><input name="film_acter" value="<? echo $arr_film[6]; ?>"/></td></tr>
<tr><td>Режисер</td> <td><input name="film_director" value="<? echo $arr_film[7]; ?>"/></td></tr>
<tr><td>Продолжительность (сек)</td><td><input name="film_long" value="<? echo $arr_film[8]; ?>"/></td></tr>
<tr><td>Дата примьеры</td> <td><input name="film_date_release" value="<? echo $arr_film[9]; ?>"/></td></tr>
<tr><td>Анонс</td> <td><input name="film_anons" value="<? echo $arr_film[10]; ?>"/></td></tr>
<tr><td>Описание</td> <td><input name="film_description" value="<? echo $arr_film[11]; ?>"/></td></tr>
[/php]

4. Так и не была задействована таблица для хранения данных о картинке(обложке) для фильма. Я только сейчас понимаю не большое упущение. Это отсутствие поля для хранения ссылки на картинку.
Табличка разрабатывалась с тем учетом, что у одного фильма может быть сколь угодно много обложек, с разными размерами.

Скриншот основной формы для работы с фильмом:
трудоустройство программиста в Екатеринбурге

Приступил к выполнению задания я через час поле получения (в 11-00). Просидел над ним до глубокой ночи (до 2-30).
Единственное, что не смог реализовать — это Upload картинок на сервер. Скрипт ни в кукую не хотел загружать. Перепробовав 4-5 вариантов я оставил работу не завершенной.

Может это и не правильно с моей стороны: отправлять незаконченный скрипт, но я должен быть честным, я сделал все по мере возможности. На утро я оправил по почте свое задание. Жду ответа.

ps: прилагаю исходные коды и дамп базы данных для задания: films.tc.rar

Update: 10-08-2012

Нме пришло письмо: Добрый день, Андрей.
Благодарим Вас за интерес к нашей вакансии Вэб-программиста. По итогам собеседований и выполнения тестового задания сообщаем, что приняли решение в пользу кандидата с бОльшим опытом работы.

Желаем удачи в трудоустройстве!

У всех моих друзей сложилось впечатление, что им надо было сделать работу, они ее получили и на этом все закончилось.
Возможно и так, сейчас наверняка уже ни кто не скажет. Я противоположного мнения, считаю, что не закончил — это и стало основной причиной.

Организация которой требовался программист: ООО «АйТиЭм Холдинг».

[tip]Вывод: нужно обязательно разобраться с загрузкой файлов на сервер![/tip]

Прошу комментировать, мне очень интересно Ваше мнение!

С Уважением, Acid.

14 комментариев

Добавить комментарий для Acid Отменить ответ

Your email address will not be published. Required fields are marked *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.