Hotel Search

Problem statement

You are required to develop a JSON REST web service for hotel search. The service must have two

API interfaces:

  1. CRUD interface for hotel data management. Required hotel data include:
    • Hotel name
    • Hotel price
    • Hotel geo location
  2. Search interface that returns the list of all hotels to the user:
    • Search parameter: My current geo location
    • Output: List of hotels
      • For each hotel, return the name, the price, and the distance from my current location
      • The list should be ordered. Hotels that are cheaper and closer to my current location should be positioned closer to the top of the list. Hotels that are more expensive and further away should be positioned closer to the bottom of the list.

Search interface should return only the hotels prepared through the CRUD interface. You are not required to use any persistent storage (database or similar), but the design of the application should enable for easy addition of the persistence layer afterwards. You’ll score bonus points if the search interface supports paging.

Expected outcome

You should prepare a working solution for this assignment. We at Lemax work with Microsoft .NET, so a solution based on .NET stack, written in C# is preferred.

Be sure to submit your solution before the agreed deadline. Submit it in any form you think is best appropriate. After the submission, you’ll be asked to present the solution in person. We’ll evaluate the solution based on following criteria:

  • Functionality – is the application functioning as expected? Are negative and corner cases covered?
  • Technical design – how well does the code follows relevant design principles (OOP, Design patterns, SOLID, DRY...)? Is the code extensible and reusable?
  • Standards – is the API aligned with industry standards and guidelines (HTTP, REST...)?
  • Coding style – is the coding style clean and consistent? How’s the variable naming?
  • Source code organization – are source code files organized in a folder structure according to industry best practices? Is the solution committed to a source code repository (Github, Bitbucket, GitLab etc.)?
  • Performance – what data structures and algorithms are selected? What is the complexity of the search functionality? Does it allow for scaling?
  • Security – are secure coding practices being used (defensive programming, input validation etc.)? does the API implements authentication and authorization?
  • Test coverage – does the solution include unit tests? Are the test cases documented? is test execution automated?
  • Documentation – is the code self-documenting? Are code comments used and for what purpose? Does the solution include markdown documentation? How easy is for the next developer to take over this solution?
  • Processes – does the solution include any elements of the CI/CD (build, package, test...)? How much attention was given to the application logs? Are any other aspects implemented, that would ease the usage of the application in a production environment (monitoring, health-checks etc.)?
  • Presentation skills – how the solution is presented? Are you able to present the solution to both the technical and non-technical audience? How do you accept the feedback? How do you answer to questions (good ones and bad ones)?