Entrevista de Java: checklist que salvará sua carreira

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: por que o Java não perdoa improvisos

\n\n

Você enviou seu currículo, passou pela triagem de RH e, pronto — um convite para a entrevista técnica. Se você está lendo este artigo no pythonlib.ru, significa que está migrando do Python para o Java ou apenas montando sua "base de conhecimento". De qualquer forma — você está no caminho certo.

\n\n

Java não é uma linguagem onde se pode "passar" na base do carisma. O ecossistema corporativo exige compreensão clara: desde JMM (Java Memory Model) até como funciona o Garbage Collector. A entrevista de Java não é um exame, é um diálogo. Mas um diálogo onde sua resistência será testada.

\n\n

Neste artigo, reuni um checklist real: o que estudar, como responder e — o mais importante — como não passar vergonha no live-coding. Sem enrolação, apenas prática.

\n\n

1. Java Core: a base que você precisa saber de cor

\n\n

Vamos começar pelo básico. Sem Java Core, ninguém vai te ouvir. Aqui está a lista de tópicos que todo candidato deve saber:

\n\n

1.1. POO (Programação Orientada a Objetos)

\n

Você precisa saber explicar polimorfismo, herança, encapsulamento e abstração de forma simples. E com exemplos.

\n\n

Pergunta-armadilha: "Qual a diferença entre classe abstrata e interface?"

\n

Resposta correta: no Java 8+, interfaces ganharam métodos default, mas classes abstratas podem conter estado (atributos), enquanto interfaces não.

\n\n
// Exemplo: classe abstrata\nabstract class Animal {\n    protected String name;\n    abstract void makeSound();\n}\n\n// Interface com método default\ninterface Movable {\n    default void move() {\n        System.out.println("Moving...");\n    }\n}
\n\n

1.2. Coleções (Java Collections Framework)

\n

Isso é obrigatório. Saber HashMap, ArrayList, HashSet, TreeMap não é suficiente. É preciso entender:

\n
    \n
  • Como o HashMap funciona (array + lista encadeada + árvore rubro-negra desde o Java 8)
  • \n
  • A diferença entre iteradores fail-fast e fail-safe
  • \n
  • Quando usar LinkedList em vez de ArrayList (spoiler: quase nunca)
  • \n
\n\n

Dica: Na entrevista, podem pedir para você implementar seu próprio HashMap. Pratique com antecedência.

\n\n

1.3. Exceções (Exceptions)

\n

Checked vs Unchecked — clássico. Lembre-se: RuntimeException e seus subtipos são unchecked; todo o resto é checked. E nunca, ouça bem, nunca use catch (Exception e) {} — isso é um antipadrão.

\n\n

2. Concorrência: o tópico onde 80% dos candidatos falham

\n\n

Java é uma das poucas linguagens onde a concorrência é nativa. Na entrevista, certamente perguntarão sobre synchronized, volatile, AtomicInteger, Lock, Semaphore.

\n\n

2.1. A palavra-chave volatile

\n

Pergunta principal: "O volatile garante atomicidade?" Resposta: não. Ele garante apenas a visibilidade das alterações entre threads.

\n\n
public class VolatileExample {\n    private volatile boolean flag = true;\n\n    public void stop() {\n        flag = false; // Outra thread verá essa mudança imediatamente\n    }\n}
\n\n

2.2. Deadlock e como evitá-lo

\n

Podem pedir para você escrever um código que cause deadlock e, em seguida, corrigi-lo.

\n\n
// Deadlock clássico\npublic class DeadlockExample {\n    private final Object lock1 = new Object();\n    private final Object lock2 = new Object();\n\n    public void method1() {\n        synchronized (lock1) {\n            synchronized (lock2) { /* ... */ }\n        }\n    }\n\n    public void method2() {\n        synchronized (lock2) {\n            synchronized (lock1) { /* ... */ }\n        }\n    }\n}
\n\n

Solução: sempre adquirir os locks na mesma ordem ou usar tryLock() do pacote java.util.concurrent.locks.

\n\n

3. Spring Fram

Blogs

Book Recommendations