Тестовые задания с вакансий php-программист
Тестовое задания от House
Нужно спроектировать каталог товаров, корзину и заказы для интернет-магазина. Затем реализовать для него JSON API. Для реализации использовать фреймворк Laravel.
Требования к структуре каталога.
Каталог состоит из дерева категорий (максимальная вложенность – 3) и товаров, которые принадлежат к одной из категорий второго/третьего уровня. Товары должны иметь следующие поля:
- Название
- Описание
- Автогенерируемый slug
- Категория второго/третьего уровня
- Цена
- Несколько дополнительных характеристики (например длина, ширина, вес).
Требования к корзине и заказам.
Взаимодействовать с корзиной и оформлять заказы могут как авторизованные, так и неавторизованные пользователи. Заказы должны содержать контактную информацию покупателя (например email и телефон), а также список купленных товаров. Для авторизированных пользователей контактная информация должна подтягиваться из профиля автоматически.
Требования к API.
API должно поддерживать авторизацию (рекомендуется использовать пакет Sanctum).
Рекомендуемый состав методов API.
- Методы для регистрации/авторизации пользователей.
- Метод для получения дерева категорий.
- Метод для получения товаров. Должен поддерживать фильтрацию по категории/категориям любого уровня, а также по цене и дополнительным характеристикам. Значения фильтров должны валидироваться.
- Метод для получения товара по slug.
- Методы для работы с корзиной (добавление товара, редактирование количества товара/товаров, удаление товара).
- Метод для оформления заказа.
- Метод для получения списка заказов авторизированного пользователя.
Дополнения к заданию.
Будет плюсом, если дополнительные характеристики товаров будут вынесены в отдельную таблицу, а также будет реализовано API (не требующее авторизации) для добавления/удаления данных характеристик. При этом должны работать динамические фильтры для этих характеристик в методе получения товаров.
Будет плюсом, если будут написаны сидеры для каталога товаров.
Также будет плюсом, если разработанное приложение будет разворачиваться с помощью Docker.
Желательно приложить небольшую документацию к API (рекомендуется использовать Postman).
Тестовое задание от Hiqs
0. Компоненты:
- Laravel
- PostgreSQL
Дано:
- Модель
User
без кастомных полей - Модель
Article
с полемtext
- Относятся как многие ко многим
4. Написать свойство
articles
в первой модели, которое вернёт все статьи пользователя - Написать метод
users
во второй, которое вернёт всех авторов статьи
2. Работа с формами и запросами
- Расширить модель
User
, чтобы она имела поля, соответствющие форме index.html - Дораработать приложение, чтобы данные с этой формы создавали объект
User
в базе данных на сервере - После сохранения данных на сервере происходит редирект на точно такую-же страницу, где данные уже введены и их нельзя изменить
3. Мягкое удаление и миграции:
- Добавить возможность удалять статьи в мягком режиме
- При этом сделать возможность обновить систему со старой версии (из первого задания) на новую без полного сброса бд
4. Методы и строгая типизация:
Теперь надо создать функцию в классе статей, которая:
- Принимает пользователя и только пользователя – выдаёт mismatch в противном случае
- Возвращает
- истину если указанный человек автор статьи
- ложь – если это не так - null если статья удалена
- Если функция пытается вернуть что – то иное – mismatch
5. ORM:
Добавим новое поле пользователю user – experience Нужно создать функцию, в которой:
- Будет извлекаться пользователь и сохраняться в переменную
$user = User::find(1)
- Дальше функция выводит
experience
- Параллельно с работой функции
- Асинхронный метод меняет опыт на случайное число каждые несколько секунд
- В первой функции ещё раз выводится спустя промежуток времени опыт пользователя. Каким будет этот вывод ?
6. Загрузить на гитхаб в публичный репозиторий и отправить ссылку.
Желаем Вам удачи!
Тестовое задание от YLab
Необходимо реализовать сервис управления задачами используя возможности любого
фреймворка (yii, laravel, symfony).
Приложение должно состоять из 2-х частей:
1. Административная панель
2. Frontend API
Административная панель
Должна быть защищена авторизацией и иметь интерфейс со следующими разделами:
1. Список задач
2. Просмотр/редактирование/добавление задачи
3. Удаление задачи
4. Список статусов
5. Просмотр/редактирование/добавление статусов
6. Удаление статусов
7. Список пользователей
8. Просмотре/редактирование/удаление пользователей
Список полей сущности «Задача»:
1. Название – 255 символов
2. Описание – 4000 символов
3. Дата создания – дата/время
4. Дата редактирования – дата/время
5. Срок выполнения – дата/время
6. Статус – привязка к статусу
Список полей сущности «Статус»
1. Название – 255 символов
2. Сортировка – целое число
Реализация сущности «Пользователей» на усмотрение исполнителя.
Поле статус у задачи должно быть в виде выпадающего списка который заполняется
из статусов созданных в разделе «Список статусов».
Frontend API
Должно реализовывать следующие публичные(доступны без авторизации) методы:
1. Просмотр списка задач с возможностью фильтрации по всем полям кроме
описания
2. Просмотр одной задачи по идентификатору
3. Смена статуса задачи
Расположение и наименование методов, формат ответа на усмотрение исполнителя.
Тестовое задание от Profilance Group
Необходимо реализовать сервис по сокращению ссылок с использованием фреймворка Laravel:
- Сервис должен состоять из 1 страницы с формой ввода: поле для ввода ссылки и кнопка для отправки формы.
- Реализовать валидацию формы в виде проверки обязательного ввода ссылки.
- Реализовать отправку формы на сервер асинхронным запросом через JavaScript. Любой ответ сервера корректно обрабатывать и отображать.
- Реализовать сокращение ссылки на сервере и возврат сокращенной ссылки на клиент. При переходе по ссылке должно быть перенаправление на исходный адрес.
- Предоставить результат в виде ссылки на git репозиторий.
Тестовое задание от Пруфикс
Необходимо реализовать менеджер задач на Laravel:
-регистрация\авторизация: стандартный модуль auth (должно быть две роли: менеджер и клиент).
Клиенты регистрируются самостоятельно, а аккаунт менеджера должен быть создан заранее, логин и пароль выслать вместе с готовым заданием)
-после логина, клиент видит форму создания задачи, а менеджер список задач. (все страницы и функционал доступны только авторизованным пользователям и только в соответствии с их привилегиями)
-менеджер может просматривать список задач и отмечать те задачи которые выполнены.
-задачи могут пересекаться по дате/времени, но не более 4 задач. При пересечении по времени более 4 задач не давать записывать и выводить сообщение.
-список задач:
*ID, тема, описание, имя клиента, почта клиента, ссылка на прикрепленный файл, датавремя создания, датавремя старта, датавремя завершения
-клиент может оставлять задачу, но не чаще раза в сутки.
-на странице создания задачи: тема и описание, файловый инпут кнопка “отправить”, датавремя старта, датавремя завершения.
На вёрстку внимание обращаться не будет, важно оформление кода, использование php7+ и возможностей фреймворка.
Ожидаем от Вас ссылку на репозиторий и сопроводительное сообщение с инструкцией по резвертыванию проекта.
Время реализации 1 рабочий день.
перейти к содержанию задачника