About Blind Audition

The first phase of our hiring process involves a small coding problem. We use this as a form of blind audition in an effort to reduce bias and increase diversity. We have found that keeping our process blind for as long as possible leads to a better evaluation of candidates based on their skills. What that means is the hiring team who evaluates your submission will not see your name, email, picture, gender, ethnicity-related information, social network profiles, resume or any other personally identifiable information before evaluating whether to proceed along to the next stage.

Problem Statement

We are passionate about unit testing, Test Driven Development (TDD), and writing clean production code and hope you are too.

Our goal is to see well tested clean-code. Please use C# or JavaScript and document any necessary frameworks/dependencies in some form of readme.

The gist of this exercise is to produce an interactive numerical calculator with some simple capabilities. Order of operations is one thing we require. Your program does not require a graphical user interface but needs to provide an interactive execution shell that could support examples similar to those in the table below (note that spaces between numbers and operands should be ignored). Additionally we require that you implement the calculator using the Command design pattern https://en.wikipedia.org/wiki/Command_pattern.

We would like it to support the following operators,

+, -, *, /, 1/x, and x!

C - for clear previous number

A - for all clear

Q - for quit

Here are some calculations we might expect of your program:

Calculation Expected Result
7 + 8 C + 7 = 14
-5*5/3= -8.3333333333333333
7 + - 6 = 1
-5 * 5 - 15 / 3 = -30
5! / 12 A + 9 = 9
0.5 * 1/x * 2 = 4

Ready to Apply?

After you click 'Apply Now' you have 14 days to submit your results.