Skip to content

yceruto/code-interview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Code Interview

Tech Stack

Node.js NestJS

Problems

  1. Software design and architecture:

    Design classes for a task management system, ensuring it adheres to the SOLID principles.

    • A Task model that contains the following information:
      • Unique identifier
      • Title
      • Priority (Low, Medium, High)
      • Status (Todo, In-Progress, Done)
      • Creation moment (Date and time)
      • Modification moment (Date and time)
      • Age (Time between the creation moment and the moment the task status is changed to "Done". If the task is not "Done" yet, the age is the time between the creation moment and the current time)
  2. Programming languages and frameworks:

    Implement a simple RESTful API to manage the list of tasks.

    • The API should support the following operations:
      • Create a new task,
      • Update an existing task,
      • Delete a task,
      • Retrieve a list of tasks.
  3. Data structures and algorithms:

    Given an array of tasks,

    • Write a function to find the oldest 3 tasks.
    • Write a function that retrieves all tasks, sorted in descending order based on the priority and creation moment.
  4. Problem-solving and coding:

    Implement a function that takes two Tasks as input and determines if one is an anagram of the other. Use the task title to make this comparison.

    • Essentially, two words are anagrams of each other if they contain the same characters but in a different order. For example, the words "listen" and "silent" are anagrams, as they both contain the same letters (e, i, l, n, s, t) arranged in a different order.
  5. Databases:

    Write a SQL query to retrieve the number of tasks per status:

    Status Count
    Todo 10
    In-Progress 5
    Done 3
  6. Testing and debugging:

    • Write the unit tests for steps 3 and 4 and explain how you would debug the functions if the test fails.
  7. Version control:

    Commit your current changes in Git following these instructions:

    • Create a new branch with your name as the branch name
    • Commit your changes to the new branch
    • Compress the project directory (please, remove the node_module dir)
    • Send it to our tech email (provided during the interview)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published