0% found this document useful (0 votes)
20 views4 pages

Java Backend API Development Task

Uploaded by

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

Java Backend API Development Task

Uploaded by

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

Java Backend Assessment

General Note
Should you find anything unclear in this assessment, please contact us for
clarification so we can assist you in completing it under the best possible
conditions.

Technology Stack
Latest Stable Version of Java

Latest Stable Version of Spring Boot

Package Manager

No mandatory libraries required

All libraries are accepted

🔒 All the above are mandatory and not open to interpretation

Procedure
Create a private GitHub repository and share it with the following:

@pierrick-libert-codeleap

@hazel-nguyen-codeleap

We expect you to maintain the repository's privacy out of fairness to all


candidates. However, you are allowed to share this repository privately with
other companies or recruiters to demonstrate your expertise

Java Backend Assessment 1


Should your test lead to a job offer, you will receive a voucher as a token of
appreciation for your effort

Backend
To manipulate data, please visit this link, register for an API key, and use the API
as normal.
The base URL for the API is as follows: [Link]

We strongly recommend using the OpenAPI Spec Doc instead of the Postman
API Docs, as the latter may contain inconsistencies.

Task
Context
Everybody loves dogs. To satisfy the large demand for beautiful images of
dogs, we need to be able to deliver pictures of them at a moment's notice,
whenever someone wishes to receive them. The preferred method of doing
this, of course, is via the internet.
The key goal of this exercise is to structure and build an API where people can
upload and receive cute images of dogs.

Evaluation
We will assess the functionality of your application, the quality of your source
code, and the setup of tools to ensure project stability.
We recognise that with today's AI technology, creating such an application is
more accessible. While we encourage the smart use of AI tools, be aware that
merely copying and pasting code without understanding it, especially if
detected, will immediately reject your application. We expect experts to use AI
as a support tool, not as a substitute.
The estimated completion time for this task is 6 to 8 hours.

Functionalities
Import

Java Backend Assessment 2


As a reviewer, I want to import the list of breeds from here into a DB (no real-
time data sync is expected, just a one-shot import from the API).

API
All the user stories below are expected to be requested through a REST API.
As a user, I want to retrieve all breeds.

As a user, I want to retrieve information about a specific breed.


As a user, I want to upload and attach an image to a specific breed (server-side
upload).

As a user, I want to delete an image from a specific breed.


As a user, I want to get any image previously uploaded.

As a user, I want to display an image previously uploaded (e.g: must be visible


through the browser).

As a user, I want to retrieve a random list of 20 images with their respective


URLs (dynamic counter is accepted).

Documentation
As a reviewer, I want to have a file explaining the candidate’s approach,
potential improvements and any useful information related to the project.

Code Structure
The user stories below are mandatory for candidates applying for mid-level
positions and above, and optional for others.

As a technical leader, I want to see an OpenAPI 3.X file.


As a technical leader, I expect to have tools to ensure the code stability and
consistency (e.g: lint, pre-commit…).

As a technical leader, I expect to have full test coverage.

Bonus
Please note that all of the bonuses below are optional. Develop them at your
own discretion and only after all the mandatory user stories listed above are
done, and be aware that a non-working bonus will be treated the same way as
a non-working feature.

As a user, I may need extra parameters to better filter some requests.

Java Backend Assessment 3


As a user, I expect not to be impacted by edge cases.

As a developer, I may add endpoints to filter data.

As a developer, I may add anything I consider that this project should support
(e.g: pre-commit…).

Source Code
Do’s
Ensure the code is well-structured

Use naming conventions that align with the programming language

Maintain a consistent coding style throughout (linter, my dear friend)

Comment on your code for clarity

Cite your sources if you replicate an algorithm or a significant piece of code

Use meaningful commit messages

Document your work

Don'ts
Avoid copying and pasting without understanding the code

Do not over-complicate the project

A final word
If you find yourself unable to implement all the mandatory features, prioritise
documenting your work to thoroughly explain your process and the context of
your test.

Feel free to continue working on your project after submission if you wish to
enhance or complete aspects of it. However, we ask that you document any
post-submission work in your commits or in the [Link] (e.g., "After
submission: …" or "AS: …"), including the additional time spent.
Do not stress too much over this assessment. Our goal is simply for you to
showcase the skills you've honed over the years 🙂.

Java Backend Assessment 4

Common questions

Powered by AI

Candidates are required to create a private GitHub repository and share it with specified individuals (@pierrick-libert-codeleap and @hazel-nguyen-codeleap). They must maintain the repository's privacy to ensure fairness among all candidates . However, candidates are allowed to share the repository privately with other companies or recruiters to demonstrate their expertise. This approach ensures the integrity of the assessment process while allowing candidates to showcase their work to potential employers.

Adding extra parameters to requests or implementing additional endpoints can allow for more precise data filtering and improve user experience by tailoring data retrieval to specific needs. This enhancement aligns with user expectations for a flexible and responsive API that can address various edge cases and scenarios. By proactively addressing these aspects, candidates can demonstrate a deeper understanding of user needs and show innovation in extending the basic functionalities of the API .

Candidates must provide a file explaining their approach to the assessment, potential improvements, and any useful information related to the project . This documentation should reflect the candidate's understanding of the project and their problem-solving process. It is crucial for reviewers to evaluate the candidate's decision-making and improvement suggestions, showcasing not just coding skills but also analytical capabilities.

To ensure stability and consistency, candidates can configure tools such as linters for code style compliance and pre-commit hooks to enforce specified coding standards before changes are committed. These tools help maintain uniformity in code formatting and identify potential errors early in the development cycle . By integrating such tools, candidates demonstrate a proactive approach to quality assurance and code management.

Importing breed data from the provided API into a database is a critical task to ensure availability and manageability of breed information within the application context. This process allows the application to present consistent data to users without relying on real-time API calls, thus optimizing performance and reliability . The data import process becomes essential for building a robust application architecture where data can be efficiently accessed and manipulated.

Consistent coding style and structure are crucial for maintainability, readability, and collaboration. The emphasis ensures that code can be easily understood by others and aligns with industry standards. A consistent coding style, achieved through tools like linters and meaningful comments, also reflects a disciplined approach to writing code . This standardization facilitates better understanding, easier debugging, and smoother transitions if the project is handed over or expanded upon.

Candidates can suggest improvements such as better data caching mechanisms, enhanced user authentication, or optimized image retrieval processes to maximize performance. These improvements should be documented clearly, providing a rationale for their necessity and outlining implementation strategies . By offering well-reasoned improvements, candidates exhibit foresight and planning skills, enhancing the long-term viability and efficiency of the project.

The assessment encourages candidates to prioritize comprehensive documentation if they are unable to implement all mandatory features. This guidance underscores the importance of clarity in communication and allows candidates to thoroughly explain their process, challenges faced, and context of the test . Documenting unfinished work with clear explanations demonstrates a systematic approach to problem-solving, illustrating to reviewers the candidate's project management skills and understanding despite incomplete implementation.

Requiring full test coverage ensures that the developed application is robust and free from defects. This influences the development process by mandating that candidates design test cases for all functionalities, thereby ensuring that each feature works as intended under various scenarios. The necessity for comprehensive testing fosters meticulous coding practices and underscores accountability in delivering a stable product . It also provides a safety net for future code modifications, facilitating easier detection of regressions or failures.

The use of AI tools is encouraged to assist in the development of the requested functionalities, as it can make the application development process more efficient. However, candidates should not rely solely on AI-generated code, especially if they do not understand it. The ability to use AI as a support tool rather than a complete substitute is crucial. If candidates are found to copy and paste code without understanding, it will lead to the immediate rejection of their application . This expectation ensures that candidates demonstrate genuine understanding and expertise.

You might also like