Obrigado por demonstrar interesse em fazer parte do nosso time! Este desafio foi elaborado para avaliarmos suas habilidades como desenvolvedor backend, especialmente com foco em PHP.
- Crie um repositório no GitHub para o teste. Certifique-se de não mencionar o nome da Logcomex no repositório.
- Stack
- PHP:
- Laravel ou um script PHP puro
- Banco de dados relacional:
- MySQL ou PostgreSQL
- Banco de dados não relacional:
- Redis
- PHP:
- Fora as tecnologias mencionadas, você está livre para utilizar quaisquer outras ferramentas, bibliotecas ou frameworks que considere úteis.
- Caso tenha dúvidas, sinta-se à vontade para entrar em contato com o recrutador.
O desafio consiste em criar uma aplicação capaz de buscar dados na página da Wikipédia que contém a lista das maiores empresas do Brasil. O objetivo é filtrar as empresas pelo lucro, com base nos parâmetros enviados na requisição.
Sua aplicação deve implementar:
- Uma API que receba os seguintes parâmetros:
{ "rule": "greater", // ou "smaller", ou "between" "billions": 15, // valor de referência em bilhões "range": [10, 20] // somente para o caso "between" (opcional) }
- A API deve retornar as empresas que atendem ao critério fornecido, com a seguinte estrutura de resposta:
[ { "company_name": "Petrobras", "profit": "36.47", "rank": 1 }, { "company_name": "Vale", "profit": "15.98", "rank": 3 } ]
- "greater": Retornar empresas com lucro maior que o valor especificado.
- "smaller": Retornar empresas com lucro menor que o valor especificado.
- "between" (bônus): Retornar empresas com lucro dentro do intervalo especificado em "range".
- Todos os retornos em "profit" devem ser em bilhões. Por exemplo, a Cosan, que obteve lucro de 228 milhões, deve ser retornada como
0.228
bilhões. - Deve haver alguma estratégia que evite que vários requests sobrecarreguem a fonte ao mesmo tempo ou em um curto período de tempo.
- Os dados devem ser salvos em tabelas relacionais para guardar o histórico das informações.
- O HTML da captura deve ser salvo para servir como prova dos dados capturados.
- Documentação:
- Descreva como rodar o projeto (instalação, dependências, execução e exemplos de uso).
- Código Limpo e Organizado:
- Seguir padrões de código PHP (PSRs).
- Aplicar boas práticas de design (SOLID, design patterns, etc.).
- Modelagem de Dados:
- Escolha adequada de tipos de dados e estruturação.
- Tratamento de Erros:
- Validação de inputs e respostas adequadas em casos de erro.
- Testes Unitários:
- Cobertura mínima das principais funcionalidades.
- Implementar a funcionalidade "between". NAO É OBRIGATÓRIO
- Criar testes de integração.
- Adicionar logs para depuração.
- Utilizar containers Docker para simplificar a execução.
- Oferecer uma solução com foco em performance.
- Estruture bem sua solução antes de iniciar a codificação.
- Demonstre consistência em suas decisões e esteja preparado para justificá-las.
- Não se esqueça de tratar cenários inesperados, como mudanças na estrutura da página da Wikipédia ou valores não numéricos.
Boa sorte! Estamos ansiosos para ver sua solução e conhecer seu potencial!