Prova de Conceito — Lógica de Programação

Desafio para candidatura de Desenvolvedor Júnior

Objetivo

Resolver problemas utilizando lógica de programação, clareza de raciocínio e organização de código.

Regras Gerais

Tempo Esperado

2 Dias.

Entrega

Enviar os seguintes itens:

O arquivo EXPLICACAO.md deve conter:
  • Como resolveu cada desafio.
  • Dificuldades encontradas.
  • Decisões tomadas.
  • Possíveis melhorias.
Desafio 1

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

Desafio 2

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

Desafio 3

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

Desafio 4

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

(
([)]
{]
Desafio 5

Relatório de Frequência

Dado um texto qualquer, retorne as 5 palavras mais frequentes.

Regras

Exemplo de entrada

"Hoje é um bom dia. Hoje o dia está bonito."

Saída esperada

[
  ("hoje", 2),
  ("dia", 2),
 ]
Desafio 6

Problema de Raciocínio

Você possui:

Explique como descobrir a moeda diferente. Não é necessário escrever código para este desafio.

Desafio 7

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

Observações

Diferenciais Opcionais

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.