/interview-test

Coding Exercise for Infinitas Learning Interview Process

Primary LanguageJavaScriptISC LicenseISC

Code Exercise

Part of the Infinitas Learning interview process is a pair programming exercise where you will have an opportunity to pair program with one of our engineers to demonstrate your ability to write code and to collaborate with others. Since we expect our prospective employees to lead busy lives, we do not have a take-home exercise that you would work during your own time and subsequently extend during our pairing exercise. Additionally, we do not like the pressure placed on candidates by simply dropping into an exercise and being given a problem to solve without any lead time.

Therefore, the Infinitas Learning code exercise is going to be based around an existing code base. You are free to look at the code base at your leisure prior to the interview to familiarize yourself with the existing code. The challenge is described below. You will have 45 minutes - 1 hour to work on the code with one of our engineers. The expectation is NOT that you will finish the exercise but rather to see how you think, how you interact and how you approach the code to solve the problem. Please note that if you spend the entire interview refactoring the code with the purpose of making the exercise easier to achieve, this is perfectly acceptable.

You have the option of either working with the .NET, NodeJS or React versions of the exercise.

Infinitas Basic Learning Management System

The Infinitas Basic Learning Management System is a simple system meant to help teachers manage their students and assign lessons as appropriate.
It was initially built to very tight deadlines and requires some tender loving care to improve.
Fortunately, the original team left you in good shape with some automated testing!

Currently, based on the version you have chosen, the system consist of a C#/NodeJS REST backend API with an in-memory database or a React frontend. The current features are:

  1. List all teachers
  2. List all students
  3. Query students by teacher
  4. Update student

Our Product Managers talked with teachers about features they'd ❤ to have. The problem they run into is that there are no assignments in the system yet. The teacher is the direct user of the API and they should be able to do the following actions:

  1. Assign an assignment to a student
  2. Grade an assignment with a simple Pass or Fail
  3. Basic reporting based on how many students passed the an assignment on a given day

Assignment

In the pair programming session, you will work on some of the features listed above. The structure of the session will be like this:

  • 5-15 minutes of examining the existing code base to identify problems
  • 35-40 minutes of pair programming
  • 5-10 minutes of reflection on the process

Tips

  • It is worth preparing by looking at the code before you come into the interview; a portion of the interview will be focused on identifying the challenges with the existing code base.
  • Please make sure that it runs on your machine and bring your laptop to the interview. If you don't have a laptop, please let us know and we will provide you with a laptop with the code on it.
  • It might be helpful if you have an idea of an implementation approach
  • If you choose to implement the assignment on your own time, there will be further enhancements available, but we will neither give you bonus points nor an easier ride if you choose to do this.