- Crie um fork desse repositório, faça os testes, responda as perguntas e depois submeta um pull request.
- Os testes envolvendo código devem ser feitos em C# ou Java/Kotlin (Android). Cada codificação deve estar em uma pasta com o nome que está entre perênteses nas questões. As questões teóricas devem ser respondidas em um pdf que também será adicionado ao GIT. O primeiro teste será pegar os códigos e dar um run. Tem que rodar de primeira.
- Como você se atualiza tecnicamente?
- Crie uma função para calcular o n-ésimo elemento da Sequência de Fibonacci (fibonacci).
- Qual solução é mais performática, iterativa ou recursiva? Por que?
- Opcional: Qual é o 5287º elemento da sequência?
- O que significa SOLID?
- O que são design patterns?
- Quais são os tipos de design patterns?
- Com quais você está familiarizado? Qual é a função deles?
- Opcional: Qual é sua opinião quanto ao uso de design patterns?
- Qual foi o último livro técnico que você leu? Quando foi isso?
- Observação: se já tivermos lido e você for chamado para uma entrevista, perguntas poderão ser feitas a respeito do mesmo.
- Cite 3 maneiras diferentes de implementar Dependency Inversion.
- O que são ORMs?
- Quais você conhece bem?
- Opcional: Cite pelo menos 2 vantagens e 2 desvantagens de seu uso.
- O que são microsserviços?
- Quais são suas vantagens e desvantagens?
- Com a seguinte representação de produto (crud):
{
"sku": 43264,
"name": "Batata frita Ruffles Cebola & Salsa",
"inventory": {
"quantity": 15,
"warehouses": [
{
"locality": "SP",
"quantity": 12,
"type": "ECOMMERCE"
},
{
"locality": "MOEMA",
"quantity": 3,
"type": "PHYSICAL_STORE"
}
]
},
"isMarketable": true
}
Crie endpoints para as seguintes ações:
- Criação de produto onde o payload será o json informado acima (exceto as propriedades isMarketable e inventory.quantity)
- Edição de produto por sku
- Recuperação de produto por sku
- Deleção de produto por sku
Requisitos:
- Toda vez que um produto for recuperado por sku deverá ser calculado a propriedade: inventory.quantity
- A propriedade inventory.quantity é a soma da quantity dos warehouses
- Toda vez que um produto for recuperado por sku deverá ser calculado a propriedade: isMarketable
- Um produto é marketable sempre que seu inventory.quantity for maior que 0
- Caso um produto já existente em memória tente ser criado com o mesmo sku uma exceção deverá ser lançada
- Dois produtos são considerados iguais se os seus skus forem iguais
- Ao atualizar um produto, o antigo deve ser sobrescrito com o que esta sendo enviado na requisição
- A requisição deve receber o sku e atualizar com o produto que tbm esta vindo na requisição