Home

Awesome

Travix Tech Interview Test

Introduction

Every engineer at Travix has to be able to come up with solutions, no matter their skill level (junior, intermediate, pre-senior, or senior) or role (pre-principal, principal I, II, or III).

This test is designed to give you a chance to show off your capabilities without taking too much time or being one of those boring online coding tests.

Instructions

Submission

  1. Pick one of the scenarios, read the description and requirements

  2. Fork the repository at https://github.com/Travix-International/tech-test

  3. Enter your proposed solution in your fork, following the provided skeleton setup

  4. Submit your proposal as a pull request

Solution

Your proposed solution must include:

Images linked in the documents should be local to the repository, not internet URLs.

It should include at least one of the following, more if you find it necessary:

If you can explain everything without diagrams or images, go ahead!

It shouldn’t include:

All non-original materials should include attribution where required by their licenses.

Time allotted for completion

There aren’t any formal requirements for how long this challenge should take you, complete it in ten minutes or ten hours, it’s up to you. We suggest to keep it to a maximum of one hour.

Scenarios

1. URL shortener system

Here at Travix we often find ourselves using very long, ephemeral, URLs. Often times these URLs are included in emails and risk getting ruined by formatters or email readers, therefore we want to design a system which would allow us to use a the shortest URL possible in place of a "real" URL. Other times these URLs are used for machine-to-machine communication.

Some of these URLs are used for security purposes, and thus need to be one-shot only.

For this new Travix URL shortening system we have obtained the special domain trav.ix and the system should handle these input URLs:

Additional requirements:

2. Simple shopping cart system

Travix is jumping into the direct to consumer ecommerce realm! Help us by designing a simplified shopping cart system.

This shopping cart should be able to:

Note that this system doesn’t include the inventory, fulfillment, payment systems, or other extra systems.

Additionally, know that our customers visit our site an average of seven times before completing a purchase, and spend anywhere from twenty to one hundred and twenty minutes browsing each time.

3. Hours tracking system

Tired of finding shortcomings in every Time Reporting System we purchased so far, Travix has decided to invest resources in creating our own Travix Hours Reporting Essential System Helper or THRESH.

This system should:

Take into consideration that if this THRESH system is successful, we might want to spin it out as its own product and offer it to the public as a SaaS.

4. Simple micro-blog platform

Instead of Twitter, Travix wants to launch its own specialized micro-blogging platform: Trawiller!

Trawiller takes the basic concept of Twitter, and adds its own holiday flair:

5. Fare Cache

Every day, hundreds of millions of airfare prices are being found based on searches from our customers. This can be a valuable stream of information, for example it can be used to show the cheapest recent price for a particular flight.

When a customer searches for a particular route (e.g. AMS to JFK), we return a list of zero or more fares, and on an average day we perform fifty million of these search requests, with each search returning anywhere from zero to two hundred results, but on average ten.

Each fare has a price with two decimals, and it’s valid for up to forty eight hours (and it’s a truly random number).

Roughly, there are 20,000 airports in the world, but not all airports are connected to each other, so there are only about 15,000 unique routes, combinations of a departure airport and an arrival one. Naturally not every route is equally popular, so there isn’t an even distribution of fares over the routes.

In order to make good use of this searches and reduce the strain on our poor servers, we want you to build a Fare Cache.

This Fare Cache: