0% found this document useful (0 votes)
3 views2 pages

Backend Engineer Test Project Instructions

The document outlines a test project for a backend engineer position, focusing on creating a scalable application using GraphQL, Node.js, and Spring Boot. The project requires a frontend proof of concept with specific UI features and a backend GraphQL API for managing employee data with various functionalities, including authentication and performance optimization. Candidates are encouraged to showcase creativity and design skills, with the potential for an interview if the submission is well-received.

Uploaded by

aseem_yadav_1
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views2 pages

Backend Engineer Test Project Instructions

The document outlines a test project for a backend engineer position, focusing on creating a scalable application using GraphQL, Node.js, and Spring Boot. The project requires a frontend proof of concept with specific UI features and a backend GraphQL API for managing employee data with various functionalities, including authentication and performance optimization. Candidates are encouraged to showcase creativity and design skills, with the potential for an interview if the submission is well-received.

Uploaded by

aseem_yadav_1
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Please read the instructions carefully: this is not a timed test.

The
deadline to submit is 2 days after assignment.

This is the test project only. You can take as much time as needed. Send me the
deployed app URL/Github link.
if we like your design, presentation and code, we will schedule interview with hiring
manager.
Focus on the presentation and scale able code: beautiful and
extraordinary design: first impression. Show your own creativity as well.

We’re looking for a backend engineer skilled in GraphQL and [Link] and spring
boot to support our React-based application. Frontend Tech Stack: React, CSS,
HTML, and UI relevant tech stack.

Frontend: A POC demonstrating:


 Hamburger menu with just one level sub-menu deep on a few menu items
 Horizontal menu with few sample menu items.
 Main content showing a beautiful grid view. For example, imagine you are
showing employees data in 10 columns.
 When the user want to see the same employees data, it should show in a tile
view showing necessary fields only.
 Each tile will have a bun button for additional options such as edit, flag,
delete etc.
 When a tile is clicked, show the entire details of the record in a beautiful
view. It can be an expanded tile or a pop-up style view etc.
 We should be able to navigate back to the tile view from this expanded view.
 Any public API can be used to display the content on the grid/tile.

Backend:
 Backend Setup: Create a GraphQL API
 Data Model: Store employee data with fields like ID, name, age, class,
subjects, and attendance.
 GraphQL Schema:
o Queries:
 List employees with optional filters.
 Retrieve details for a single employee.
 List employees with pagination.
o Mutations:
 Add
 update
 Pagination & Sorting: Implement pagination for queries and sorting
 Authentication & Authorization: Secure API with role-based access
control. ( admin, employee. Few features are accesible for employee and few
for admin)
 Performance Optimization: Please demonstrate essential peformance
considerations.

Common questions

Powered by AI

GraphQL plays a pivotal role in achieving flexible data models and seamless frontend-backend integration owing to its schema-based architecture, which allows for detailed queries and precise data fetching. This flexibility enables developers to retrieve exactly the data needed by the frontend, minimizing over-fetching and ensuring efficient network usage. Furthermore, GraphQL's ability to combine multiple resources into a single request simplifies the integration between frontend and backend, reducing round trips and enhancing performance. Its introspective nature also aids in maintaining the harmony between evolving data models and application requirements, fostering a more agile development process .

Role-based access control (RBAC) enhances security by restricting API access based on user roles, minimizing the risk of unauthorized data access. In the described system, RBAC distinguishes between admin and employee roles, granting different API functionalities based on user access levels. By controlling which mutations (e.g., add, update) are available to specific roles, it provides a robust layer of security, ensuring sensitive operations and data modifications are managed securely. This prevents unauthorized alterations or access to sensitive employee data, enforcing strict adherence to defined security policies .

Integrating a tile view feature in addition to a grid view and detail views presents several challenges. Firstly, ensuring a consistent and intuitive user experience can be difficult, as the transition between views must be smooth and user-friendly. Secondly, developers need to maintain data integrity across these views, ensuring that updates in one view are accurately reflected in others. Performance issues could also arise due to the additional data processing required to support multiple views. Furthermore, designing a responsive UI that adapts to different devices and maintains usability can be complex. These challenges require careful planning and testing to ensure the new feature enhances rather than detracts from user experience .

Performance optimization strategies for a GraphQL API backend include implementing request batching and caching to reduce redundant data fetching. Efficient query resolution and minimizing over-fetching by carefully defining GraphQL schemas can prevent unnecessary data processing. Load balancing and horizontal scaling can manage increased demand without degrading performance. Additionally, employing data loaders to optimize data retrieval and reduce multiple fetches can significantly enhance efficiency. Logging and monitoring tools will aid in identifying performance bottlenecks, allowing timely adjustments to maintain optimal performance .

Using a public API to display content offers benefits such as access to rich data sources without the need for extensive backend development, enabling rapid development and integration of dynamic data functionalities. However, considerations include ensuring compatibility with the existing data model, handling potential inconsistencies in data formats, and adhering to the API usage limits and licensing terms. Developers should also implement robust error handling to manage possible downtime or changes in the API while maintaining data integrity and user experience .

The critical factors influencing the choice of backend setup include compatibility with the frontend framework (React), scalability, efficiency in handling GraphQL query and mutation requests, and the ability to integrate with existing authentication protocols and data models. For this specific application, it is important that the backend supports GraphQL efficiently, as it is used to fetch and manipulate data, while also offering functionalities like pagination and sorting. Moreover, the GraphQL API needs to integrate seamlessly with Node.js and potentially Spring Boot, depending on the other existing systems or requirements, ensuring smooth operation across the technology stack .

Scalability in a React-based frontend connected to a GraphQL API can be achieved by utilizing component-based architecture that promotes reusability and modular updates. Decomposing the UI into smaller logical components enables developers to maintain and expand the functionality easily. Implementing client-side caching and efficient state management through tools like Redux or Apollo Client enhances performance under load. Scalability is further supported by employing lazy loading techniques to manage resource consumption actively. Additionally, designing the system to leverage server-side rendering can ease the load on the client, contributing to overall application scalability .

Pagination and sorting are crucial in enhancing both performance and user experience in data-heavy applications. When listing employees, pagination helps manage data load by breaking down large datasets into smaller, more manageable chunks, reducing the amount of data fetched at once. This results in faster response times and improved performance, especially in frontend-heavy applications like those built with React. Sorting enhances usability by allowing users to arrange data according to specific criteria, facilitating easier navigation and information retrieval. In a system using GraphQL, these features ensure efficient data querying and retrieval, maintaining optimal application performance and user satisfaction .

Implementing both a hamburger menu and a horizontal menu presents various design and functionality challenges. From a design perspective, ensuring that both menus coexist harmoniously without cluttering the UI requires meticulous planning and design skills. Functionally, these menus must be synchronized to provide consistent navigation paths and user flow, which can be challenging in terms of user experience design. Additional complexities arise in maintaining accessibility compliance and ensuring the menus are responsive across different screen sizes and devices. Developers must also balance the trade-off between offering comprehensive functionality and maintaining an intuitive interface .

The requirement for creative design significantly impacts the development process by demanding a more iterative and experimental approach. Developers need to strike a balance between implementing functional requirements and exploring unconventional design solutions that enhance user experience and aesthetic appeal. Creative designs often lead to more complex UI components, requiring additional development time and resources to ensure cross-browser compatibility and responsiveness. It also necessitates close collaboration between designers and developers to align technical feasibility with design vision, potentially extending development timelines to accommodate brainstorming and testing design iterations .

You might also like