Coder Social home page Coder Social logo

feltex / desafio-uol Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 107 KB

Desafio de vaga de emprego Full stack para UOL Host feito usando Java e Spring Boot

Java 71.96% HTML 28.04%
bootstrap controller h2-database java java21 jpa sprinb spring-boot spring-mvc

desafio-uol's Introduction

Desafio UOL Host de Programação

Reference Documentation

Teste para BackEnd para UOL HOST

Montamos este teste para conhecer seus conhecimentos e habilidades em linguagem Java, programação orientada a objetos e boas práticas de programação.

O teste consiste em montar uma aplicação Java capaz de recuperar informações de um arquivo XML e de um arquivo JSON, persistir um cadastro em um banco de dados em memória ou em arquivo e listar os cadastros em uma interface simples.

Proposta

O 'novo' sistema de cadastro de jogadores do UOL precisa de uma nova cara! Isso porque a área de lazer da empresa definiu que todo jogador deverá ter um codinome. A proposta foi um sucesso e muitos candidatos se inscreveram, por isso a área de lazer acabou restringindo os codinomes em duas listas distintas: "Os Vingadores" e "A Liga da Justiça".

Seu desafio é elaborar um sistema em Java capaz de:

  1. Permitir o cadastro de jogadores de acordo com os codinomes contidos nos links de referência vingadores.json e liga_da_justica.xml
  2. Apresentar um cadastro contendo nome, e-mail e telefone do jogador (sendo que nome e e-mail são obrigatórios)
  3. Persistir a informação cadastrada em um banco de dados em memória, como HSQLDB ou arquivo
  4. Obter, a qualquer momento, a lista de todos os jogadores cadastrados com seus respectivos codinomes e também a informação de qual lista o codinome foi extraído
  5. Impedir a utilização de um mesmo codinome para diferentes usuários (a menos que o codinome seja para listas diferentes)
  6. Incluir o codinome escolhido dentro das listas Os Vingadores ou A Liga da Justiça
  7. Obrigatoriamente, ler a informação do codinome em arquivos na internet (links abaixo). Atenção: não vale guardar a informação do codinome localmente (em um arquivo, em uma classe, em um banco de dados etc.)

Arquitetura de referência

alt text

Links dos arquivos de referência

https://raw.githubusercontent.com/uolhost/test-backEnd-Java/master/referencias/liga_da_justica.xml https://raw.githubusercontent.com/uolhost/test-backEnd-Java/master/referencias/vingadores.json

Casos de uso

  • Cadastro com sucesso:

    1. O usuário 'Felipe' cadastra seu nome, e-mail e telefone, e escolhe a lista vingadores.json
    2. O sistema recebe o cadastro e verifica se há codinomes disponíveis na lista vingadores.json
    3. O sistema encontra um codinome livre e o escolhe
    4. O sistema persiste nome, e-mail, telefone, codinome e arquivo de referência em um banco de dados em memória ou em um arquivo
    5. O sistema informa que o usuário foi cadastrado corretamente e mostra uma imagem de sucesso
  • Lista escolhida não tem codinomes disponíveis:

    1. O usuário 'João' cadastra seu nome, e-mail e telefone, e escolhe a lista liga_da_justica.xml
    2. O sistema recebe o cadastro e verifica se há codinomes disponíveis na lista liga_da_justica.xml
    3. O sistema não encontra um codinome livre
    4. O sistema informa que aquela lista não possui mais usuários disponíveis
  • Relatório de usuários cadastrados:

    1. O usuário 'Luís' clica em “Visualizar relatório de jogadores”
    2. O sistema consulta o banco de dados em memória ou em arquivo
    3. O sistema apresenta todos os usuários cadastrados. Cada linha tem as informações: nome, e-mail, telefone, codinome e arquivo referência

Instruções

Não há certo ou errado. Queremos apenas saber mais sobre seus conhecimentos na linguagem Java, como uso de bibliotecas públicas, e também seu cuidado com o código fonte, levando em consideração clareza de ideias, organização de código, documentação e testes.

Faça um clone deste projeto, crie um novo projeto no seu próprio GitHub e siga os seguintes passos:

  1. Faça um clone do projeto https://github.com/uolhost/test-backEnd-Java.git
  2. Crie um novo projeto dentro do seu GitHub (https://github.com)
  3. Desenvolva um sistema que atenda os casos de uso apresentados
  4. Para montar seu sistema, leve em consideração a arquitetura de referência dentro da pasta referência
  5. Criar uma interface em HTML que contenha um formulário para receber nome, e-mail e telefone
  6. Criar uma interface em HTML que liste os jogadores cadastrados por nome, e-mail, telefone, codinome e lista de referência
  7. Criar uma ou mais classes que faça(m) uma requisição HTTP para o arquivo referência “Liga da Justiça” em: https://raw.githubusercontent.com/uolhost/test-backEnd-Java/master/referencias/liga_da_justica.xml
  8. Criar uma ou mais classes que faça(m) uma requisição HTTP para o arquivo referência “Os Vingadores” em: https://raw.githubusercontent.com/uolhost/test-backEnd-Java/master/referencias/vingadores.json
  9. Criar uma ou mais classes que contenha(m) as regras para persistir e recuperar cadastros de jogadores
  10. Documente como o projeto deve ser iniciado para que possamos rodar sua aplicação
  11. Suba a sua proposta para o projeto que você criou no GitHub. Exemplo: https://github.com/seuNome
  12. Envie-nos o link do GitHub do seu projeto para podermos realizar o download. Exemplo: https://github.com/seuNome/test-backEnd-Java.git
  13. Aguarde o RH entrar em contato.

Regras

  1. Você poderá utilizar o Java em qualquer versão :)
  2. Você poderá utilizar quaisquer frameworks da linguagem Java :)
  3. Para persistir as informações, você poderá utilizar um banco de dados em memória gerenciado por você ou utilizar um banco, como HSQLDB.
  4. Você também pode optar por gravar em arquivo.
  5. Não vale utilizar o codinome de um mesmo arquivo mais de uma vez.
  6. Detalhes como criação de testes unitários, ordenação da lista de cadastrados ou filtro da lista são opcionais. Mas, se você fizer iremos apreciar! =)

O que apreciamos

  • Organização;
  • Simplicidade;
  • Objetividade;
  • Reúso de código;
  • Testes unitários;
  • Padronização de código;
  • Padrões de projeto;

Quem buscamos

Queremos uma pessoa que goste do que faz, trabalhe em equipe e tenha vontade de inovar, buscando sempre atualização e soluções inovadoras.

Se você se identificou, venha fazer parte do nosso time!

desafio-uol's People

Contributors

andrefelixbr avatar feltex avatar

Stargazers

 avatar  avatar

Watchers

 avatar  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.