Topline integration interview project

Thanks for taking the time to interview! We really appreciate it, and we hope to see the best of your work.

Rules

Please do this interview project on your own, without the help of anyone else. With that being said, you are more than welcome to use the internet. Google and Stack Overflow are invaluable tools in our daily lives, and we wouldn't expect you to do your best work without them.

We'd really like to see every part of your development process, so please record your screen while you work.

In addition to writing the code required by the instructions, write down your answers to the questions in the instructions directly in this README file. Most of the questions are open ended, and you don't need to make your code handle the questions below each prompt, but please make sure your code works before moving on to the next question. Clear writing and expressing your ideas is just as valuable as writing great code.

Getting started

Make a fork of this repo on your own GitHub account and then clone it down to your personal computer.

  • Read through the files in the /src directory.
  • Install dependencies for the project with yarn install.
  • Run yarn part-0 to run the /src/min-max-mean-invoice.ts script. Read over the script to get a sense of how we're importing the data from a file. We're cutting some corners to make things easier for this interview. Use this script as a rough guide when writing your own scripts.

Instructions

  1. Implement the top-ten-customers.ts script. Use yarn part-1 to run the script, and paste your output and the answers to the questions below.
  • How does your solution scale with the number of invoices? How about the number of customers?
  1. Implement the customers-by-cohort.ts script. Use yarn part-2 to run the script, and paste your output and the answers to the questions below.
  • How does your solution scale with the number of invoices? How about the number of customers?
  • Does your solution depend on whether the invoice data is sorted?
  1. Implement the revenue-by-cohort.ts script. Use yarn part-3 to run the script, and paste your output and the answers to the questions below.
  • How does your solution scale with the number of invoices? How about the number of customers?
  • Does your solution depend on whether the invoice data is sorted?

Tips

  • All of the questions have a desired output format that can require a lot of string mangling. If you're stuck on the formatting part, move on to the next question and get back to formatting later.
  • Git is your friend. Commit often and use descriptive commit messages. Push your work to GitHub so you don't lose it.
  • Get it working and then make it look good. Don't get lost in the perfect solution before you have a working solution.
  • Write down your responses to all the questions in the prompt before moving on to the next prompt.
  • Include more comments than you would in normal code. This will help us understand your thought process.
  • Take breaks when you need them.
  • You don't have to finish all of the prompts. We prefer thorough, well thought out responses over a complete solution without written responses.

Responses

Please write your responses to the questions in the instructions here. Please indicate any tradeoffs you made.

  1. Output:

Answers:

  1. Output:

Answers:

  1. Output:

Answers:

Submitting

To submit your code, send us a link to your repo. Once we confirm that we've downloaded your work, please delete the repo you created so future candidates don't accidentally find your solution.

To submit your screen recording, upload the video to YouTube as "Private" in the "Visibility" section and use the "Share Privately" button to share it with elliot@growtopline.com. If you'd prefer not to upload the video to YouTube, email elliot@growtopline.com and we can figure out an alternative.