Entrevistas – Desenvolvedor Java #0

Já participei de várias entrevistas sendo entrevistador e em algumas outras sendo entrevistado, aprovei e reprovei candidatos, assim como fui aprovado e reprovado. O momento da entrevista pode ser desafiador e meu objetivo com este post é te ajudar a se preparar para uma entrevista em uma série de posts com base na minha experiência, este será o número zero dando uma introdução e colocando perguntas que eu já ouvi e fiz durante entrevistas com candidatos a vagas de desenvolvedores java.

Se você realmente se dedica e, principalmente, confia em si mesmo, a conversa tende a fluir melhor durante a entrevista e mesmo que aconteça de você não ser aprovado, poderá ao menos saber dizer em quais pontos técnicos precisa evoluir ou se apenas a vaga não era para o seu perfil. Pelo menos comigo, a minha parte comportamental é mais difícil de reparar durante uma entrevista quando sou entrevistado, mas as vezes percebemos as reações dos entrevistadores quando reagimos a alguma questão e, como o corpo também fala, podemos ter alguns insights de o que aconteceu com base nisso.

Em todas as entrevistas que participei, ao entrevistar uma pessoa, eu queria avaliar suas habilidades técnicas para uma determinada vaga, seu potencial e disposição para resolver problemas, a capacidade de trabalhar em equipe, vontade de evoluir e diversos outros aspectos pessoais e profissionais.

Vou compartilhar uma lista com os temas e perguntas mais frequentes que já fiz durante entrevistas, pretendo explicar o motivo de cada pergunta e respondê-las durante essa série. Já adianto que nem todas as perguntas são técnicas e, se você leu o meu post sobre como conseguir um emprego, com certeza já sabe que os hard skills são os que menos me interessam em um candidato, mas isso não significa que não sejam importantes para determinadas vagas.

Talvez seja válido ressaltar que não faço todas as perguntas em uma entrevista e elas podem variar de acordo com o perfil desejado ou a stack que cada empresa precisa para a vaga, então eu tenho um pool de perguntas e vou criando outras durante a entrevista conforme a necessidade.

Vamos aos temas e perguntas.

Empresa

  • O que você sabe sobre a nossa empresa?
  • Você sabe para qual projeto/produto é essa vaga?
  • O que você acha de trabalhar em home office?

Agile

  • O que é metodologia ágil para você?
  • Tem experiência com Scrum, Kanban e XP? Qual é a diferença entre eles?
  • Qual é a cerimônia mais importante do Scrum na sua opinião?
  • O que é débito técnico? Como você lida com débitos técnicos?

Java SE

  • Para que servem os métodos equals e hashCode? Qual é o contrato entre eles?
  • Quais características diferenciam um Set de uma List?
  • Quando utilizar checked e unchecked Exceptions?
  • Como garantir a ordem de execução entre diferentes threads?

Orientação a Objetos

  • O que é uma classe coesa?
  • O que é encapsulamento?
  • O que é acoplamento?
  • Qual a diferença entre composição e agregação?
  • Quando você utiliza herança?
  • O que é polimorfismo?
  • Cite os princípios SOLID. Você aplica no dia a dia?
  • Você conhece Design Patterns? Costuma aplicar algum no dia a dia?
    • Qual a diferença entre Builder e Factory?
    • Quando usar
      • Strategy
      • Command
      • Chain of Responsibility
      • etc

Data

  • Como você analisaria um problema de performance em um relatório feito em um banco de dados relacional?
  • O que é NoSQL?
  • Como você decidiria qual banco de dados utilizar em um novo sistema?
  • Conhece alguma ferramenta de indexação de dados?

Revisão de Código

  • Você já revisou o código de alguém? Em que você presta atenção quando está revisando?
  • Na sua opinião, o que é código limpo?
  • Qual estratégia você utiliza para refatorar o seu código? E o código que um desenvolvedor desconhecido fez?

Spring

  • Qual é a diferença entre Service e Component?
  • Qual é o ciclo de vida padrão de um componente do Spring?
  • Qual é a diferença entre RestController e Controller?
  • Como funciona o Transactional do Spring Data JPA?

REST & HTTP

  • Quais verbos HTTP você conhece?
  • Qual a diferença entre PUT e PATCH?
  • Quais são as famílias de status de retorno?
    • Qual é a diferença semântica entre retornar um erro da família 500 e um da 400?

Testes

  • O que é BDD?
  • Você utiliza TDD? Por onde começa? Qual é a sua maior dificuldade?
  • Você considera importante fazer testes? Quais? Por que?
  • O que você utiliza para realizar testes nas suas aplicações pessoais?

Mensageria

  • Qual é a diferença entre tópico e fila?
  • Como você lida com erros em processos de negócio assíncronos?

Arquitetura

  • Qual é a diferença entre arquitetura de microsserviços e monolítica?
  • Como você estruturaria um novo sistema em termos de arquitetura?
  • O que é um sistema legado?

Microsserviços

  • Você conhece Microsservice Patterns? Costuma aplicar algum no dia a dia?
    • Quando usar
      • API Gateway
      • Saga
      • Database per Service
      • Shared Database
      • Circuit Breaker
      • API Composition
      • etc

Estudo / Atualização

  • Como você se mantém atualizado?

Feedback

  • O que você sabe sobre feedback?
  • Como você daria um feedback para o CEO da empresa? E para um aprendiz?
  • O que não deveria acontecer em uma sessão de feedback?
  • O que é um bom feedback?

Motivação

  • O que te desmotiva no trabalho?
  • Como você lida com as frustrações?
  • O que te motiva?
  • Você se preocupa com a motivação dos membros do seu time?

Conflito

  • O que faria você entrar em um conflito com um colega de trabalho? Como você resolveria?
  • Você já precisou intermediar algum conflito entre colegas de trabalho? Como resolveu?

A lista só vai crescendo a cada dia, mas aqui acredito que já dá pra ter uma boa ideia de como eu entrevisto desenvolvedores java e, como eu mencionei, nem sempre faço todas as perguntas e elas sempre podem variar de acordo com o contexto.

Lembre-se que em uma entrevista de emprego, a tomada de decisão é de dois lados e não apenas de um só, você escolhe a empresa tanto quanto ela te escolhe.

Gostou? Foi útil? Concorda ou discorda de algum ponto? Comenta ai e vamos aprender mais juntos.

Espero que te ajude 😉

17 comentários Adicione o seu

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s