Skip to content

Quiz de perguntas e respostas que consome a API da empresa Dynamox

Notifications You must be signed in to change notification settings

William-Sobrinho-Geraldo/Quiz_DYNAMOX

Repository files navigation

Teste Técnico - Quiz Dynamox

Resumo

Este projeto trata-se de um teste técnico da empresa Dynamox no qual o objetivo era construir um quiz de 10 perguntas e respostas através de requisição API em um endpoint(HOST) que foi disponibilizado pela empresa.

Imagens do App


Requisitos exigidos pela Dynamox

  • Ao abrir o aplicativo, o usuário insere o seu nome ou apelido e pressiona um botão para iniciar o quiz.
  • O quiz consiste de uma sequência de 10 perguntas de múltipla escolha.
  • As perguntas serão obtidas por meio de uma requisição HTTP e serão recebidas em formato JSON.
  • O resultado de cada pergunta também será consultado via HTTP.
  • O usuário deve saber se acertou a pergunta antes de passar para a próxima.
  • Ao final das 10 perguntas, o aplicativo deve mostrar a pontuação do usuário e oferecer opção de reiniciar o quiz.
  • Para a entrega do projeto faça o upload de seu projeto para um repositório no Github nos envie o link.

Detalhes do desenvolvimento do App

Este App foi totalmente escrito na linguagem Kotlin, através da plataforma Android Studio. Utilizei o framework moderno, Jetpack Compose, para criação das telas de UI pois ele vem se mostrando muito útil além de oferecer maior escalabilidade e fácil manutenção para novos projetos em Android Nativo.

Para fazer a requisições web GET( ) e POST( ), utilizei a biblioteca Retrofit juntamente com o GSON para converter dados para o formato JSON e vice-versa.

Para a navegação de telas foi utilizada a biblioteca Navigation Compose que é indicada pelo Google.

Para fazer o cadastro e busca de usuários localmente foi usada a biblioteca ROOM que cria um banco de dados SQLite no aparelho do usuário permitindo a utilização de um sistema CRUD (Create, Read, Update e Delete)

Video demonstrativo

A seguir temos um GIF que demonstra de forma resumida das funcionalidades do App. Para acessar o vídeo completo com audio, basta clicar no link ao lado: Link do vídeo


Problemas encontrados

Encontrei um problema na questão de ID 48, é a pergunta que começa com o texto "Quem foi o primeiro homem a pisar na lua? ... ". O problema ocorre porque quando fazemos a requisição GET( ) o sevidor nos devolve a alternativa correta, "Neils Armstrong, em 1969." com um ponto final, mas quando usamos essa alternativa como requisição ao fazer o POST( ) o servidor reconhece essa alternativa como errada justamente por cauda so ponto final. Segue imagem abaixo.

Basta remover manualmente o ponto final e refazer a requisição POST( ) que o servidor reconhece a alternativa como correta retornando um "result : true" conforme requisição feita através do programa Insomnia logo abaixo:

Sugestão de Melhoria na API

Acredito que uma simples conversa com o pessoal de Backend seria suficiente para corrigir esse problema, visto que o servidor está enviando a alternativa com um caracter adicional (o ponto final) na requisição GET( ) mas não aceita essa resposta com o ponto final na requisição POST( ).

Sabemos qual o ID da questão problemática, sabemos qual a alternativa está incorreta e sabemos como corrigí-la, basta alterar essa alternativa no banco de dados removendo o ponto final e o problema estará resolvido.

Agradecimentos

Fico grato por estar participando do processo seletivo para Desenvolvedor Android na empresa Dynamox, esse teste foi bastante desafiador e divertido, exigindo do candidato conhecimentos e formas de solucionar problemas aparentemente simples mas que na prática podem demandar conhecimentos específicos de certos temas.

Estou empolgado com hipótese de poder trabalhar e colaborar com uma empresa de alta tecnologia e que tem VALORES como: Respeito, Ética, Empatia e Comprometimento.

Nos vemos na próxima fase , um abraço. 😃

About

Quiz de perguntas e respostas que consome a API da empresa Dynamox

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages