Giter Site home page Giter Site logo

interview-pleno's Introduction

Teste Programador Backend Pleno

Teste destinado aos candidatos a vaga de Programador Backend Pleno. Se o seu nível é outro, por favor, dê uma olhada nos demais repositórios e escolha o que se adequa a sua skill.

Descrição

Um cliente chamado Bruce Wayne nos contratou para fazer um sistema com o objetivo de catalogar os super-heróis existentes.
Parece uma missão difícil, mas, não se preocupe, o seu papel não será o de sair por aí procurando por heróis, vamos deixar isso para o Sr. Wayne...
Seu papel é desenvolver uma API com as operações básicas de cadastro de um herói e algum mago (coff, coff) do front-end fará as telas.

Requisitos

Bom, aqui começa a explicação do que você terá que nos entregar. Leia com atenção.
Ah, o Alfred (acho que ele é tipo um mordono do Sr. Wayne) começou o projeto para nós e o esqueleto do projeto já existe.

Dito isso vamos deixar uma lista com as tarefas:

  • Criar endpoint de criação de heróis respeitando os campos obrigatórios. Olhe o script SQL dentro do projeto para saber quais são os campos obrigatórios.;
  • Criar endpoint de busca de heróis por ID. Caso não encontre o herói o sistema deve retornar um erro 404 (Not Found);
  • Criar endpoint de busca de heróis por filtro, nesse caso o filtro será apenas o nome. Caso não encontre nenhum herói o sistema deve retornar um sucesso 200 com o body vazio;
  • Criar endpoint de atualização de heróis, todos os campos poderão ser atualizados. Caso não encontre o herói o sistema deve retornar um erro 404 (Not Found);
  • Criar endpoint de exclusão de heróis. A exclusão será física, ok? (Física?! É, deleta o registro da base). Caso não encontre o herói o sistema deve retornar um erro 404 (Not Found);
  • Criar testes unitários e de integração das funcionalidades desenvolvidas. As classes de teste unitário terminam com o prefixo Test.java e as classes de teste de integração terminam com IT.java. Temos um modelo de classe de exemplo dentro do projeto;
  • Criar um docker-compose.yml funcional para execução da aplicação. (Banco de Dados + API).

Ah, tem algo mais! O Sr. Wayne nos pediu para criar um endpoint onde ele possa selecionar dois heróis e comparar seus atributos força, agilidade, dextreza e inteligência. Como resultado, o sistema deve retornar um objeto contendo os id's e a diferença dos atributos (positivo se maior, negativo se menor) de cada herói. Dá uma pensada em como vai ficar esse objeto e o caminho do endpoint, tudo bem?

Agora sim, terminamos! Se você nos entregar isso que pedimos garanto que o Sr. Wayne vai pirar!!!

Considerações

Leia essas instruções para ganhar tempo no desenvolvimento, ok? ;)

Primeiro Passo

Como primeiro passo faça um fork desse projeto na sua conta do GitHub é assim que iremos avaliar sua prova!
Não iremos avaliar provas que não estejam nesse padrão, então MUITA ATENÇÃO nessa dica.

Configurações

  • OpenJDK 11 instalado;
  • Maven na versão 3.6+ instalado;
  • IDE pode ser o de preferência, mas gostamos bastante do IntelliJ por aqui;
  • Docker e docker-compose instalados.

Testes

Para rodar os testes (unitários e de integração) utilize o comando a seguir:

mvn clean verify

Bônus

Será considerado um plus os candidatos que entregarem:

  • Bom uso dos padrões de REST;
  • Uso de BDD para escrever os testes de integração;
  • Redundância e Escalabilidade da API:
    • Mínimo de 2 instâncias;
    • Balanceamento de carga usando alguma técnica de Round Robin;
    • Endpoint de HealthCheck das máquinas;
    • (Opcional) Monitoramento das máquinas.
  • Cache Distribuído:
    • Utilizar algum mecanismo de cache distribuído na camada de banco de dados.

interview-pleno's People

Contributors

brainweb-br avatar gabriel-srodrigues avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.