O que pleno significa para entrevistadores

Prévia grátis 6 min de leitura

A pergunta que muda no quadro branco

Como júnior, você ouvia "o que é N+1, e como você resolve?" Como pleno, você ouve a mesma pergunta com uma cláusula a mais no fim. "Você tem uma página de índice que carrega um curso e cada uma das aulas dele. Quando você usa includes, quando aceitaria as consultas extras mesmo assim, e como descobriria em produção se errou?" A primeira pergunta testa se você já viu o conceito. A segunda testa se você consegue raciocinar sobre um sistema que não controla por completo, e se sabe checar a própria resposta depois que o código está no ar. Esse segundo formato é o assunto inteiro deste curso.

De "você conhece X" para "quando você usaria X, e o que quebra"

Uma entrevista júnior checa sobretudo se o seu modelo mental bate com o framework. Uma validação roda antes ou depois da chamada ao banco? Um redirect emite uma requisição nova? O includes evita N+1? Uma entrevista de pleno parte do princípio de que você já conhece essa mecânica; o curso de nível júnior "Perguntas de entrevista para Rails júnior" tratou dela, e este curso não repete. Ela passa o tempo no que acontece quando a mecânica deixa de ser a parte difícil. A parte difícil no pleno é escolher entre duas respostas corretas. Tentar de novo um job que falhou ou deixá-lo morrer. Pôr em cache uma consulta cara ou aceitar o custo da leitura. Envolver cinco operações numa transação ou em três menores. Acrescentar um índice ou reescrever a consulta. Cada uma dessas escolhas carrega um trade-off real, e um entrevistador quer ouvir você nomeá-lo em voz alta antes de chegar a uma resposta.

O que este curso espera que você já tenha

O curso de nível júnior "Perguntas de entrevista para Rails júnior" já tratou do ciclo de requisição, das validações do ActiveRecord, e de rotas REST e controllers. Também tratou de SQL e N+1 (inclusive includes, preload e strict_loading) e do básico de RSpec versus Minitest. Se algo disso parece frágil, aquele curso é o lugar certo antes deste. Este curso cita esses temas pelos termos exatos e passa direto por eles, contando que você já os domina.

As cinco áreas que uma entrevista de pleno sonda

Nos processos atuais para uma vaga Rails de pleno, as mesmas cinco áreas voltam sempre. Jobs em segundo plano, e tudo que dá errado quando o trabalho sai do ciclo da requisição. Cache, e os bugs específicos que o cache introduz. Transações e locks, quando mais de um processo toca a mesma linha. Segurança, quando você é a pessoa que deveria pegar uma vulnerabilidade antes dela ir para produção. E estratégia de testes, quando "passou" deixa de ser a única pergunta e "o que deveria ser testado aqui" vira parte do trabalho. Este curso dedica uma aula a cada uma das três primeiras e uma a cada uma de segurança e estratégia de testes. Ele fecha com uma simulação de entrevista completa que passa por todas, do jeito que uma entrevista real faz.

Trade-offs acima de acerto

Repare no formato de uma pergunta de pleno. Raramente ela tem uma única resposta certa, e o entrevistador costuma estar menos interessado no lado que você escolhe do que em você conseguir defendê-lo. "Isso deveria ser um job em segundo plano?" tem uma resposta real, e ela depende de três coisas. O trabalho é lento? Ele pode falhar de forma independente da requisição? O usuário precisa ver o resultado na hora? Uma boa resposta diz as três coisas em voz alta antes de escolher um lado, em vez de recitar "sempre jogue para segundo plano" como regra.

Um exemplo concreto: o mesmo bug, duas profundidades de resposta

Pegue um único relato de bug: "usuários relatam conclusões de aula duplicadas". Uma resposta júnior nomeia a correção: acrescentar uma validação de unicidade em lesson_id com escopo em user_id. Uma resposta de pleno continua. Essa validação roda um SELECT antes do INSERT, então duas requisições com poucos milissegundos de diferença podem passar as duas pela checagem antes de qualquer uma inserir. A validação sozinha não fecha a brecha sob concorrência real. A resposta de pleno acrescenta um índice único no nível do banco por trás da validação. Ela também nomeia a exceção que o segundo insert concorrente levanta quando esse índice existe: ActiveRecord::RecordNotUnique. A aula 4 percorre esse exemplo com o código desta própria aplicação. É uma ilustração limpa da distância entre "eu conheço o termo" e "eu sei onde o termo para de me proteger".

A camada Brasil: expectativas de pleno e entrevistas em inglês

"Pleno" tem um peso um pouco diferente dependendo da empresa. Uma empresa brasileira costuma mapeá-lo direto para anos de experiência e escopo de responsabilidade. Uma empresa remota global, que mede você contra "mid-level" ou "intermediate", pode esperar a mesma profundidade em inglês, ao vivo, sem chance de ensaiar a frase. Praticar essas respostas em voz alta em inglês, e não só lendo, vale o esforço extra se uma vaga remota global está na sua lista.

Como usar as próximas seis aulas

Cada uma das próximas aulas tem o mesmo formato. Primeiro, o que o entrevistador está sondando por baixo da pergunta. Depois, de três a cinco perguntas concretas, com o que uma boa resposta contém. Depois, os erros clássicos que entregam uma resposta rasa. Por último, um exemplo de código real de uma base Rails em produção, em vez de um trecho de brinquedo. Um entrevistador de pleno distingue uma resposta decorada de um post de blog de uma resposta apoiada em código sobre o qual você raciocinou.

Para onde este curso vai

A aula 2 trata de jobs em segundo plano: tentativas, idempotência, e o trade-off entre Solid Queue e Sidekiq. Ela também trata da corrida entre uma transação do banco e um job que é enfileirado antes dela commitar. A aula 3 trata de cache e desempenho: cache de baixo nível, cache de fragmento e Russian doll, e a disciplina de medir antes de otimizar. A aula 4 trata de transações, locks e integridade de dados: o que desfaz uma transação, lock pessimista versus otimista, e por que um índice único ainda importa por trás de uma validação de unicidade. As aulas 5, 6 e 7 fecham o curso: "Perguntas de segurança que todo pleno recebe", "Perguntas de estratégia de testes" e "Simulação pleno: juntando tudo", que passa pelas cinco áreas do jeito que uma entrevista real faz.

Aula 1 de 7 · grátis

Continue com a aula 2

Perguntas sobre jobs em background e assíncrono

Trata de retry_on, discard_on, jobs idempotentes, passagem de ids, a corrida antes do commit e Solid Queue versus Sidekiq.

Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.

Digite para buscar...