Выполнение тестового задания?

Добрый день!


Проходя собеседование я выполнил тестовое задание, мне отказали без объяснения. Уважаемые пользователи прошу вещей помощи, посмотреть и конструктивно прокомментировать, что я сделал не так. А то душа болит неужели я и так плох…


Задание

ВЕБ-Разработчик на PHP

«Оформление покупок в internet-магазине»

Задача:


Необходимо разработать Internet-магазин. Сайт должен позволять:
  1. Просматривать товары по категориям
  2. Формировать корзину покупок
  3. Редактировать корзину: менять количество убирать или добавлять товары
  4. Оформлять заказ
  5. Авторизоваться с правами администратора
  6. Администратор может:
    1. Создавать\удалять\редактировать группы товаров
    2. Создавать\удалять\редактировать товары
    3. Просматривать заказы



Требования:
  1. Сайт должен использовать реляционную базу данных;
  2. Все файлы с логикой сайта необходимо поместить в папку inc
  3. В корне сайта находится 1 файл index.php, который в зависимости от параметров запроса отображает то или иное содержимое. Index.php генерирует оформление сайта, отвечает за авторизацию и инициализирует работу с базой данных;
  4. Не должно быть повторений кода;


Пожелания:
  1. Объектно-ориентированный подход;
  2. Валидная XHTML-верстка;
  3. CSS-стили;
  4. Проверка вводимых пользователем значений на клиенте и сервере;
  5. Разделение логики и верстки;
  6. Использование JavaScript и AJAX-технологии.



По результатам выполненных работ Вы должны предоставить:
  1. Исходные коды сайта;
  2. Данные для авторизации с правами администратора;
  3. Ссылку на выложенный в интернете сайт либо архив Denwer или AppServer, настроенный на 81 порт (ссылка вида localhost:81/shop)


Критерии оценки задания:

В первую очередь оценивается результат: функциональность и удобство сайта. Далее следует изучение базы данных, запросов и исходных кодов программы. Каждое выполненное пожелание добавляет баллы к итоговой оценке. Аккуратность в оформлении и документации кода, использование шаблонов программирования и любые другие «фишки» приносят вам дополнительные баллы.

исходники тут


и выложил work.enchikiben.ru


Спасибо.
  • Вопрос задан
  • 22052 просмотра
Пригласить эксперта
Ответы на вопрос 15
sankir
@sankir
Я конечно могу ошибаться или не знать что-то об обычных способах проверки кандидатов, но ИМХО вы просто на халяву кому-то написали Internet-магазин.
Ответ написан
TheHorse
@TheHorse
Поверхностно прочитал. Куча мелких баг форматирования, иногда немножко странное название функций и переменных.

Но с заданием вы очевидно справились. Порадовал inner join, хоть и не люблю нормализованные реляционные… Сделана защита от SQL-inject. В общем, нормально все.

Вывод: мудаки те кто вас собеседовал, инфа 99%. Но вроде еще наезд мог быть за использование чужих исходников.
Ответ написан
Vas3K
@Vas3K
Помню несколько лет назад ко мне тоже обратился, назовем его Геннадий, который «набирал крутых фрилансеров в новую крутую студию» и, видимо чтобы я доказал свою «крутость», выслал задание (больше похожее на реальное ТЗ), по которому надо было реализовать полноценный справочник по недвижимости со всем функционалом, в письме приложив ссылку на полугигабайнтый дамп не то CSV, не то SQL базы. Притом я должен был написать его сразу и за 12 часов, каждые 3 часа отчитываясь ему лично о проделанной работе.

Когда Геннадий получил отказ, он очень сильно обиделся, обозвав меня всякими словами, типа «некомпетентный», «ленивый», «упускающий свой шанс» и.т.д. на чем мы и распрощались.

Просто забейте и больше никогда не ведитесь на «тестовые задания» больше, чем в 100 строк, а тем более включающие в себя разработку готового продукта. Через пару лет будете вот так же рассказывать потомкам :)

Хотите проверить мой скилл как программиста? 100-200 строк хорошего задания вполне хватит для этого.
Хотите просто посмотреть на качество моего кода и умения как проектировщика больших систем? Добро пожаловать на мой github, где есть пара моих проектов, либо попросите «набросать на бумажке» что-то еще.

Почему-то на любом собеседовании в любую крупную компанию спрашивают либо накидать простейшую реализацию, либо дают на дом написать небольшой кусочек, а всем этим проходимцам-Геннадиям так сразу подавай «Интернет-магазин» или «Справочник недвижимости» с полным функционалом.
Ответ написан
@skvot
Вполне похоже на стандартное кидалово.
Мельком глянул код — комменты в стиле «капитана очевидности» использовать не нужно.
// клас ядра
class Core {

// получаем категории
$this->categories = Categories::get_categories();

«Применение комментариев должно компенсировать вашу неудачу в коде» (с) Роберт Мартин, чистый код.
Ответ написан
Поясняю. Это тестовое задание прекрасно показало Вашу компетентность.

Знание ООП на уровне PHP4; отсутствуют знание о подготовленных запросах, мало того использование какой-то устаревшей библиотеки даже для PHP4, которая для экранирования использует mysql_escape_string; отсутствует знания о паттернах (шаблонах проектирования); отсутствует знание о том, что такое «Валидная XHTML-верстка»; отсутствуют знания о современных фрейворках (это следует из предыдущих пунктов); не смогли разделить представление и логику работы (прямо в шаблонах запросы); незнание phpDoc или чего-нибудь подобного. Скорее всего не знаете как пишутся тесты, не умеете работать в системе контроля версий и т.п. Если в чём-то я не прав, то прошу указать на это.

Если контора крупная, то думать, что это не тестовое задание, а конкретная задача, которая где-то будет использовать, несколько странно.
Ответ написан
igolovin
@igolovin
мне тоже кажется, что вас развели, а вы на халяву сделали магазин. Выход у вас простой — продайте его кому-то:)
Ответ написан
int03e
@int03e
Не шарю в php, но:
1. Комменты на русском — втф? В gvim нечитаемые кракозябры
2. Как я понял, для работы с бд используется сторонняя разработка? Может стоило все самому писать, иначе легче уж вообще было взять Yii или что-то такое ))
Ответ написан
markoffko
@markoffko
Да там же нету MVC(!). Шутка. Для тестового задания довольно неплохо. Скорее всего фирме нужен был более скиловый программист. Много странных конструкций типо !isset($_POST['name_categori']) || empty($_POST['name_categori']).
Если не секрет сколько обещали примерно денег?
Ответ написан
WildZero
@WildZero
А вы случайно не в Перми проходили собеседование? Просто тоже натыкался где то года 2 назад на такое.
Ответ написан
rakot
@rakot
Посмотрел код.
Для тестового задания более чем хорошо, присоединяюсь ко всем, вас просто кинули.
Если нужна критика по коду:
1. $core = new Core( $db ); Плохая практика, пихать всё в конструктор. Эстетичнее Core( $db )->run();
2. sizeof, очень непривычна для вычисления размера массива, пользуйтесь count.
3. Корзина написана ужасно, сплошная смесь вёрстки, PHP и SQL. SQL в представлениях является очень дурным тоном.
4. Постоянно тащите за хвост переменную $db(передаёте в конструктор), от этого нужно избавляться.
5. var $db; мы всё ещё в PHP4?

Могу еще по придираться к коду, но не вижу смысла, недочёты мелкие. Любой, кто не допускает этих недочётов, послал бы далеко и на долго компанию с таким объёмным тестовым заданием.
Ответ написан
Tomasina
@Tomasina
Инженер-разработчик
может, стоит назвать эту контору публично, дабы другие пермяки были в курсе?
Ответ написан
KorP
@KorP
Кратко о себе
Я вот в код не полез, с утра не стоит :)
А вот магазин посмотрел:
1. почему можно добавить в корзину товар, без указания кол-ва? (ну ладно можно добавить, но тогда почему в корзину пустое значение и она не в состоянии посчитать сумму.)
2. ну и вытекающее из первого — зашёл в корзину, селект кол-ва стоит на 1, но по сути там пусто, открыл селект… простите, а что вы с ним сделали?
1
...
21321

это круто :)
Ответ написан
sankir
@sankir
Хмм, а магазинчик то меняется постепенно.
Могу еще придраться: а где моя история заказов? Почему я не могу посмотреть статус заказа, и вообще сохранился ли он? Может он уходит в никуда. Обязательной регистрации у вас нет, но хотя бы выдайте мне номер заказа и возможность посмотреть заказ по номеру, хотя бы список товаров и статус, без контактной информации.
Ответ написан
CKOPOBAPKuH
@CKOPOBAPKuH
В комментариях ругают, что не MVC, что плохое ООП, нет подготовленных запросов и дизайн сайта плохой. Всё это так, но:

В этом задании, очевидно, предполагается, что человек должен быть хорошим дизайнером, верстальщиком и программистом одновременно. При этом чтобы сделать весь этот функционал с хорошим поддерживаемым кодом, разделением на слои, с нормальным ООП, потребуется несколько дней.
Шлите, в общем, в задницу таких работодателей.
И уже после этого прислушивайтесь к советам про код. Советы, кстати, сами по себе правильные.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы