Giter Site home page Giter Site logo

albumprinter / dotnet-engineer-assignment Goto Github PK

View Code? Open in Web Editor NEW
3.0 29.0 0.0 39 KB

Test assignment for Dotnet engineers hiring process

area-create deploy-na hosting-aws owner-beam domain-documentation type-assets build-na code-scanning-not-supported

dotnet-engineer-assignment's Introduction

.NET Software Engineer Technical Assignment

Things we look for in this test

We expect the candidate to show us their skills in building testable and maintainable software with design and architecture in mind using industry best practices. We value simple more highly than complex, working is better than nice. Readability matters.

Business flow

A customer can order 1 or multiple items.
For example, an order could consist of a photo book and 2 canvases.
After the order is produced, it is delivered to one out of thousands of pickup points across the country.
The package is put in a bin on a shelf at the pickup point. The bin has to be sufficiently wide for the package.
Since bins are reserved upfront, we need to calculate the minimum bin width required for the order at the moment of order creation.

Assignment

Create a .NET Web API that accepts an order, stores it, and responds with the minimum bin width.
We also should be able to get back all the information that is known about the order by its ID.
Cover code with tests where you find it important.

Order information submitted by customers:

  • OrderID
  • ProductType and Quantity. // Product type can be 1 of type photoBook, calendar, canvas, cards, mug

Order information retrievable from the Web API by OrderID:

  • ProductType with quantity
  • RequiredBinWidth in millimeters (mm)

Simplified width calculation rules

Items are put in the package next to each other (for simplicity of the test assignment).
For example, 1 photo book (0), 2 calendars (|) and 1 mug (.) should look like this in the package: [0||.]

But a mug has 1 detail: it can be stacked onto each other (up to 4 in a stack). So, an order with 1 photo book, 2 calendars, and 2 mugs should be positioned like this: [0||:]

So the width of the 2 packages above is exactly the same. It would be still the same even if we add 2 more mugs (4 in total) but would increase if we add a 5th mug.

Package width occupied by 1 product unit per type:

  • 1 photoBook consumes 19 mm of package width
  • 1 calendar10 mm of package width
  • 1 canvas16 mm
  • 1 set of greeting cards4.7 mm
  • 1 mug94 mm

Source Code

You should create a public GitHub and let us know when you've completed the exercise.

Tools and libraries

You are free to use any additional third-party libraries and frameworks.

Additional information

The authentication/authorization of the API is outside of scope. Feel free to improve the application as you see fit (e.g. no logging but some tests are nice).
If you have any questions please reach out to us.

dotnet-engineer-assignment's People

Contributors

albelli-cicd-automation avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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.