Skip to content

Commit c6dce01

Browse files
committed
Local test-tasks files with changes in README.md
1 parent fe1e9c5 commit c6dce01

28 files changed

+45837
-26
lines changed

README.md

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -688,66 +688,62 @@
688688
* [FitnessKit](https://fitness-kit.ru/)
689689
* [Python разработчик на backend *(Python, Django)*](./backend/Python/FitnessKit/тестовое%20бэк.pdf)
690690

691-
* [Тестовое задание в команду гейтов *(Python)*](https://github.com/KosyanMedia/test-tasks/tree/master/gates_team)
691+
* [KosyanMedia *(Python)*](./backend/Python/KosyanMedia/README.md)
692692

693-
* [KazanExpress test for Python developer *(eng)* *(Python, Django)*](https://github.com/KazanExpress/django-test-task)
693+
* [KazanExpress *(eng)* *(Python, Django)*](./backend/Python/KazanExpress/README.md)
694694

695695
* [Сбербанк](https://www.sberbank.ru/ru/person)
696-
* [Тестовое задание для инженера данных *(Python, SQL)*](https://drive.google.com/drive/folders/1EMRCcMT852e-rAxliXn-3eihjcS2SnP-)
696+
* [Тестовое задание для инженера данных *(Python, SQL)*](./backend/Python/Sberbank/DE_task_solution.docx)
697697

698698
* [abz.agency](https://abz.agency/)
699-
* [Junior Python Developer *(Python, Django/Flask, MySQL/PostgreSQL)*](https://drive.google.com/file/d/1qUzx0m_Koj83k_G8BScCNK7opazbuDzk/view?usp=sharing)
699+
* [Junior Python Developer *(Python, Django/Flask, MySQL/PostgreSQL)*](./backend/Python/ABZ.agency/Тестовое%20задание%20на%20позицию%20Junior%20Python%20Developer.pdf)
700700

701-
* [Backend developer *(any)*](https://github.com/appbooster/test-assignments/blob/master/tasks/backend.md)
701+
* [AppBooster *(any)*](./backend/Python/AppBooster/backend.md)
702702

703703
* [Appstorespy](https://appstorespy.com/)
704-
* [Junior Backend developer *(Django/Flask, MySQL/PostgreSQL, MongoDB/Redis/Elasticsearch, GraphQL/REST)*](https://catkin-gymnast-f1a.notion.site/junior-backend-developer-2022-2f4803705cb84485a81a1d716bdf0a8c)
704+
* [Junior Backend developer *(Django/Flask, MySQL/PostgreSQL, MongoDB/Redis/Elasticsearch, GraphQL/REST)*](./backend/Python/Appstorespy/test_backend.md)
705705

706706
* [Aviasales](https://aviasales.ru)
707-
* [Тестовое задание в команду ассистеда *(Python, Go)*](https://github.com/KosyanMedia/test-tasks/tree/master/assisted_team)
707+
* [Тестовое задание в команду ассистеда *(Python, Go)*](./backend/Python/Aviasales/README.md)
708708

709-
* [Тестовое задание в команду гейтов *(Python)*](https://github.com/KosyanMedia/test-tasks/tree/master/gates_team)
709+
* [Avito Tech](https://www.avito.tech/)
710+
* [Avito Tech (archived) *(Go/Python/PHP/Java/JavaScript)*](./backend/Python/AvitoTech/README.md)
710711

711-
* [Тестовое задание на позицию стажера-бекендера в юнит Авто (archived) *(Go/Python/PHP/Java/JavaScript)*](https://github.com/avito-tech/auto-backend-trainee-assignment)
712-
713-
* [Тестовое задание по python *(Python)*](https://github.com/avito-tech/python-trainee-assignment)
712+
* [Тестовое задание по python *(Python)*](./backend/Python/AvitoTech/README1.md)
714713

715714
* [Github repository browsing tool *(Python)*](https://github.com/wemake-services/meta/issues/7)
716715

717716
* [Bewise](https://bewise.ai/)
718-
* [Тестовое задание на позицию Python Junior](https://docs.google.com/document/d/1lZ6nzX6Bt855aYpP9Z0ca6h0jc28Qn0w048UdsnLoLY/edit?usp=sharing)
717+
* [Тестовое задание на позицию Python Junior](./backend/Python/Bewise/test_python.md)
719718

720719
* [Escape Tech](https://escape-team.tech/)
721720
* [Python разработчик (стажер), *Python*](https://github.com/brain4power/software_tester)
722721

723-
* [HardQode](https://hardqode.com/)
724-
* [Тестовое задание Junior Python(Django, Django DRF)](https://docs.google.com/document/d/1jIuNfvfv1AX99BzQX_cSmhXMSRnpk1ZUZW8C42j3UWM/edit?usp=sharing)
725-
726722
* [Ivelum](https://ivelum.com/)
727-
* [Python-разработчик *(Python)*](https://github.com/ivelum/job/blob/master/challenges/python.md)
723+
* [Python-разработчик *(Python)*](./backend/Python/Ivelum/python.md)
728724

729725
* [KODE](https://kode.ru/)
730-
* [Backend разработчик *(Python)*](https://github.com/appKODE/2018-internship-backend)*(изображение не найдено)*
726+
* [Backend разработчик *(Python)*](./backend/Python/KODE/README.md)*(изображение не найдено)*
731727

732-
* [Python Developer *(Python)*](https://github.com/ostrovok-team/code-challenge/tree/master/python)
728+
* [Ostrovok Tech Python Developer *(Python)*](./backend/Python/OstrovokTech/README.md)
729+
730+
* [Ostrovok Tech Django Developer *(в Контент)*](./backend/Python/OstrovokTech/content-tech-task.md)
733731

734732
* [PyShop](https://pyshop.ru/)
735-
* [Разработчик Python (стажировка)](https://jl.pyshop.ru/tasks/python-dev/) Задание также можно найти в `backend/PyShop_python_trainee.md`
733+
* [Разработчик Python (стажировка)](./backend/Python/PyShop/PyShop_python_trainee.md)
736734

737-
* [Python Developer *(Python, Django, PostgreSQL, Docker)*](https://github.com/smenateam/assignments/blob/master/backend/README.md)
735+
* [Python Developer *(Python, Django, PostgreSQL, Docker)*](./backend/Python/PyShop/README.md)
738736

739737
* [Очень Интересно](https://www.interesnee.ru/)
740738
* [Python-разработчик на позицию стажера](https://github.com/David-Roklem/django-test-task/blob/main/Task-itself.md)
741739

742-
* [Django Developer *(в Контент)*](https://github.com/ostrovok-team/code-challenge/blob/master/python/content-tech-task.md)
743-
744-
* [Python-разработчик *(Python)*](https://funbox.ru/q/python.pdf)
740+
* [Python-разработчик *(Python)*](./backend/Python/FunBox/python.pdf)
745741

746-
* [Тестовое задание для стажера в Market Intelligence *(Python, Docker)*](https://github.com/avito-tech/mi-backend-trainee-assignment)
742+
* [Тестовое задание для стажера в Market Intelligence *(Python, Docker)*](./backend/Python/MarketIntelligence/README.md)
747743

748-
* [Тестовое задание для стажера в Market Intelligence (archived) *(Python)*](https://github.com/avito-tech/mi-trainee-task)
744+
* [Тестовое задание для стажера в Market Intelligence (archived) *(Python)*](./backend/Python/MarketIntelligence/README1.md)
749745

750-
* [Тестовое UpTrader](https://docs.google.com/document/d/1XTnbcXhejyGB-I2cHRiiSZqI3ElHzqDJeetwHkJbTa8)
746+
* [Тестовое UpTrader](./backend/Python/UpTrader/test_python.md)
751747

752748
</details>
753749

105 KB
Binary file not shown.
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# Тестовое задание: backend
2+
3+
Мы создаём мобильные приложения и иногда для тестирования гипотез приходится запускать AB-тесты. Для этого нам нужна система, представляющая собой простейшее REST API, состоящее из одного эндпойнта.
4+
5+
## API и распределение
6+
7+
Мобильное приложение при запуске генерирует некоторый уникальный ID клиента (который сохраняется между сессиями) и запрашивает список экспериментов, добавляя HTTP-заголовок `Device-Token`. В ответ сервер отдаёт список экспериментов. Для каждого эксперимента клиент получает:
8+
9+
* Ключ: имя эксперимента. В клиенте есть код, который будет изменять какое-то поведение в зависимости от значения этого ключа
10+
* Значение: строка, одна из возможных опций (см. ниже)
11+
12+
Важно, чтобы девайс попадал в одну группу и всегда оставался в ней.
13+
14+
## Эксперименты
15+
### 1. Цвет кнопки
16+
17+
У нас есть гипотеза, что цвет кнопки «купить» влияет на конверсию в покупку
18+
19+
* Ключ: `button_color`
20+
* Опции:
21+
* `#FF0000` → 33.3%
22+
* `#00FF00` → 33.3%
23+
* `#0000FF` → 33.3%
24+
25+
Так после 600 запросов к API с различными `DeviceToken` каждый цвет должны получить по 200 девайсов
26+
27+
### 2. Стоимость покупки
28+
29+
У нас есть гипотеза, что изменение стоимости покупки в приложении может повлять на нашу маржинальную прибыль. Но чтобы не терять деньги в случае неудачного эксперимента, 75% юзеров будут получать старую цену и только на малой части аудитории мы протестируем изменение:
30+
31+
* Ключ `price`
32+
* Опции:
33+
* `10` → 75%
34+
* `20` → 10%
35+
* `50` → 5%
36+
* `5` → 10%
37+
38+
39+
## Требования и ограничения
40+
41+
1. Если девайс однажды получил значение, то он всегда будет получать только его
42+
1. Эксперимент проводится только для новых девайсов: если эксперимент создан после первого запроса от девайса, то девайс не должен ничего знать об этом эксперименте
43+
44+
## Задание
45+
46+
1. Спроектируйте, опишите и реализуйте API
47+
2. Добавьте эксперименты (1) и (2) в приложение
48+
3. Создайте страницу для статистики: простая таблица со списком экспериментов, общее количество девайсов, участвующих в эксперименте и их распределение между опциями
49+
50+
Можно использовать любые тенхологии и библиотеки
51+
52+
Плюсом будет:
53+
54+
* Наличие тестов
55+
* Задеплоенная версия приложения
56+
* Скорость ответа от сервера <100ms
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Какие знания нужны junior backend developer в 2023
2+
3+
У нас в [Appstorespy.com](https://appstorespy.com/) постоянно открыты вакансии для backend и frontend разработчиков, в том числе и на позиции уровня junior.~~
4+
5+
Успешное выполнение задания подтверждает наличие у вас минимальных базовых знаний, необходимых для самостоятельной работы над backend проектом начального уровня в 2023 году.
6+
7+
Данное задание не оплачивается, не является офертой, не гарантирует трудоустройства, не требует использования всех перечисленных технологий и не предусматривает единственно верного решения.
8+
9+
Затруднения при реализации задания свидетельствуют о наличии пробелов в знаниях и требуют дополнительной проработки. Нет ни одного образовательного курса, который бы охватывал весь необходимый стек, но отдельно по каждой теме имеется избыточная информация, включая видео и туториалы.
10+
11+
**Начальный стек технологий backend: Python 3, Django 3, MySQL/PostgreSQL, MongoDB, Redis, Memcached, RabbitMQ, Celery, Elasticsearch, REST, GraphQL.**
12+
13+
Обязательно нужно иметь хорошие знания основ программирования и самого языка, ООП, Style Guide, PEP8, уметь гуглить и находить нужную информацию, знать последние версии основных инструментов, базовые навыки работы с Git, virtualenv, pip, уметь развернуть и запустить рабочий проект на сервере под gunicorn.
14+
15+
## Задача
16+
17+
Необходимо написать бекенд для работы с приложением React, которое позволяет пользователю зарегистрироваться и загрузить файл на сервер для обработки. После асинхронной обработки пользователь сможет посмотреть информацию о своем файле. Непринципиально какая именно обработка файла: сервер может посчитать количество строк в файле, обрезать видео файл и т.д.
18+
19+
Приложение React общается с бекендом по GraphQL. Соответственно нужны методы для регистрации, логина, логаута пользователей, аплоада файла и просмотра информации о нем.
20+
21+
Написание собственного кода при наличии готовых проверенных open source библиотек может быть рассмотрено как неумение пользоваться поиском, оценивать собственные трудозатраты и выставлять приоритеты задач. Нам ваши велосипеды не нужны.
22+
23+
Проверка результата выполнения задания: тесты, Postman.
24+
25+
### Рекомендуемый выбор технологий в порядке увеличения сложности
26+
27+
Фреймворк: Django, Flask
28+
29+
Файловое хранилище: локально, S3
30+
31+
Реляционная БД: MySQL, PostgreSQL
32+
33+
NoSQL БД: MongoDB, Redis, Elasticsearch
34+
35+
Кеширование: Memcached, Redis
36+
37+
Регистрация пользователей: Email, Google
38+
39+
Авторизация пользователей: Токены(JWT), Auth0, Keycloak
40+
41+
Distributed tasks: RabbitMQ/Redis+Celery, Kafka
42+
43+
Поиск: Elasticsearch

backend/Python/Aviasales/README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
## Тестовое задание в команду ассистеда (Python/Go)
2+
3+
В папке два XML – это ответы на поисковые запросы, сделанные к одному из наших партнёров.
4+
5+
[RS_Via-3.xml](/backend/Python/Aviasales/RS_Via-3.xml)
6+
7+
[RS_ViaOW.xml](/backend/Python/Aviasales/RS_ViaOW.xml)
8+
9+
В ответах лежат варианты перелётов (тег `Flights`) со всей необходимой информацией,
10+
чтобы отобразить билет на Aviasales.
11+
12+
На основе этих данных, нужно сделать вебсервис,
13+
в котором есть эндпоинты, отвечающие на следующие запросы:
14+
15+
* Какие варианты перелёта из DXB в BKK мы получили?
16+
* Самый дорогой/дешёвый, быстрый/долгий и оптимальный варианты
17+
* В чём отличия между результатами двух запросов (изменение маршрутов/условий)?
18+
19+
Язык реализации: `Go`
20+
Формат ответа: `json`
21+
По возможности использовать стандартную библиотеку.
22+
23+
Язык реализации: `python3`
24+
Формат ответа: `json`
25+
Используемые библиотеки и инструменты — всё на твой выбор.
26+
27+
Оценивать будем умение выполнять задачу имея неполные данные о ней,
28+
умение самостоятельно принимать решения и качество кода.

0 commit comments

Comments
 (0)