Como passar em uma entrevista de Java: principais perguntas de A a Z
A entrevista para a posição de desenvolvedor Java não é apenas uma verificação de conhecimento de sintaxe. O empregador avalia sua compreensão dos princípios fundamentais, sua capacidade de escrever código limpo e sua habilidade de resolver problemas reais. Neste artigo, reunimos as principais perguntas sobre Java que cobrem todos os tópicos-chave: desde os fundamentos de POO até multithreading e frameworks. O artigo é adequado tanto para desenvolvedores Junior quanto para Middle.
Dividimos o material em blocos lógicos para que você possa se preparar sistematicamente. Cada pergunta é acompanhada por uma resposta breve e um exemplo de código em Java. Prepare-se para a entrevista com a PythonLib!
1. Fundamentos de Java e POO (Programação Orientada a Objetos)
1.1. Quais princípios de POO são implementados em Java?
Java suporta quatro princípios principais de POO: herança (extends/implements), polimorfismo (sobrecarga e sobrescrita de métodos), encapsulamento (campos private + getters/setters) e abstração (classe abstrata/interface).
// Exemplo de encapsulamentopublic class User { private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }}1.2. Qual a diferença entre classe abstrata e interface?
Até Java 8: uma classe abstrata pode conter métodos implementados e campos, uma interface — apenas métodos abstratos e constantes. Após Java 8, interfaces passaram a ter métodos default e static. A diferença chave: uma classe pode implementar várias interfaces, mas herdar apenas uma classe abstrata.
1.3. O que é sobrecarga e sobrescrita de métodos?
- Sobrecarga (overloading): métodos com o mesmo nome, mas parâmetros diferentes (compilação).
- Sobrescrita (overriding): a classe filha altera a implementação do método da classe pai (runtime).
// Overloadingclass Calculator { int sum(int a, int b) { return a + b; } double sum(double a, double b) { return a + b; }}
// Overridingclass Animal { void sound() { System.out.println("Some sound"); }}class Dog extends Animal { @Override void sound() { System.out.println("Bark"); }}2. Java Collections Framework
2.1. Cite as principais implementações de List, Set e Map.
- List: ArrayList (acesso rápido por índice), LinkedList (inserção/remoção rápida).
- Set: HashSet (baseado em HashMap, não garante ordem), TreeSet (ordenado), LinkedHashSet (mantém ordem de inserção).
- Map: HashMap (acesso rápido, chaves null), TreeMap (ordenação por chave), LinkedHashMap (ordem de inserção).
2.2. Como funciona o HashMap?
HashMap usa um array de buckets e uma função hash. Ao inserir uma chave, seu hashCode é calculado e, em seguida, o índice do bucket é determinado. Se o bucket já contém elementos (colisão), uma lista encadeada ou árvore rubro-negra é usada (se houver mais de 8 elementos). Por padrão, a capacidade inicial é 16 e o fator de carga é 0,75.
Map<String, Integer> map = new HashMap<>();map.put("Java", 1);map.put("Python", 2);System.out.println(map.get("Java")); // 12.3. Qual a diferença entre ArrayList e LinkedList?
ArrayList é baseado em um array dinâmico, LinkedList em uma lista duplamente encadeada. ArrayList é mais rápido no acesso por índice (O(1) vs O(n)), mas mais lento na inserção/remoção no meio (O(n) vs O(1)). LinkedList requer mais memória devido ao armazenamento de referências.
3. Multithreading e Concorrência
3.1. Quais são as formas de criar threads em Java?
- Herdar da classe
Threade sobrescrever o métodorun(). - Implementar a interface
Runnablee passar a instância para um objetoThread. - Usar
ExecutorServicedo framework java.util.concurrent para gerenciar pools de threads.