Pergunta de entrevista para Desenvolvedor Java

Como você usa records, tipos sealed e pattern matching no Java moderno?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

Records são carregadores imutáveis e transparentes: você declara os componentes e ganha construtor canônico, acessores, equals, hashCode e toString. Interfaces sealed restringem quais tipos podem implementá las, então um switch sobre esses tipos pode ter exaustividade checada em tempo de compilação, sem branch default. Record patterns então permitem desestruturar dentro do switch, o que transforma uma cadeia de instanceof com cast em uma única instrução legível.

Por que os entrevistadores perguntam isso

Isso data o seu conhecimento de Java na hora e mostra se você modela dados de propósito. O entrevistador quer ouvir que sealed mais records te dá tipos algébricos de dados, que switches exaustivos transformam um subtipo novo em erro de compilação em vez de surpresa em runtime, e que um record não é só uma classe mais curta: é uma afirmação de que o valor é um agregado transparente.

Como estruturar sua resposta

  • Defina cada recurso em uma linha e como eles se combinam.
  • Explique exaustividade e por que a ausência do default é o ponto.
  • Dê um exemplo real de modelagem, como um tipo de resultado ou evento.
  • Note os limites: records são imutáveis de forma rasa e não servem para entidades.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Eu uso os três juntos. Uma interface sealed declara o conjunto fechado de casos, cada caso é um record com seus próprios componentes, e aí um switch com record patterns trata todos. Então um resultado de pagamento vira uma interface sealed com os records Approved, Declined e Pending, e o switch desestrutura cada um direto nos seus campos. O compilador força a exaustividade, e esse é o benefício real: quando alguém adiciona um quarto caso, todo switch que trata o tipo deixa de compilar em vez de cair silenciosamente num branch default e fazer a coisa errada. Records também me deram equals e hashCode corretos de graça, e um construtor compacto é um lugar natural para validar, então um valor não pode ser negativo em nenhuma instância que exista. As ressalvas que eu cito são que um record é imutável apenas de forma rasa, então um record que guarda uma lista ainda pode ser mutado por meio dessa lista a menos que eu copie no construtor, e que eles são um encaixe ruim para entidades JPA, que querem construtor sem argumentos e estado mutável.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • Como você valida dentro de um record sem um construtor completo?
  • Quando você ainda escreveria uma classe comum em vez de um record?
  • O que uma hierarquia sealed te dá que um enum não dá?

Mais perguntas para Desenvolvedor Java

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot