Job Title: Senior Front-End Developer Technical Interview Task
Task Description:
We are seeking a Senior Front-End Developer to join our team. As part of the interview process, we have prepared a technical task to assess your skills and expertise. The task involves reviewing and fixing errors in a sample Angular application. The application is designed to evaluate your knowledge in Angular, Redux state management, unit testing, and adherence to SOLID principles.
Task Details:
You will be provided with an Angular application that includes intentional errors in components, actions, reducers, effects, and unit tests. Your task is to identify and fix these errors. The application is structured as follows:
- AppComponent: Displays user information and includes a button to load user data. There are errors related to Redux state management and the SOLID principles.
- UserListComponent: A child component that displays a list of users. There are errors related to emitting events and TypeScript type definitions.
- Redux Store: Contains actions, reducers, and effects. There are errors in action types, state management, and dependency injection.
- Unit Tests: There are intentional errors in unit tests for various components and services.
Key Skills to Demonstrate:
- Angular framework knowledge, including components, services, and template binding.
- Experience with Redux state management and NgRx library.
- Strong TypeScript skills, including type definitions and error handling.
- Unit testing expertise using Jasmine and Karma.
- Understanding and adherence to SOLID principles in software design.
Instructions:
- Clone the provided repository.
- Create a branch with your the following the pattern
code-review/your-name
- Identify and fix errors in the application code, including components, actions, reducers, effects, and unit tests.
- Ensure that the application adheres to SOLID principles.
- Write additional unit tests for the fixed components.
- Submit the fixed code along with the updated unit tests.
Evaluation Criteria:
Your task will be evaluated based on the following criteria:
- Accuracy in identifying and fixing errors.
- Adherence to best practices and coding standards.
- Clear understanding and implementation of Angular and Redux concepts.
- Proper application of SOLID principles.
- Quality and completeness of unit tests.
Submission:
Please submit your fixed code and unit tests within the given time frame. Ensure that your code is well-documented, and any assumptions or design decisions are clearly stated.
Best of luck with the task! We look forward to reviewing your solution.