/php-interview

Тестовое задание на позицию backend-разработчик

Primary LanguagePHP

Тестовое задание на позицию backend-разработчик

Необязательно решить все и правильно. Мы хотим понять, как Вы подходите к решению задач и пишете код. Будьте готовы к обсуждению решений на собеседовании, а также к дополнительным задачам.

Полулогические задачи

ответом на каждую из задач должен быть код

  1. В лофте n хипстерам достались m смузи. При этом все хипстеры - люди вежливые, и поэтому должны выпить одинаковое количество смузи (можно выбросить несколько). Напишите функцию distributeSmoothies(int $m, int $n): int, результатом которой будет количество смузи, которое выпьет каждый хипстер.

  2. Вы нашли клад! Перед вами находятся камни двух типов: одни с массой m1 и ценой p1, другие - с массой m2 и ценой p2. К сожалению, вы не сможете вернуться на место раскопок еще раз, поэтому необходимо решить, что вы унесете с собой сейчас. Вы сможете поднять максимум maxM. Определите, сколько максимум денег вы сможете выручить, если:

    • можно взять не более одного камня каждого типа?
    • можно брать сколько угодно камней каждого типа?
  3. Злой клоун хочет, чтобы в смайликах не было больше одной скобки подряд. Напишите функцию, которая поможет ему в этом, для любой фразы.

Практические задачи

Задачи 2 и 3 – со "звездочкой". Они могут быть достаточно объемными для тестового задания. Достаточно решить одну из них. Решение должно быть "концептуально" правильным. Мы не будем досконально тестировать корректную работу системы на всех краевых случаях :)

  1. Реализуйте процедуру расчета скидки для корзины Cart (код для затравки в папке cart). Также необходимо “раскидать” скидку между товарами (например, для корзины из 2-х товаров за 2000 и 1-го за 3000 скидка в 700р распределится как 200 за каждый первый товар и 300 за второй). Скидки могут быть следующих видов:
    • 100р на первую покупку;
    • 5% пенсионерам;
    • 500р на сумму заказа свыше 10000р.

2*. Предложите свой вариант реализации распределенного cron: есть общий список задач, который может выполняться на нескольких машинах, но при этом должен выполниться ровно один раз.

3*. Напишите телеграм-бота, который по названию страны возвращает emoji с ее флагом и ссылку на страницу в Википедии.