Front-end Software Engineer Test

Instruction

This test is to help us understand your coding style and level. Use the opportunity to demonstrate your coding skills.

In this test, you’ll need to create a catalog application with the details provided below:

  • The mandatory requirements are for all candidates.
  • The optional requirements are required for Intermediate level (Junior/Intern are encouraged to try if you have enough time).

You are not expected to spend more than 2 days to complete the test. Please create a public repo github, push all your code on it and send us back the repo’s url.

 

Catalog Application

John is running a computer shop. Your job is to develop a web-based product that helps John quickly find products. You are provided with a mockup of the application and functional requirements below. The mockup is only a suggestion, feel free to arrange the UI in any way that you find more reasonable.

Website Interface Mockup

 

You are provided with a product listing api: API which returns a current list of John’s products. Each product item has the following fields:

  • id: number
  • name: string
  • imageUrl: string
  • dateAdded: Date
  • dateUpdated: Date
  • price: number
  • brand: string
  • code: string

Mandatory Requirements

Since John’s product collection is large, he’d like to be able to search for products by keywords in products’ names. Please implement a search feature that meet these criteria:

  • Searches are case-insensitive. i.e query “acer laptop” would match a product named “Next generation Acer Laptop“.
  • Queries can match non adjacent terms, i.e “Acer Laptop” should match a product named “Acer Aspire 5 Slim Laptop“.
  • Queries can match product names out of order. For example, the query “acer laptop” should match a product named “Cheap laptop from Acer“.
  • Your implementation should be performant, i.e it should work for much larger collections than provided in sample data.
     

Optional Requirements

For better user experience, you may consider to:

  • Filter products as user types query.

  • Highlight matched terms in displayed results.

  • Rank search results by relevance. For example, when searching for “Acer Laptop”:

    • In-order matches are displayed first. Product named “​Acer Laptop​ 14 inch” should appear before “Cheap ​laptop​ from ​Acer​”

    • Product names that match the query closer should be displayed first. i.e product with named “​Acer​ Aspire 5 Slim ​Laptop​” should be ranked higher than “​Acer​ Aspire with Full HD IPS Display and Backlit Keyboard ​Laptop​”

  • Allow partial term matching. E.g searching for “Acer Lapt” can result “​Acer​ Aspire 5 Slim Lapt​op”

 

Do not limit yourself to the suggested topics or details mentioned here. Feel free to dive into a separate area or separate aspect of the area as you see fit. We want you to showcase your technical depth and distinguish yourself from less experienced engineers.

 

FYI: Our Tech Stack

Backend Nodejs, Python (Django)
Database Mongodb, Postgresql, GCloud Data Store
App Flutter, Swift, Java, React Native
Front End  React JS
Storage GCloud Storage
Server GCloud Compute Engine