Thank you for expressing an interest in joining our engineering team, here at The Joy Club.
The purpose of this exercise is to see how you approach a problem. We're interested to see how you structure your code, your command of the language and good design and testing principles - please bear this in mind throughout.
Show your workings - good commit messages, test first approach and clean code principles will set you off on the right track.
Have fun.
Security of customer data is paramount to the success of any business. The challenge is to create a password verification library. Included in the project is the jasmine test suite. Please feel free to replace with jest if you want to.
- The password should be larger than 8 chars
- The password should not be null
- The password should have one uppercase letter at least
- The password should have one lowercase letter at least
- The password should have one number at least
Each one of these should throw an exception with a different message of your choosing.
These are;
- Add feature: Password is OK if at least three of the previous conditions is true
- Add feature: password is never OK if item 4 is not true.
- Assume each verification takes 1 second to complete. How would you solve items 3 and 4 so tests can run faster?
Fork the repository, solve the challenge and let us know via recruitment@thejoyclub.com providing a link to your fork.
Alternatively, if you're just looking for a nice little challenge to do, without submitting to us, again that's cool! Enjoy the kata, you can find more at https://github.com/garora/TDD-Katas
We want to see how you approach the scaling and processing of data. The problem is as follows...
You are tasked with integrating to a marketing automation platform/email marketing service. It is a greenfield piece of work and involves a standard API integration. The use case is that when a user signs up, they will receive an onboarding email, and vice-versa, will then receive emails every 7 days of membership with different templates and content.
Design and document your ideology and ways to ensure that this integration will scale, ensuring delivery of communication ready to talk us through it at the interview stage.