Codding task for WAES interview process
- Provide 2 http endpoints that accepts JSON base64 encoded binary data on both
endpoints
- /v1/diff/{ID}/left and /v1/diff/{ID}/right
- The provided data needs to be diff-ed and the results shall be available on a third end
point
- /v1/diff/{ID}
- The results shall provide the following info in JSON format
- If equal return that
- If not of equal size just return that
- If of same size provide insight in where the diffs are, actual diffs are not needed.
- So mainly offsets + length in the data
- Java 11 - Language
- SpringBoot, SpringJPA
- H2 - In memory SQL Database
- JUnit - Testing
- Mockito - Testing
- Lombok - Java library to write less code
- Gradle - Dependency Management
- Swagger2 - REST API documentation Documentation
- google-java-format plugin for IDEA - Google Java Formatting style
- To immediately run the application:
./gradlew clean bootRun
- To run only unit tests:
./gradlew clean test
- To run only integration tests:
./gradlew clean integrationTest
- To package application run:
./gradlew clean bootJar
- To open API Docs use this url
{host}:{port}/swagger-ui.html
, for example http://localhost:8080/swagger-ui.html
- Ilya Snitavets - LinkedIn
- Increase the maturity model (Richardson Maturity Model);
- Implement OAuth 2 with several grant types to secure the endpoints
- Store Diff results in DB to avoid performing the comparison again.
- ELK stack to store logs
- RabbitMQ implementation to perform data comparison asynchronously