Une version française est disponible
This exercice has some flexible implementation and a deadline.
Its purpose is to provide a point of reference for the upcoming technical interview.
The MVP or Minimum Valuable Product is the mandatory part of the Kata.
Yet, you can work on bonus features to show off your skills.
In case of missing information, make a choice and stay consistent with it.
Be careful with the size and the message of your commits.
There is no "right" way to implement this Kata, we're interested in your choices and your technical skills within those constraints.
The Kata should be delivered using a Github repository, or you can create a Pull Request to the develop branch of the original repository.
Your repository should have:
- A branch named as your
trigram
received by mail ; it should contain your final source code. - A
readme.md
file, explaining the possible details of your implementation and how to start your project.
- Java@8 minimum
- JUnit@5 + AssertJ@3
As a bank, deposit money from a customer to his account, is allowed when superior to €0.01
As a bank, withdraw money from a customer account, is allowed when no overdraft used
As a bank, a customer can display its account balance
As a bank, a customer can display its account transactions history
The below features are optional and non-exhaustive.
There is no priority between them, you can implement the ones you want and even propose yours.
- Suggest a REST API using http to operate services realized in the MVP
- Secure your API
- Use a non-blocking solution
- The bank has multiple customers
- A customer can have multiple accounts
- Suggest a data persistence solution
- Suggest a UI to operate services realized in the MVP
- Use Gradle instead of Maven
- Suggest a CI/CD system for the project
- Suggest End to End tests for your artifact
Ceci est un exercice assez libre d'implémentation à faire chez vous, dans un temps restreint, il a pour objectif d'ouvrir la discussion technique lors d'un futur entretien.
Le Kata suivant est composé d'une partie obligatoire, le Minimum Valuable Product ou MVP
et de fonctionnalités facultatives afin d'utiliser le temps restant pour vous démarquer.
S'il vous manque une information, faites un choix et restez cohérent avec celui-ci.
Faites attention à la taille de vos commits et leurs messages.
Il n'y a pas de "bonne" façon de réaliser ce Kata, nous sommes intéressés par votre choix d'implémentation, votre technique et le respect des contraintes.
Le Kata devra être fourni sous forme d'un repository Github ou bien faire l'objet d'une Pull Request vers la branche develop du repository d'origine.
Votre repository doit contenir :
- Une branche qui a pour nom, votre
trigramme
reçu par mail, qui contiendra votre code source final. - Un fichier
readme.md
qui explique les possibles subtilités de votre implémentation et comment lancer votre projet.
- Java@8 minimum
- JUnit@5 + AssertJ@3
En tant que banque, j'accepte le dépôt d'argent d'un client vers son compte, s'il est supérieur à 0,01€
En tant que banque, j'accepte le retrait d'argent d'un client depuis son compte, s'il n'utilise pas le découvert
En tant que banque, j'offre la possibilité à mon client de consulter le solde de son compte
En tant que banque, j'offre la possibilité à mon client de consulter l'historique des transactions sur son compte
Les fonctionnalités suivantes sont optionnelles et non exhaustives.
Elles n'ont pas de priorité entre elles, vous pouvez implémenter celles qui vous intéressent ou même en proposer d'autres.
- Proposer une API REST consommable via http pour interagir avec les services réalisé dans le MVP
- Sécuriser l'API
- Utiliser une solution non-bloquante
- La banque a plusieurs clients
- Un client peut avoir plusieurs comptes
- Proposer une solution de persistence des données
- Proposer une interface graphique pour interagir avec les services réalisés dans le MVP
- Utiliser Gradle au lieu de Maven
- Proposer un system de CI/CD pour le projet
- Proposer des tests End to End à destination de votre livrable