Code Monkey home page Code Monkey logo

lynk-take-home's Introduction

Backend Engineering Challenge

Welcome Candidate and thank you for taking the time to complete the take-home challenge for our backend engineer position

Once you have completed your solution, please reply with a link to a github repository and instructions on how to install / run the application

Good luck and if you have questions, please reach out to us at [email protected]


  1. Make sure you have min Java 11 installed.
  2. Run ./gradlew build to build the api and dependencies. To start the API server, run ./gradlew bootrun. (You can also use IDE commands for build/running if you wish)

Overview

This exercise is to implement the best possible solution to the exercise below. We're evaluating your ability to take a set of requirements and spike a holistic solution that demonstrates craftsmanship, thoughtfulness and good architectural design. If you want to impress us, build something that is beautiful, highest performant, intuitive and easy to debug/test/extend ๐Ÿ˜ƒ . Extra points if you can also add tests

Ideally your solution would have some way to run locally so we can fully analyze your efforts.

Exercise

Design and implement a Java REST API that CRUDs artists.

Authentication/Authorization is not required.

** A boilerplate model, controller and repository has been created for you **

Each artist object consists of following (but not limited):

  • first_name (required)

  • middle_name

  • last_name (required)

  • category (Can be one of ACTOR | PAINTER | SCULPTOR) (required)

  • birthday (required)

  • email (required)

  • notes

###Notes:

  • The request and response should both be in JSON format

  • You can use the provided in-memory DB (H2)

  • Creation route should validate for required parameters (ex. if last_name not given or blank it should throw an error)

  • Filters should be case insensitive (ex. /artists?category=actor is the same as /artists?category=ACTOR)

The API should have the following:

           - GET         /artists/:id     (Show)
           - GET         /artists         (Index)
           - POST        /artists         (Create)
           - DELETE      /artists/:id     (Delete)
  • Getting a list of artists should be filterable. Ability to Filter by category, birthday-month, search (search -> can search by first_name or last_name, it should also partial search, ex. given search=vin should bring up kevin, if we have a kevin in the system) , you should also be able to filter by one, or more filters, for example search and category
  • Try to make sure your solution is the best performant, you can make any changes/additions you like to DB schema/indexes, application.properties, or any spring/java classes
  • Assume that we have a big collection of artists in the DB, make sure things are performant based on that assumption

Using the APIs

We can start up the application either using an IDE or using ./gradlew bootrun I personally used postman the call the apis. The parameters are named the same as the requirements given above Creating artist: img.png

Deleting artist: img_1.png

Getting all artist: (with filters) img_2.png

Getting single artist: Using a path variable for this one img_3.png

lynk-take-home's People

Contributors

chow1340 avatar trylynk avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.