renatmkhm /
Mindbox
Тестовое задание Junior/Middle C#
27/100 healthLoading repository data…
pkirilin / repository
Тестовое задание Mindbox на позицию C# разработчика
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Напишите приложение для работы с геометрическими фигурами, предоставляющее следующий API:
метод /figure, который принимает POST-запрос с параметрами фигуры (предусмотреть круг и треугольник) и сохраняет ее в персистентное хранилище (по умолчанию SQLite, если хотите использовать другое решение, то необходимо предоставить Docker-контейнер с приложением и выбранной СУБД). Сервис должен возвращать идентификатор фигуры
метод /figure/{id}, который по GET-запросу с идентификатором фигуры возвращает ее площадь, если фигура содержится в БД.
Предложите контракты для сервисов, приведите пример корректного вызова (например, тело для POST-запроса)
Ожидаем увидеть в решении:
Приложите ссылку на репозиторий с вашим решением (Github, GitLab). Приложение должно запускаться без дополнительной конфигурации или установки дополнительного ПО.
При сомнениях делайте выбор в пользу самой простой, но соответствующей требованиям реализации. Принятые решения и допущения опишите в readme.md.
Для запуска приложения необходим .NET SDK 5.0.100 или выше.
dotnet run -p src/GeometricService.WebApi
POST http://localhost:5000/figure - сохраняет фигуру с заданными параметрами в хранилище.
В качестве body необходимо передать JSON следующего вида (пример для треугольника):
{
"type": 1,
"parameters": [3, 5, 7]
}
где:
В случае успеха возвращает id созданной фигуры. Если тип фигуры не поддерживается, либо введены неверные параметры (например, нулевой или отрицательный радиус круга), возвращает BadRequest с описанием ошибки.
GET http://localhost:5000/figure/{id} - возвращает площадь фигуры с id = {id} (подставить нужный id).
Если фигуры с таким id не существует, возвращает NotFound с описанием ошибки.
Для добавления нового типа фигур необходимо выполнить следующие действия:
В enum FigureType добавить новый тип фигуры и придумать для него новое, не повторяющееся число (2 указано в качестве примера):
public enum FigureType
{
// ...
NewFigure = 2
}
Добавить класс новой фигуры, реализовав интерфейс IFigure и логику по расчету площади:
class NewFigure : IFigure
{
public double Area => /* рассчитать площадь фигуры */
}
Добавить класс фабрики новых фигур, реализовав абстрактный класс FigureFactory
class NewFigureFactory : FigureFactory
{
public override IFigure CreateFigure(double[] parameters)
{
// указать, как маппить массив параметров к параметрам новой фигуры
// создать экземпляр класса новой фигуры
return new NewFigure(/* ... */);
}
public override bool TryParseFigureParameters(double[] parameters, out string errorMessage)
{
// вернуть true, если параметры фигуры указаны верно, false - если неверно
}
}
В классе Startup и методе ConfigureServices webapi-проекта зарегистрировать новый тип фигуры:
services.AddFigureResolver(builder =>
{
// ...
builder.RegisterFigure(FigureType.NewFigure, new NewFigureFactory());
});
После этого можно добавлять фигуры этого типа в БД и рассчитывать для них площадь, менять остальной код не требуется.
Selected from shared topics, language and repository description—not editorial ratings.
renatmkhm /
Тестовое задание Junior/Middle C#
27/100 healthgalushkavv /
Тестовое задание по C#
27/100 healthS4TURN21 /
Тестовое задание на стажировку (C#, SQL)
27/100 healthmnormatov2001 /
Тестовое задание на вакансию C# developer junior от Mindbox
27/100 healthJulLazz /
Тестовое задание на позицию Junior/Middle C#
27/100 healthLeWolOnline /
Тестовое задание на C# Middle для Mindbox
27/100 health