Contexto: Renda variável é uma modalidade de investimento em que os retornos não são fixos ou previsíveis, como ocorre na renda fixa. A principal característica desse tipo de investimento é a possibilidade de ganhos (ou perdas) conforme as oscilações do mercado. Ações, fundos imobiliários (FIIs) e ETFs são exemplos comuns. É sobre esse contexto que iremos fazer o teste técnico.
Glossário:
Ativo: Um ativo é qualquer item que tenha valor econômico e possa ser negociado. No mercado financeiro, ativos são títulos que representam participação (como ações) ou direitos sobre algo (como cotas de fundos). Ex: ITSA3, KDIF11.
Preço: O preço de um ativo é determinado pela lei da oferta e demanda no mercado. Se mais pessoas querem comprar do que vender, o preço sobe. Se há mais vendedores que compradores, o preço cai.
Bolsa de Valores: É o ambiente onde os ativos são negociados. No Brasil, a principal é a B3 (Brasil, Bolsa, Balcão).
Volatilidade: É a medida da variação de preços de um ativo. Alta volatilidade significa que os preços mudam bastante em curtos períodos.
Dividendos/JSP: Parte do lucro da empresa distribuído aos acionistas/cotistas. Um atrativo para quem investe em ações/fiis com foco em renda.
Preço Médio: Média dos preços das operações, subtraindo os dividendos.
P&L: Profit (Lucro) & Loss (Prejuízo), Lucro / Prejuízo do cliente, valor pago vs preço atual do mercado.
Tipo Operação: Compra e Venda
Corretagem: Valor pago a Corretora Itaú por intermediar a operação com a Clearing (B3)
O que é esperado no teste: Esse teste visa conhecer o potencial de cada um dos concorrentes, encontrar pistas, prestar atenção, prestar atenção nas histórias de negócios e técnicas, em qualidade, lógica, estudos extras (negócio), programação bem-feita, porém no nível de “dificuldade/performance” correto (não usar um canhão para matar uma formiga, nem um estilingue para enfrentar um leão), com bons testes e boa documentação. Não restrinja a criatividade somente ao enredo, queremos ver a criatividade de cada um. É permitido o uso de IAs para acelerar o desenvolvimento — no Itaú fazemos uso correto delas todos os dias.
Você está desenvolvendo um sistema para controle de investimentos. Modele as tabelas a seguir:
- Usuários (Id, Nome, Email, %Corretagem)
- Ativos (Id, Codigo, Nome)
- Operações (Id, UsuarioId, AtivoId, Quantidade, PrecoUnitario, TipoOperacao, Corretagem, DataHora)
- Cotação: (Id, AtivoId, PrecoUnitario, DataHora)
- Posição: (Id, IdUsuario, AtivoId, Quantidade, PrecoMedio, P&L)
Tarefa:
- Apresente o script SQL de criação das tabelas (Utilize Abreviações e snake_case).
- Justifique a escolha dos tipos de dados.
O sistema precisa consultar rapidamente todas as operações de um usuário em determinado ativo nos últimos 30 dias.
As cotações podem mudar em milésimos de segundos, e devem afetar em tempo real a Posição dos clientes, o P&L e o Preço Médio.
Tarefa:
- Proponha e justifique um ou mais índices para essa consulta.
- Escreva o SQL da consulta otimizada.
- Crie a estrutura para atualização da Posição, com base na cotação.
Crie uma aplicação em .Net Core em C# (o Front End fica ao critério do Dev, não precisa ser .Net, se quiser pode usar console, forms, etc...) que acesse os dados de operações de um usuário e calcule:
- Total investido por ativo
- Posição por papel de um investidor
- Posição global de um cliente com lucro ou prejuízo
- Total de corretagem por cliente
Tarefa:
- Crie a aplicação (sem dependências externas), utilizando boas práticas de separação de responsabilidade.
- Utilize async/await com Entity Framework ou Dapper.
Implemente um método que receba todas as compras de um ativo e calcule o preço médio ponderado de aquisição.
Tarefa:
- Considere diferentes quantidades e preços para compor o cálculo.
- O método deve tratar entradas inválidas.
Utilizando o método anterior, crie uma bateria de testes unitários com xUnit ou MSTest.
Tarefa:
- Testes positivos com valores esperados.
- Testes de erro (quantidade zero, listas vazias).
- Estrutura clara e isolada.
Explique o conceito de teste mutante e sua importância.
Tarefa:
- Dê um exemplo de mutação aplicada ao método de preço médio que faria um teste falhar.
Um microserviço externo envia cotações novas via Kafka.
Tarefa:
- Adicione um Worker Service .NET para consumir essa fila e salvar as cotações.
- Inclua estratégias de retry e idempotência.
Seu serviço de operações deve continuar funcionando mesmo que o serviço de cotações esteja indisponível.
Tarefa:
- Aplicar circuit breaker, fallback e observabilidade nesse cenário.
Com o crescimento do sistema, o volume de operações subiu para 1 milhão/dia.
Tarefa:
- Explique como aplicar auto-scaling horizontal no serviço.
- Compare estratégias de balanceamento de carga (round-robin vs latência).
Você precisa expor APIs REST:
- Permita informar um ativo e receber a última cotação.
- Consultar o preço médio por ativo para um usuário.
- Consultar a posição de um cliente.
- Ver o valor financeiro ganho pela corretora com as corretagens.
- Receber os Top 10 clientes com maiores posições, e os Top 10 clientes que mais pagaram corretagem.
Atributos:
- Crie um exemplo de endpoint RESTful (método, URL, parâmetros).
- Esboce a documentação em formato OpenAPI 3.0 (YAML ou JSON).
- API para consulta de cotações: https://b3api.vercel.app/
- Saiba + sobre RV com o Itaú em: https://www.itaucorretora.com.br/educacional/educacional.aspx
- Site B3: https://www.b3.com.br/pt_br/produtos-e-servicos/negociacao/renda-variavel/