• Stars
    star
    1,419
  • Rank 33,143 (Top 0.7 %)
  • Language
  • Created over 4 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Desafio técnico - Backend

Desafio Back-end PicPay

Primeiramente, obrigado pelo seu interesse em trabalhar na melhor plataforma de pagamentos do mundo! Abaixo você encontrará todos as informações necessárias para iniciar o seu teste.

Avisos antes de começar

  • Crie um repositório no seu GitHub sem citar nada relacionado ao PicPay.
  • Faça seus commits no seu repositório.
  • Envie o link do seu repositório para o email do recrutador responsável.
  • Você poderá consultar o Google, Stackoverflow ou algum projeto particular na sua máquina.
  • Dê uma olhada nos Materiais úteis.
  • Dê uma olhada em como será a entrevista.
  • Fique à vontade para perguntar qualquer dúvida aos recrutadores.
  • Fique tranquilo, respire, assim como você, também já passamos por essa etapa. Boa sorte! :)

Corpo do Email com o link do repositório do desafio

Seu Nome

Nome do recrutador

Link do repositório

Link do Linkedin

Sobre o ambiente da aplicação:

  • Escolha qualquer framework que se sinta confortável em trabalhar. Esse teste não faz nenhuma preferência, portanto decida por aquele com o qual estará mais seguro em apresentar e conversar com a gente na entrevista ;)

  • Você pode, inclusive, não optar por framework nenhum. Neste caso, recomendamos a implementação do serviço via script para diminuir a sobrecarga de criar um servidor web.

  • Ainda assim, se optar por um framework tente evitar usar muito métodos mágicos ou atalhos já prontos. Sabemos que essas facilidades aumentam a produtividade no dia-a-dia mas aqui queremos ver o seu código e a sua forma de resolver problemas.

  • Valorizamos uma boa estrutura de containeres criada por você.

Para o dia da entrevista técnica

Na data marcada pelo recrutador tenha sua aplicação rodando na sua máquina local para execução dos testes e para nos mostrar os pontos desenvolvidos e possíveis questionamentos. Faremos um code review junto contigo como se você já fosse do nosso time ❤️, você poderá explicar o que você pensou, como arquitetou e como pode evoluir o projeto.

Objetivo: PicPay Simplificado

Temos 2 tipos de usuários, os comuns e lojistas, ambos têm carteira com dinheiro e realizam transferências entre eles. Vamos nos atentar somente ao fluxo de transferência entre dois usuários.

Requisitos:

  • Para ambos tipos de usuário, precisamos do Nome Completo, CPF, e-mail e Senha. CPF/CNPJ e e-mails devem ser únicos no sistema. Sendo assim, seu sistema deve permitir apenas um cadastro com o mesmo CPF ou endereço de e-mail.

  • Usuários podem enviar dinheiro (efetuar transferência) para lojistas e entre usuários.

  • Lojistas só recebem transferências, não enviam dinheiro para ninguém.

  • Validar se o usuário tem saldo antes da transferência.

  • Antes de finalizar a transferência, deve-se consultar um serviço autorizador externo, use este mock para simular (https://run.mocky.io/v3/8fafdd68-a090-496f-8c9a-3442cf30dae6).

  • A operação de transferência deve ser uma transação (ou seja, revertida em qualquer caso de inconsistência) e o dinheiro deve voltar para a carteira do usuário que envia.

  • No recebimento de pagamento, o usuário ou lojista precisa receber notificação (envio de email, sms) enviada por um serviço de terceiro e eventualmente este serviço pode estar indisponível/instável. Use este mock para simular o envio (http://o4d9z.mocklab.io/notify).

  • Este serviço deve ser RESTFul.

Payload

Faça uma proposta ❤️ de payload, se preferir, temos uma exemplo aqui:

POST /transaction

{
    "value" : 100.00,
    "payer" : 4,
    "payee" : 15
}

Avaliação

Apresente sua solução utilizando o framework que você desejar, justificando a escolha. Atente-se a cumprir a maioria dos requisitos, pois você pode cumprir-los parcialmente e durante a avaliação vamos bater um papo a respeito do que faltou.

Teremos 2 partes da avaliação:

A correção objetiva será realizada através da utilização de um script de correção automatizada. Você pode rodar na sua máquina local ou usar outra ferramenta:

docker run -it --rm -v $(pwd):/project -w /project jakzal/phpqa phpmd app text cleancode,codesize,controversial,design,naming,unusedcode

A correção qualitativa será durante a entrevista e levará em conta os seguintes critérios:

O que será avaliado e valorizamos ❤️

  • Documentação
  • Se for para vaga sênior, foque bastante no desenho de arquitetura
  • Código limpo e organizado (nomenclatura, etc)
  • Conhecimento de padrões (PSRs, design patterns, SOLID)
  • Ser consistente e saber argumentar suas escolhas
  • Apresentar soluções que domina
  • Modelagem de Dados
  • Manutenibilidade do Código
  • Tratamento de erros
  • Cuidado com itens de segurança
  • Arquitetura (estruturar o pensamento antes de escrever)
  • Carinho em desacoplar componentes (outras camadas, service, repository)

De acordo com os critérios acima, iremos avaliar seu teste para avançarmos para a entrevista técnica. Caso não tenha atingido aceitavelmente o que estamos propondo acima, não iremos prosseguir com o processo.

O que NÃO será avaliado ⚠️

O que será um Diferencial

  • Uso de Docker
  • Testes de integração
  • Testes unitários
  • Uso de Design Patterns
  • Documentação
  • Proposta de melhoria na arquitetura

Materiais úteis

More Repositories

1

picpay-desafio-frontend

Desafio técnico - Front-end
TypeScript
188
star
2

version-checker-gradle-lint

Warning on new versions available even when using Kotlin-DSL plugin.
Kotlin
97
star
3

picpay-jr-devops-challenge

Desafio para vagas de DevOps jr
JavaScript
47
star
4

trabalhe-conosco-frontend-dev

Teste para candidatos ao time de frontend dev
30
star
5

trabalhe-conosco-backend-dev

Teste para candidatos ao time de backend dev
29
star
6

trabalhe-conosco-mobile-dev

Teste para candidatos ao time de mobile dev
28
star
7

interview-ios

Swift
27
star
8

software-engineer-challenge

27
star
9

ios-study-club

Repositório contendo as atividades do grupo de estudo da iOS Skill do @PicPay
Swift
13
star
10

picpay-docs-digital-payments

Documentação pública de pagamentos digitais
CSS
11
star
11

picpay-desafio-devops-observabilidade

Desafios para as vagas DevOps da Squad Observabilidade
10
star
12

software-engineer-observability-challenge

Shell
8
star
13

magento2

Receba pagamentos com PicPay em seu e-commerce Magento 2.x
PHP
7
star
14

sonserina-pay-php

PHP
5
star
15

magento1

Receba pagamentos com PicPay em seu e-commerce Magento 1.x
PHP
5
star
16

recruiter-backend-task-manager

TypeScript
3
star
17

picpay-dev-php-code-style

Estilo de código PHP para projetos do PicPay
Ruby
2
star
18

bitrise-step-scoped-gradle-runner

Python
2
star
19

gitpod-python-challenge

Base environment for Python Code Challenge
1
star
20

gitpod-golang-challenge

A repository designed to be used along with Gitpod in order for candidates to develop, test and submit their code with minimal overhead.
Go
1
star
21

mobile-tests-poc

Ruby
1
star