Prática guiada: treine no que realmente quebra em produção
Cada desafio traz um cenário que existe de verdade numa org, a assinatura do método que você precisa entregar e as regras de aceite. Não tem passo a passo dizendo o que digitar: tem o problema, o critério e as dicas de onde pesquisar. O gabarito vem comentado, explicando cada decisão, e fica escondido até você querer ver.
Como usar: leia o cenário, escreva a classe na sua org de desenvolvimento e rode o código de teste que está no fim de cada desafio. Se travar, abra as dicas antes do gabarito. Travar e descobrir o que pesquisar é parte do treino, e é exatamente essa parte que o mercado cobra.
Atualizar meio milhão de contas sem estourar o limite
Um update da base inteira estoura o heap e o limite de DML numa transação só. Você vai reescrever a classificação como Batch Apex, acumular o total entre lotes com Database.Stateful e garantir que rodar de novo não muda nada.
Salvar o lote quando um registro inválido derruba tudo
Uma conta sem nome no meio do lote derruba as outras 199 e desfaz a importação. Você vai gravar os válidos com Database.insert parcial e devolver o erro de cada linha que falhou, com índice e mensagem.
Descobrir por que o usuário não vê o registro
O registro existe, mas o usuário jura que sumiu. Você vai construir o diagnóstico que responde por que o acesso existe ou não, usando UserRecordAccess e a RowCause do compartilhamento, do OWD ao dono.
Somar 200 contas com uma única consulta
O código funciona na demonstração com três contas e morre em produção. Você vai entregar um método que resolve qualquer volume com um SOQL só, e que não esconde as contas sem resultado.
Filtro dinâmico sem abrir a porta para injection
A tela deixa o usuário escolher o campo e o valor da busca. Você vai fazer isso funcionar para qualquer campo do objeto sem permitir que alguém injete SOQL nem leia campo que não deveria.
O teste que realmente testa, não só cobre
Cobertura de 90% que passa mesmo com o código errado é fácil. Você vai escrever a classe de teste que fica vermelha quando a regra quebra, com @TestSetup, bulk de 200 e caminho negativo.
Uma task por venda, mesmo com o trigger rodando duas vezes
A automação atualiza o registro, o trigger reexecuta na mesma transação e a org duplica tarefas em silêncio. Você vai construir o handler que detecta a mudança real e nunca duplica, sem quebrar o lote de 201.
Avisar o ERP quando a venda fecha, sem sequestrar a transação
O callout no trigger trava metade das vendas com "You have uncommitted work pending". Você vai tirar a chamada da transação com Queueable, tratar timeout com retry e garantir idempotência para não duplicar o pedido.
Listar 5 mil registros sem travar o navegador
A tela funciona com trinta linhas e congela com cinco mil. Você vai paginar no servidor com Apex cacheable e cursor por Id, manter o estado entre as cargas e tratar o erro sem deixar a tela em branco.
Em breve: respeitar as permissões de campo na leitura e na escrita
Apex roda com acesso total por padrão e acaba lendo e gravando campo que o usuário nem deveria ver. O próximo desafio é respeitar o FLS de ponta a ponta, com USER_MODE e stripInaccessible, sem quebrar quando um campo é negado.