Desafio de vaga júnior: stack e critérios sem enrolação
Desafio bom ensina e seleciona. Desafio ruim só copia tutorial sob pressão.
Resposta direta
Desafios de vaga júnior funcionam quando a stack é explícita, o escopo cabe em tempo justo e os critérios (README, commits, UX mínima, API) são claros. Para o candidato, o exercício é portfólio; para a empresa, é sinal de execução — não de mistério.
Para a empresa
No material original, o ponto de partida não é teoria abstrata: é uma sequência concreta ligada a «Desafio de vaga júnior: o que avaliar: guia prático». Hoje é desafio de vaga aqui no canal da RocketSeat. Esse desafio é principalmente pra você que está querendo entrar na carreira e no mercado profissional como desenvolvedor júnior.
Obviamente uma das stacks mais utilizadas no mercado profissional, que é o Java Spring Boot. Se você gosta desse de conteúdo, não se esqueça de curtir este vídeo, de compartilhar em suas redes sociais e, claro, ativar o sino de notificação para que você receba mais vídeos como esse.
Para o candidato
O contexto importa porque a mesma ideia muda de preço conforme visto, renda, ferramenta ou fase do produto. Nós vamos usar Spring Boot mais Spring Web mais Spring Data JPA com banco de dados H2 em memória. A gente vai ter que ter um controller e um repositor.
A gente vai receber as entidades diretamente no corpo do JSON, usando request body e response entity. Aqui está pedindo para a gente popular com o command line runner. Na verdade, a gente vai fazer aqui testes já direto com o HTTP request da nossa IDE, tá certo?
O que mais pesa júnior
Em vez de colecionar slogans, trate o conteúdo como checklist operacional: o que fazer nesta semana, o que medir, o que descartar. Diferencial, a gente vai ter que ter um relacionamento one-to-many, que significa um cliente pode ter vários contatos, ? Então, isso aqui já vai resolver o básico desse desafio, tá certo? O Zendip points obrigatórios que a gente tem que ter, um post cliente para criar clientes, então sem o contato no body, ou seja, eu vou criar só o cliente para depois criar o contato, e ele vai me retornar o HTTP 201 com sucesso.
Nós temos um end point que é o get clientes, para listar todos os clientes, então a gente vai fazer isso. Nós temos uma opção de post, para postar o contato usando o interroga client id com interpolação, que isso aqui significa que a gente vai passar como request param, ? Ou então uma rota de post barra clientes barra id barra contatos, onde esse id é o id do cliente que a gente cadastrou neste post inicial.
Information gain
Ganho específico deste material (não genérico): Então a gente vai passar com um patch variable aqui. Beleza, e caso não existir o cliente, a gente vai retornar 404.
Erros comuns e trade-offs
Os erros mais caros aparecem quando você copia a estética do caso e ignora as restrições que tornaram o caso possível. Então linguagem Java, Maven Spring Boot 3.5.5, o group eu coloquei com.rocketcity e o artefato mini CRM eu vou usar o Java 17, que é o que eu tenho instalado aqui. A gente tem que sempre usar as dependências que está aqui no desafio, tá?
Na prática, isso vira rotina: Que no caso, a minha IDE de preferência é o IntelliJ. Então eu vou abrir com o IntelliJ e eu vou mandar buscar aquele projeto lá. Bom vamos lá fire open eu entro na minha pastinha download mini crm e do um open aqui e ele vai abrir o projetinho para nós perfeito deixa eu só fechar esse aqui que tava aberto vou abrir de novo Pronto.
Próximo passo acionável
Feche com uma ação única nas próximas 48 horas — pequena o bastante para executar, grande o bastante para gerar sinal. Eu abro o Source, Main Java Resources, tem aqui o Application.Properties da nossa solução. E para isso eu já deixei o script do H2 aqui separadinho Então eu vou copiar isso aqui para dentro da minha IDE E vocês podem ver as metatags que eu adicionei aqui Eu adicionei a URL Eu adicionei o drive class name O usuário padrão, é o SA que eles chamam aqui O que mais?
Na prática, isso vira rotina: Quando eu coloco a anotação arroba entity, vocês estão vendo que está dando um erro na classe, ? Então, significa que eu tenho que adicionar aqui os atributos que correspondem à chave primária da minha tabela. E eu vou usar aqui a estratégia de autoincremente no meu banco de dados, ou seja, o meu banco de dados é que vai autoincrementar para mim, autogerenciar para mim, tá certo?