A while back my company was trying to find better ways to screen candidates for their programming skills and this race track programming test was created for that purpose. Very little instructions were given on purpose to see what candidates would come up with. It quickly became an in office competition with some very interesting discussions. The discussion that came up for me was regarding inheritance and when it should happen. My take on it was if inheritance can at all be avoided, then avoid it! In my opinion avoiding inheritance makes for less tightly coupled program modules.
It should be noted that my app was not close to being the most impressive. Some masterminds made up a proper formula for the winning race car as well as designed a UI that actually showed the cars racing. Pretty cool!
Here are the stated rules...
Create a C# program that simulates a drag race using at a minimum of the following three classes, with configurable parameters. Use object oriented principles where applicable.
To make this exercise a little more real-world, the product owner has identified some areas to refine for version 2.0 to bring a more real-world experience to the user.
Should Support 3 Classes of Drag Race Cars (which have tight regulations)
Or download a proper vs2013 version of it without the crazy formatting of .net fiddle.