top of page

Technical Challenges for Candidates

Java Challenge - B2B Order Management System

Context

You have been assigned to develop a critical microservice for a B2B order management system. This microservice will be responsible for receiving, processing, and managing orders from business partners, with the potential for thousands of simultaneous requests.
 

Functional Requirements

  1. Create a REST API for order management with the following endpoints:

    • Order creation

    • Order queries (by ID, by period, by status)

    • Order status updates

    • Order cancellation

  2. Each order must contain:

    • Unique ID

    • Partner ID

    • List of items (product, quantity, unit price)

    • Total value

    • Status (PENDING, APPROVED, PROCESSING, SHIPPED, DELIVERED, CANCELED)

    • Creation date

    • Last update date

  3. Implement a credit system for partners:

    • Each partner has a credit limit

    • When creating an order, the system must verify if the partner has sufficient credit

    • When approving an order, the system must debit the value from the partner's credit

  4. Implement a notification mechanism for order status changes (simulate integration with a messaging system)

 

Technical Requirements

  • Use Java 17+ and Spring Boot

  • Database of your choice (PostgreSQL or MongoDB)

  • API documentation (Swagger/OpenAPI)

  • Containerization with Docker and docker-compose for project execution

  • Automated tests

 

Delivery

  • Source code in a public Git repository

  • README with detailed instructions for running the project

  • Functional docker-compose that allows running the application with a single command

Notes

  • The project should be developed considering high concurrency scenarios

  • The solution must be scalable and performant

  • It is not necessary to develop a user interface, only the REST API

 

Good luck!

Kotlin Challenge - Credit Management System for Partners

Context

Sua missão é desenvolver um microserviço responsável pela gestão de créditos de parceiros em uma plataforma B2B. Este sistema será utilizado por milhares de parceiros simultaneamente para reportar vendas e consumir créditos, sendo crítico para a operação do negócio.

 

Functional Requirements

  1. REST API for credit management with the following endpoints:

    • Query credit balance by partner

    • Add credits for partners

    • Consume credits (with balance validation)

    • Transaction history by partner

  2. Transaction system with:

    • Unique ID

    • Type (CREDIT or DEBIT)

    • Value

    • Partner ID

    • Reason/description

    • Date and time

    • Status (PENDING, COMPLETED, FAILED)

  3. Implement transaction reconciliation mechanism:

    • Transactions may remain pending due to communication issues

    • The system must have a process to verify and resolve pending transactions

    • Implement idempotency to avoid transaction duplication

  4. Integration with notification system:

    • When processing significant transactions, notify an external service (simulate with messaging)

 

Technical Requirements

  • Use Kotlin and Spring Boot

  • Database of your choice (PostgreSQL or MongoDB)

  • API documentation (Swagger/OpenAPI)

  • Containerization with Docker and docker-compose

  • Automated tests

 

Delivery

  • Source code in a public Git repository

  • README with detailed instructions for running the project

  • Functional docker-compose that allows running the application with a single command

 

Notes

  • The system should be designed for high concurrency and avoid race conditions

  • Consider caching mechanisms to improve performance

  • Implement proper error handling and retry mechanisms

  • It is not necessary to develop a user interface, only the REST API

 

Good luck!

Node.js/TypeScript Challenge - B2B Event Orchestration System

Context

Você foi designado para desenvolver um microserviço crítico que atua como orquestrador de eventos em uma plataforma B2B. Este serviço receberá eventos de parceiros comerciais, validará, processará e distribuirá para outros microserviços, lidando com milhares de eventos simultâneos.

 

Functional Requirements

  1. REST API for receiving and processing events:

    • Endpoint to receive events from partners

    • Query event processing status

    • Reprocess failed events

    • Processing statistics

  2. Each event must contain:

    • Unique ID

    • Event type (SALE, RETURN, INVENTORY_UPDATE, etc.)

    • Event data (JSON payload)

    • Source (Partner ID)

    • Timestamp

    • Processing status

  3. Implement processing flow:

    • Event validation (format, required fields, business rules)

    • Data enrichment (add relevant information)

    • Distribution to downstream services (simulate with message queues)

    • Persistence of processing history

  4. Retry and dead-letter system:

    • Implement retry mechanism for failed events

    • After N attempts, move to a dead-letter queue

    • Allow manual reprocessing of events in the dead-letter queue
       

Technical Requirements

  • Use Node.js with TypeScript

  • Database of your choice (PostgreSQL or MongoDB)

  • API documentation (Swagger/OpenAPI)

  • Containerization with Docker and docker-compose

  • Automated tests

 

Delivery

  • Source code in a public Git repository

  • README with detailed instructions for running the project

  • Functional docker-compose that allows running the application with a single command
     

Notes

  • The system should be designed for high concurrency

  • Implement rate limiting mechanisms to protect the API

  • Consider observability aspects (structured logs, metrics)

  • Implement idempotency to ensure unique event processing

  • It is not necessary to develop a user interface, only the REST API

 

Good luck!

Tips to stand out

  • Write clear documentation and explain your technical decisions.

  • Use automated tests to cover main flows.

  • Show concern for performance, scalability, and security.

  • Implement structured logs and handle errors gracefully.

  • Be creative! If you want, add extra features and explain them in the README.

bottom of page