Skip to content

Send via PR your application for our job position

License

Notifications You must be signed in to change notification settings

Ofido/apply_for_jobs_daniel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

Avaliação de conhecimentos em Desenvolvimento de Software

Considere a seguinte necessidade:

Precisamos enviar uma senha de maneira segura para um cliente. Para isso, ao invés de encaminhá-la via E-mail, SMS, Slack, etc, foi dado como solução o desenvolvimento de um sistema com as seguintes funções:

1- Sistema gera senha aleatória baseada em políticas de complexidade (tipo de caracteres, números, letras, tamanho, etc);

  • Exemplo: o usuário ao clicar no botão "Gerar Senha" irá obter uma senha aleatória;

2- Usuário irá especificar quantas vezes a senha gerada poderá ser vista e qual o tempo que a senha ficará válida;

  • Exemplo: o usuário irá especificar que a senha possa ser vista apenas duas vezes pelo prazo de um dia;

3- O sistema irá gerar uma URL que dá acesso a visualização da senha, baseando-se nos critérios do item 02;

  • Exemplo: o usuário enviará a URL para que o cliente possa visualizar a senha;

4- Após atingir a quantidade de visualizações ou o tempo disponível, o sistema bloqueia/elimina a visualização da senha (expirado). A senha não deve ser armazenada após sua expiração

Design

1 - Monte um desenho com a arquitetura desse sistema, considerando todos os componentes e tecnologias necessárias para o seu correto funcionamento. Considere essa topologia utilizando, obrigatoriamente, provedores de nuvens públicas trabalhando com o conceito de serverless. Escolha a nuvem que tiver mais conforto em trabalhar (AWS, GCP, Azure, etc)

2 - Avalie quais controles de segurança são pertinentes para esse sistema, com o objetivo de protegê-lo ao máximo, evitando vazamento de dados (ex: considere o OWASP Top10). Questões de auditoria e logging são importantes também.

3 - Explique como atender cada uma das 4 funções elencadas acima (requisítos) e o racional de sua decisão. Ex: A senha aleatória será gerada no front-end por xyz, ou será gerada com uma função no backend por abc.

4 - Sinta-se livre para adicionar seus comentários de novas melhorias que você julgar desejável. A TOTVS estimula a criatividade e a liberdade de expressão!

Faça uma sucinta explicação sobre o racional do seu desenho.

Essa documentação pode ser entregue em um arquivo pdf ou como parte da documentação no repositório (Arquivos MarkDown com topologia no Draw.io, etc)

Implementação

Faça um Fork desse repositório, Crie uma branch com seu nome (ex: application/jose_silas_santos_pereira). Envie um PR nesse repositorio do GitHub contendo as implementações do projeto com base na arquitetura descrita que você desenvolveu de pelo menos um dos componentes do sistema (Queremos avaliar sua lógica de programação e estruturação do código. Não é necessário desenvolver todos os componentes).

Para testar as implementações de seu projeto antes de enviar, recomendamos o uso do free tier das nuvens públicas ou projetos que emulem localmente tais nuvens como o localstack (https://github.com/localstack/localstack).

About

Send via PR your application for our job position

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published