Let's imagine you start working as backend engineer in the bank called "BANK". Your manager assigns you to project to develop ATM managing service. Interviewer is your team-mate, who is already working on the project for quite a while. He knows well business part of the work and can advise you on technical solutions. Therefore, feel free to communicate with him and ask for help.
Business wants card balance display feature. ATM managing service has already all integration with hardware components and bank remote-service. So, you need to implement only business logic of showing card balance, with following criteria:
- User cannot see balance without verifying access (PIN validation);
- User cannot see balance if card blocked;
- If PIN wrong, user should know how many attempts are left;
- Kotlin/Java language;
- Cover your code with unit tests;
- Consider if some components or parts of the system can go wrong;
- Think about which part of the code could be reusable in further development;