-
Notifications
You must be signed in to change notification settings - Fork 0
sligokid/intra-bank-transfers
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About This Test Coding example: Banking The purpose of this code test is to show us your skills in: • Problem solving • Code structure and OOP concepts • Reliability and Testing Please keep these aspects in mind as you develop your solution. Also, your chosen implementation doesn't necessarily have to be the best you can think of, but one that you can implement in the allocated time. Instructions • The time for completing this test is 3 (three) hours • The language used should be Java, unless previously agreed otherwise • The build, execution and testing should be maven based • The resulting code should be directly executable • All code should be tested • All needed scripts for compiling, testing, deploying and executing should be included, accompanied by Readme file explaining their usage make sure you will have enough time to cover all needed parts of the solution. Important information: This test is time constrained. It will help us judge your ability to work under suboptimal conditions. For us it will be equally important the quality of resultant code as well as what parts of the project you implemented (and the ones you couldn’t) resulting from constrained time. So before focusing on creating perfect model or perfect conditions checking or another minor part, Background Model in which you gonna operate: Banks have customers. Customers have accounts. Accounts hold money. Banks do transfers between accounts in same bank (intra-bank transfer), or communicate to other banks in order to make inter-bank transfers. Account stores list of all transfers and can be asked for the history of transfers. There can be two types of transfers: • Intra-bank transfers, between accounts of the same bank. They don't have commissions, they don't have limits and they always succeed. • Inter-bank transfers, between accounts in different banks. They have 5€ commissions, they have a limit of 1000€ per transfer. And they have a 30% chance of failure. Keep in mind that banks are independent of each other. Part 1 Define a set of data structures to accurately reflect banks, accounts and transfers. Make sure that new type of transfers can be added to the bank with minimal effort. Part 2 Create an initial system consisting of two banks BankA and BankB. Jose has an account in the Bank1. Antonio and Maria have accounts in the BankB. Jose and Antonio both own Maria 20,000€ each. Help Antonio and Jose pay their debts by developing a transfer agent (TA). TA is a program that COMMUNICATES with the banks . When the TA receives an order to transfer money from account A to account B, it issues transfers to the banks considering commissions, transfer limits and possibility of transfer failures. Questions: Please also give us your answer to the following questions: • How would you improve your solution? I would add Transaction support around the fund exchange. The HashCode / Equals methods need to be created for my own user defined Classes particularly since they are stored in collections. The Transfer history has not been implemented and that would need to be replicated off site I would use Spring or another dependency injection framework to manage the object creation. • How would you adapt your solution if transfers are not instantaneous? Payments should be booked over a messaging middleware back to a clearing house This middleware(Rendezvous maybe) would guarantee delivery of the booking request by Queueing. This booking would be a publish downstream framework Kieran Mc Gowan [email protected]
About
Coding Challenge: 3 hr coding challenge
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published