Here follow solutions to various coding tests I collected. They take few hours to few days.
These coding tests are all focused on code design, clean code and testing.
The goal of these coding tests is to verify coding skills and the ability to deal with requirements ambiguity and error conditions. The problems to solve involve input from the command line, computation and output in the console. The solutions development has been driven by unit tests, acceptance tests and integration tests.
Here Rosie the Robot Maid clean the office!
The design of the solution try to detail every single concept and responsibilities and to break dependencies between different responsibilities.
Look at:
- [The assignment] (https://github.com/lucaminudel/CodingTestsAndSolutions/blob/master/DesignAndTdd/OfficeCleaner/The%20Assignment.pdf?raw=true)
- [The code] (https://github.com/lucaminudel/CodingTestsAndSolutions/tree/master/DesignAndTdd/OfficeCleaner)
Time to re-learn multiplication tables!
Look at: [the assignment.] (https://github.com/lucaminudel/CodingTestsAndSolutions/blob/master/DesignAndTdd/MultiplicationTable/The%20Assignment.pdf?raw=true)
The design of the "simple" solution details main concepts and responsibilities and break the main run-time dependencies. In this design the priority is the balance between simplicity and separation of concerns and run-time dependencies.
Look at the Simple solution:
- [The comments to the solution] (https://github.com/lucaminudel/CodingTestsAndSolutions/blob/master/DesignAndTdd/MultiplicationTable/The%20Simple%20Solution%20-%20%20ReadMe.txt)
- [The code] (https://github.com/lucaminudel/CodingTestsAndSolutions/tree/master/DesignAndTdd/MultiplicationTable/ReQtest.MultiplicationTable.Simple)
The design of the "complete" solution details every single concept and responsibilities and without duplication. Because of this is possible to change or evolve every part of the code making only local changes.
Look at the complete solution:
- [The comments to the solution] (https://github.com/lucaminudel/CodingTestsAndSolutions/blob/master/DesignAndTdd/MultiplicationTable/The%20Solution%20-%20%20ReadMe.txt)
- [The code] (https://github.com/lucaminudel/CodingTestsAndSolutions/tree/master/DesignAndTdd/MultiplicationTable/ReQtest.MultiplicationTable)
These coding tests focus more on the architecture of the solution.
The solutions show some of the characteristics of a real Enterprise Application and demonstrate experiences in design/architecture and back-end programming. I.e. looks at DB design, concurrency and concurrency conflicts management, support for hot-deployment or load-balancing, modularization, support for different environments (prod, stage, test, ...), global error catching and logging, authentication and authorization. Although more basic solutions could fit the purpose on many occasions.
If you still like vintage paper books, you also need a bookshelf!
Look at:
- [The assignment] (https://github.com/lucaminudel/CodingTestsAndSolutions/blob/master/Architecture/Bookshelf/The%20Assignment.pdf?raw=true)
- [The comments to the solution] (https://github.com/lucaminudel/CodingTestsAndSolutions/blob/master/Architecture/Bookshelf/The%20Solution%20-%20%20ReadMe.txt)
- [The code] (https://github.com/lucaminudel/CodingTestsAndSolutions/tree/master/Architecture/Bookshelf)
Time to move!
Here the extra challenge to spot the inconsistency in the requirements and the error in the estimation. The presentation explain the technical and process decision given the goal and the characteristic of the specific application.
Look at:
- [The assignment] (https://github.com/lucaminudel/CodingTestsAndSolutions/blob/master/Architecture/MoveIT/The%20Assignment.pdf?raw=true)
- [The comments to the solution] (https://github.com/lucaminudel/CodingTestsAndSolutions/blob/master/Architecture/MoveIT/The%20Solution%20-%20%20ReadMe.txt)
- [The presentation] (https://github.com/lucaminudel/CodingTestsAndSolutions/blob/master/Architecture/MoveIT/docs/MoveIT%20%20flyttfirman.pdf?raw=true)
- [The code] (https://github.com/lucaminudel/CodingTestsAndSolutions/tree/master/Architecture/MoveIT)
These coding tests focus on solving small coding problems the look simpler then they actually are.
Look at:
- [The assignment] (https://github.com/lucaminudel/CodingTestsAndSolutions/blob/master/SmallProblems/The%20Assignment.pdf?raw=true)
- [The comments to the solution] (https://github.com/lucaminudel/CodingTestsAndSolutions/blob/master/SmallProblems/The%20Solution%20-%20%20ReadMe.txt)
- [The code] (https://github.com/lucaminudel/CodingTestsAndSolutions/tree/master/SmallProblems)