Node.js NestJS
-
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)
- A Task model that contains the following information:
-
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.
- The API should support the following operations:
-
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.
-
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.
-
Databases:
Write a SQL query to retrieve the number of tasks per status:
Status Count Todo 10 In-Progress 5 Done 3 -
Testing and debugging:
- Write the unit tests for steps 3 and 4 and explain how you would debug the functions if the test fails.
-
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)