Code Monkey home page Code Monkey logo

jobfair23-backend-challenge's Introduction

Backend challenge

Nordeus - Job Fair 2023

One of the core features in Top Eleven are auctions! Millions of users are simultaneously competing to sign the best players on the market. Can you make that feature?

Our players (or as we call them - football managers) try to build the most successful football team in their league by signing the best possible players. They look for such players on auctions, where they need to outbid other football managers in order to sign the wanted player. In this challenge you need to write the backend service (AuctionService) which would enable all the fun in the game!

How do auctions work?

Initially there are 10 players on the auction, with one player in each auction. Users are able to join any active auction, and bid for a player with Tokens. Initial player price is 1 Token, and each bid increases the next bid auction price for 1 Token. Joined users are notified when a new bid is placed on a player.

Each auction lasts for 1 minute. If a user places a bid in the last 5 seconds (for example: 2s before the end), the auction is prolonged instantly and new expiration time is set to 5 seconds. Auction ends if there are no bids in the last 5 seconds. When an auction ends, all joined users are notified about the winner of the auction.

Every minute 10 new auctions are generated, regardless if all previous auctions were finished. Active auctions are these 10 new auctions and all the auctions that are prolonged due to users actively bidding on.

For a more vivid insight, why not set aside 15 minutes to play Top Eleven - Be a Football Manager and experience firsthand how auctions come to life?

Requirements & Starting point

As a Backend Engineer, your job is to implement functionalities of AuctionService:

  • Getting all active auctions
  • Start of a new auctions
  • Joining an auction
  • Bidding on an auction
  • Notifying users about:
    • end of auction and the winner
    • placed bid on an auction
    • refresh new auctions generated

The programming language employed for this challenge is Java. You are free to utilize any integrated development environment (IDE) of your choice.

This is Java (Spring boot) project with initially designed interfaces as a starting point. Fork (or download) project. You will find the following:

  • AuctionService interface and dummy AuctionServiceImpl service. Your job is to finish the implementation of the AuctionServiceImpl class. You have the liberty to change return types/arguments/exception of the methods.
  • Model classes (Auction, AuctionId, User, UserId, Bid) are there for the purpose of defining interfaces. Feel free to modify and model the classes as you think would be best.
  • HttpController is meant to define HTTP endpoints. That way (frontend) clients and other services could communicate with AuctionService. You can also test functionalities by manually invoking these endpoints. Define the rest of the endpoints and connect with the AuctionService.

In the event that certain aspects of this challenge are unclear, you have the liberty to decide how those ambiguous parts should function.

Submission format

Please note that each challenge can be completed in less than 2 weeks (e.g. a few days) but we wanted to be mindful of your faculty obligations.

The submission should be sent via email to [email protected] with a link to your GitHub repository, or a zipped project. Email subject should be: Backend Challenge.

Challenge is open until November 20, 2023 end of day. Good luck!

jobfair23-backend-challenge's People

Stargazers

David avatar

Watchers

Strahinja Kustudic avatar Tomislav Rakić avatar Marko Stojakovic avatar Misa Jovanovic avatar Igor Stojković avatar zMaja 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.