tema
Orientação a objetos
Entrevistas de OO cobram menos definição de cor e mais julgamento: quando herança ajuda e quando ela te prende, o que cada letra de SOLID evita na prática, e por que 'programar para a interface' facilita testar e trocar implementação. Respostas fortes usam um exemplo concreto de código que ficou ruim e como o princípio teria evitado.
Simuladores de Orientação a objetos
Principais perguntas de Orientação a objetos
ver todas →Herança x composição: quando cada uma
Herança = 'é um', acoplada e fixa em compile-time. Composição = 'tem um', trocável em runtime e testável. Prefira composição; herde só em subtipo real e estável.
MédioPlenoSOLID: o que cada princípio evita
SRP: um motivo pra mudar. OCP: estender sem editar. LSP: subtipo substitui sem surpresa. ISP: interface pequena. DIP: dependa de abstração.
MédioPlenoO que polimorfismo resolve na prática
Mesma chamada, comportamento por tipo. Elimina switch(tipo) repetido: tipo novo = classe nova, sem editar os chamadores.
FácilJúniorEncapsulamento não é 'ter getter e setter pra tudo'
Encapsular = esconder estado e expor operações que preservam invariantes. Getter/setter pra tudo vira objeto anêmico sem garantia de consistência.
MédioPlenoInjeção de dependência sem framework
Receber dependências de fora (construtor) em vez de fazer `new` dentro. Teste injeta um fake; container só automatiza quando o grafo cresce.
DifícilSêniorAbstração que vaza (leaky abstraction)
Vaza quando você precisa entender o que ela esconde pra usá-la direito (ORM e N+1, FS de rede e latência). Toda abstração não-trivial vaza; a boa vaza raro e de forma previsível.
MédioPlenoLei de Demeter e o `a.getB().getC().fazer()`
Só fale com vizinhos diretos (this, parâmetros, campos, objetos que você cria). A cadeia longa acopla a três estruturas internas; exponha `pedido.getCidadeDeEntrega()` no lugar.
MédioPlenoCenário: Quadrado herda de Retângulo
Cliente que espera Retangulo assume que setLargura não mexe na altura. Quadrado precisa mexer pra continuar quadrado → quebra o contrato. 'É um' no português não garante substituibilidade.
DifícilSêniorObjetos imutáveis: o que ganham e o que custam
Ganho: thread-safe sem lock, chave de mapa segura, mais fácil de raciocinar, invariante checado uma vez. Custo: alocação/GC por 'mudança', mais boilerplate. Value objects imutáveis; entidades podem mutar.
MédioPlenoInterface x classe abstrata
Interface: contrato sem estado, um tipo implementa várias — capacidades ortogonais. Classe abstrata: implementação + estado comum a subclasses relacionadas, herança única. Contrato → interface; código comum de uma família → abstrata.
MédioPlenoModelo de domínio anêmico
Classes de domínio só com dados+getters/setters e toda a lógica em serviços externos. Antipadrão porque separa regra do dado que ela protege — objeto fica em estado inválido, regra duplica.
DifícilSêniorCenário: refatorar uma hierarquia que explodiu
Herança só dá uma dimensão → 2^N classes pra N capacidades. Composição: Personagem tem componentes (movimento, ataque, habilidades) combináveis em runtime. Padrão Strategy / Entity-Component.
MédioPleno"Tell, don't ask"
Diga o que quer que aconteça (`conta.sacar(v)`) em vez de perguntar o estado e decidir fora (`if getSaldo >= v ...`). Mantém a regra junto do dado; consulta pra exibir ainda é ok.
MédioPleno
Perguntas frequentes
O que os entrevistadores mais avaliam em orientação a objetos?
Entrevistas de OO cobram menos definição de cor e mais julgamento: quando herança ajuda e quando ela te prende, o que cada letra de SOLID evita na prática, e por que 'programar para a interface' facilita testar e trocar implementação. Respostas fortes usam um exemplo concreto de código que ficou ruim e como o princípio teria evitado.
Quanto tempo leva pra treinar orientação a objetos até me sentir pronto?
Depende do seu ponto de partida, mas a maioria sente diferença depois de 2-3 simulações completas com revisão das perguntas erradas — é aí que os padrões que se repetem em entrevista real ficam visíveis.