Objetivo
Resolver problemas utilizando lógica de programação, clareza de raciocínio e organização de código.
Regras Gerais
- Você deve escolher e resolver apenas 3 desafios entre todos os desafios disponíveis nesta página.
- Informe claramente no arquivo
EXPLICACAO.mdquais foram os 3 desafios escolhidos. - Você pode utilizar a linguagem de programação de sua preferência.
- É permitido consultar documentação oficial, Google e fóruns técnicos.
- O foco da avaliação é resolução de problemas, não framework, interface ou arquitetura avançada.
- O código deve ser legível, organizado e simples de executar.
Tempo Esperado
2 Dias.
Entrega
Enviar os seguintes itens:
- Código-fonte dos desafios resolvidos.
- Instruções para execução.
- Arquivo
EXPLICACAO.md.
- Como resolveu cada desafio.
- Dificuldades encontradas.
- Decisões tomadas.
- Possíveis melhorias.
Agrupamento de Palavras
Crie uma função que receba uma lista de palavras e agrupe aquelas que possuem exatamente as mesmas letras.
Exemplo de entrada
["roma", "amor", "carro", "mora", "barco", "corra"]
Saída esperada
[ ["roma", "amor", "mora"], ["carro", "corra"], ["barco"] ]
Regras
- Não utilizar bibliotecas prontas para agrupamento.
- A solução deve funcionar para listas grandes.
Controle de Sequência
Dada uma lista de números inteiros, encontre a maior sequência crescente consecutiva.
Exemplo de entrada
[1, 9, 3, 10, 4, 20, 2]
Saída esperada
[1, 2, 3, 4]
Regras
- A solução deve possuir boa performance.
- Evite ordenar a lista inteira sem necessidade.
Simulação de Fila
Implemente uma fila simples de atendimento.
Comandos aceitos
ENTRAR nome ATENDER PROXIMO FIM
Exemplo de entrada
ENTRAR Maria ENTRAR João PROXIMO ATENDER PROXIMO FIM
Saída esperada
Maria João
Regras
- Não utilizar estruturas prontas específicas de fila da linguagem.
- Tratar casos inválidos.
Validação de Expressão
Crie uma função que valide se uma expressão possui parênteses, colchetes e chaves corretamente fechados.
Exemplos válidos
()
([]){}
{[()]}
Exemplos inválidos
(
([)]
{]
Relatório de Frequência
Dado um texto qualquer, retorne as 5 palavras mais frequentes.
Regras
- Remover pontuação.
- Ignorar diferença entre maiúsculas e minúsculas.
- Não utilizar bibliotecas externas de NLP.
- O código deve funcionar com textos grandes.
Exemplo de entrada
"Hoje é um bom dia. Hoje o dia está bonito."
Saída esperada
[
("hoje", 2),
("dia", 2),
]
Problema de Raciocínio
Você possui:
- 8 moedas.
- 1 delas possui peso diferente.
- Uma balança de dois lados.
- Apenas 2 pesagens.
Explique como descobrir a moeda diferente. Não é necessário escrever código para este desafio.
Refatoração
Analise o código abaixo e refatore da forma que considerar melhor:
function calc(a,b,c,t){
if(t==1){
return a+b+c
}else{
if(t==2){
return a*b*c
}else{
return 0
}
}
}
Explique
- Problemas encontrados.
- Melhorias aplicadas.
- Por que realizou as mudanças.
Observações
- Clareza vale mais que complexidade.
- Explique seu raciocínio.
- Evite soluções excessivamente sofisticadas.
- O código deve ser compreensível por outra pessoa.
Diferenciais Opcionais
- Testes automatizados.
- Análise de complexidade.
- Preocupação com performance.
- Tratamento claro de erros.
- Commits organizados.
Apresentação Técnica
Durante a apresentação técnica poderá ser solicitado explicar decisões tomadas, alterar parte da implementação, evoluir alguma solução ou justificar estruturas utilizadas.