GithubHelp home page GithubHelp logo

adtelligent-test-task's Introduction

Adtelligent Test Task by Maksym Zhovtaniuk

Техническое задание для кандидатов:

  1. разработка хттп сервера (задание обязательно к выполнению)

Представьте, что вы получили новый проект интернет-магазина и вам нужно заложить архитектуру для его разработки и поддержки. В качестве тестовго задания полностью спроектируйте базу данных, а так же сделайте CRUD одной (любой) сущности. HTTP сервер должен быть написан на GoLang, масимально просто, без использования фреймворков.

Техническое Задание:

  • разработать HTTP API с базовой авторизацией, которое будет позволять выполнять CRUD операции над сущностями. Пользователь будет один (администратор, который и будет создавать эти сущности)
  • формат ответа: JSON
  • описание сущностей и полей (если вы считаете, что какого-то поля не хватает, вы можете смело его добавить):
    • продавец (имя, телефон)
    • товар (название, описание, цена, продавец)
    • покупатель (имя, телефон)
    • заказ (покупатель, несколько товаров)
  1. оптимизация функции конкатенации. (задание со звездочкой, можно не делать, если не знаете)

Опмтимизируйте скорость выполнения функции. Кол-во значений во входящем параметре (len(str)) >= 30. Напишите бенчмарк тест на эту функцию и на её оптимизированную версию.

func concat(str []string) string  {
    result := ""
    for _, v := range str {
        result += v
    }
    return result
}

Выполненное тестовое задание разместите на гитхабе. Доступ к проекту предоставьте на аккаунт: https://github.com/Kirill-Shkodkin


Task 1. HTTP Server

Create .env file with the following example values

HTTP_HOST=localhost

DB_USER=root
DB_PASSWORD=qwerty123

JWT_SIGNING_KEY=1Ak3$$16:-=,l}d{s[a,dSDdA.>3.1/
PASSWORD_SALT=2B@K252@lK0-1\;ds-/pP

And variables.env file for docker-compose

MYSQL_DATABASE=adtelligent-db
MYSQL_USER=root
MYSQL_PASSWORD=qwerty123
MYSQL_ROOT_PASSWORD=qwerty123

Steps to run the app

Run docker-compose file

docker-compose up -d --build app

Apply migrations to database

cd ./migrator
docker build -t app-migrator .
docker run --network host app-migrator -path=/schema -database "mysql://root:qwerty123@tcp(localhost:3306)/adtelligent-db" up

Possible improvements

  • Add /refresh handler
  • Do NOT use float64 for money
  • Do NOT store env file values in README

Task 2

Slice len Basic With Join With Strings Builder
100 154416 ns/op 3420 ns/op 3252 ns/op
1000 13423015 ns/op 35641 ns/op 33679 ns/op
10000 1581037667 ns/op 343412 ns/op 319548 ns/op

If you have any questions feel free to contact me

Telegram: @maxzhovtyj

adtelligent-test-task's People

Contributors

maxzhovtyj avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.