Skip to content

Instantly share code, notes, and snippets.

@patrickporto
Last active March 31, 2019 00:33
Show Gist options
  • Save patrickporto/94586fb89e3972089956cc3d5c8b9354 to your computer and use it in GitHub Desktop.
Save patrickporto/94586fb89e3972089956cc3d5c8b9354 to your computer and use it in GitHub Desktop.
Este é um desafio adequado para Desenvolvedor Back-End Júnior da área de Banking.

Manipulação de Dinheiro

O Sistema Financeiro precisa representar valores monetários. A idéia básica é ter uma estrutura de dados que permita realizar operações financeiras com dinheiro dentro de uma mesma moeda. Essas operações financeiras precisam ser seguras e devem interromper a execução do programa em caso de erros críticos.

Sobre as operações financeiras que serão realizadas no sistema, é correto afirmar que os valores monetários devem suportar as seguintes operaçoes:

  • O sistema realizará split de transações financeiras, então deve ser possível realizar a operação de rateio de valores monetários entre diferentes indivíduos.

  • O sistema permite realizar câmbio então os valores monetários possuem uma operação para conversão de moeda.

  • O sistema precisa estar em compliance com as organizações internacionais, então é desejável estar em conformidade com a ISO 4217.

Requisitos Técnicos

  • O desafio deve ser feito na linguagem Elixir.
  • Docker é um diferencial.

Critérios de Avaliação

O desafio será avaliado através de cinco critérios.

Entrega

  • O código possui algum controle de dependências?
  • O resultado final está completo para ser executado?
  • O resultado final atende ao que se propõe fazer?
  • O resultado final atende totalmente aos requisitos propostos?

Boas Práticas

  • O código está de acordo com o guia de estilo do Elixir?
  • O código está bem estruturado?
  • O código está fluente na linguagem?
  • O código faz o uso correto de Design Patterns?

Documentação

  • O código foi entregue com um arquivo de README claro de como se guiar?
  • O código possui comentários pertinentes?
  • O código está em algum controle de versão?
  • Os commits são pequenos e consistentes?
  • As mensagens de commit são claras?

Código Limpo

  • O código possibilita expansão para novas funcionalidades?
  • O código é Don't Repeat Yourself?
  • O código é fácil de compreender?

Controle de Qualidade

  • O código possui configuração de lint?
  • O código possui testes unitários?
  • O código possui teste de cobertura?
  • O código está em Integração Contínua?

Material de Estudo

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