Skip to content

Instantly share code, notes, and snippets.

@aalvesjr
Last active February 15, 2017 21:27
Show Gist options
  • Save aalvesjr/ec2949b885f26b646133013a0fa6c9ed to your computer and use it in GitHub Desktop.
Save aalvesjr/ec2949b885f26b646133013a0fa6c9ed to your computer and use it in GitHub Desktop.
JobTest

Emprego Ligado teste para BackEnd Developer

Você está participando da rodada de contratação da Emprego Ligado, esse teste nos permite avaliar seu código e habilidades para propor arquiteturas e solucionar problemas.

Sem tempo para realizar testes técnicos?

Bem, você pode enviar o link de uma Pull Request com uma contribuição sua para qualquer projeto OpenSource ou algum projeto próprio que você acredita que demonstre o seu nível técnico e a qualidade do seu código. Projetos próprios sem cobertura de testes, sem documentação ou sem integração contínua não serão considerados

Mas caso você prefira/deseje fazer o nosso teste técnico, você pode utilizar qualquer lib/gem ou framework, mas quanto mais codigo seu for utilizado (leia-se não gerado automaticamentes por frameworks) melhor você poderá ser avaliado.

Pré requisitos

O seu teste deve ter um REAMDE com os passos necessários para:

  • Rodar o projeto;
  • Instalar as dependências (de preferência utilizando docker-compose);
  • Rodar os testes automatizados;

Tecnologia

  • Aceitaremos soluções escritas em Ruby ou Go, ou ambas;

Instruções

Crie um repositório no Gitlab, GitHub ou Bitbucket e nos envie o link para o email [email protected], não tem um limite para entregar o teste, faça no seu tempo, se antes de finalizar achar que tem o suficiente para avaliarmos seu trabalho, envie que avaliamos todas as submissões;

Requisitos

Você precisará criar duas aplicações:

  1. A primeira aplicação irá expor uma API seguindo os padrões REST para:
  • criar, ativar e listar os Jobs;
  • listar a porcentagem e número de Jobs ativos por categoria;
  1. A segunda aplicação deverá ser responsável por ler o arquivo "jobs.txt", extrair a informação referente aos jobs, e sincronizar os dados com a aplicação 1. Fica a seu critério escolher a maneira que as applicaçãoes irão se comunicar.

  2. Certifique-se de que a aplicação seja idempotente, para isso você pode considerar que o atributo partnerID de cada Job é sempre único durante a importação;

  3. Todo Job recem importado deve ser salvo no estado 'draft';

  4. A aplicação responsável por coletar os dados do arquivo deve atender as seguintes regras:

  • importar somente jobs onde a data em que irá expirar for maior do que a data da importação;
  • importar somente 80% do total de jobs listados no arquivo;

Endpoints

Os endpoints disponíveis na aplicação estão listado abaixo, e os classificados como Protected devem exigir uma autenticação, mas fica ao seu critério propor qualquer método utilizar.

Jobs

Name Method URL Protected
List GET /jobs
Create POST /jobs
Activate POST /jobs/{:id}/activate
Percentage GET /category/{:id}

Critério de avaliação:

  • Sua API deve conter os 3 endpoints listados acima
  • Sua API deve retornar JSON válidos em qualquer endpoint;
  • Seu projeto deve ter uma suíte de testes automatizados, quanto maior a cobertura melhor;
  • Não  necessário utilizar UI;
  • Qualidade da abstração da solução;
  • Estrutura do código, e qualidade dos testes unitários;
  • Projeto rodando dentro de um container;

Bonus points:

  • Ter configurado no projeto qualquer serviço de integração contínua;
  • Conseguir levantar toda a solução com um simples docker-compose up;
  • Utilizar message queue;
  • Suas respostas durante o Code Review
  • Seguir o guia de estilo padrão de mercado para a linguagem que você escolher usar
  • Um histórico do git (mesmo que breve) com mensagens claras e concisas.

#exemplo do jobs.txt partnerId|title|categoryId|ExpiresAt 1123|Vendedor|3|sex, 21 ago 2015 11:04:52 GMT 1245|Vendedor de cosméticos|7|ter, 28 fev 2017 21:00:00 GMT

@rafaeljesus
Copy link

Aqui talvez podemos pedir para ser uma rotina que roda de x tempos

Crie um script que vai ler o arquivo "jobs.txt"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment