A 4YouSee é uma empresa que fornece tecnologia de ponta para Digital Signage. Atendemos diversos clientes da área de publicidade e sinalização em geral como por exemplo cinemas, empresas de telefonia, varejo, etc…
O objetivo deste teste é resolver um problema real de um dos sistemas mantidos pela 4YouSee para o ramo de telefonia e varejo.
Esta solução é responsável por exibir preço dos planos vendidos junto aos aparelhos de telefone e a sua principal característica é a possibilidade de associar vários planos a um telefone e diferentes localidades do país.
Repositório: https://bitbucket.org/4yousee/avaliacao-desenvolvedor
O candidato deverá escrever um programa que receberá uma lista de planos(data.json) e deverá retornar a lista filtrada baseada nos critérios abaixo:
- O sistema só poderá exibir planos que tenham schedule.startDate válidos, ou seja, menor que a data atual.
- O sistema só poderá exibir 1 única vez planos que tenham os mesmos : name, localidade dando preferência quem possuir o schedule.startDate mais recente.
- Note que o campo localidade possui uma hierarquia (PAÍS -> ESTADO -> CIDADE). Esta hierarquia deverá ser respeitada, de maneira que a cidade terá maior prioridade que estado e país. O sistema só poderá exibir 1 única vez planos que tenham os mesmos : name dando preferência a hierarquia de localidades.
- Funcionalidade: atender todos os critérios de aceitação mencionados;
- Organização do projeto: diretórios, arquivos, classes, etc ...;
- Legibilidade do código;
- Adoção de boas práticas de desenvolvimento de software;
- Criatividade: O escopo deste teste é bem aberto, do ponto de vista de requisitos técnicos, propositalmente, para que você possa demonstrar sua criatividade e propor a melhor solução que atenda a soliictação dentro do prazo disponibilizado :)
- Propor melhorias no arquivo JSON disponibilizado.
- É permitido Pesquisar no Google;
- É permitido perguntar sobre as regras de negócio para o entrevistador;
- Não é permitido utilizar bibliotecas de terceiros. Ex.: lodash, jquery, angular, laravel, etc. Queremos ver a sua capacidade de resolver um problema de lógica de programação.
- Não é permitido fazer perguntas técnicas para o entrevistador.
- Não é necessário criar o layout da aplicação no exemplo. O importante para a avaliação é conseguir realizar o filtro proposto. Se for possível fazer o layout durante o tempo do teste será um diferencial.
- Acreditamos que o teste acima possa ser concluído em menos de 1h30min;