1
O que é uma classe em POO?
Uma interface entre o usuário e o sistema
Um tipo de banco de dados relacional
Uma função que realiza operações matemáticas
Um conjunto de dados e métodos encapsulados
Uma estrutura para armazenar listas em JavaScript
2
Qual a principal finalidade do construtor em uma classe?
Alterar métodos de classes herdadas
Criar atributos estáticos
Remover objetos da memória
Criar métodos sobrecarregados
Inicializar atributos de um objeto
3
O que é um objeto em POO?
Uma função encapsulada
Um módulo externo importado
Uma variável global de um programa
Um tipo de dado primitivo
Uma instância de uma classe
4
Em POO, o que significa encapsulamento?
Dividir uma classe em partes menores
Restringir o acesso direto aos atributos e métodos
Permitir herança múltipla
Armazenar dados em arrays multidimensionais
Criar novos métodos dentro de uma classe
5
O que define polimorfismo em Java?
Capacidade de uma classe derivada sobrescrever métodos da classe base
Atribuir múltiplas classes a um único objeto
Criar objetos de várias classes em um único programa
A utilização de construtores com múltiplos parâmetros
Todos os métodos serem públicos
6
Qual das opções é um exemplo de sobrecarga de métodos?
Criar um método com o mesmo nome em classes diferentes
Criar um método que não retorna valores
Criar dois métodos com o mesmo nome, mas com assinaturas diferentes
Utilizar métodos privados em uma classe
Usar o mesmo método em múltiplas interfaces
7
Para acessar um método estático de uma classe, usamos:
Uma instância da classe
O nome da classe diretamente
A palavra-chave this
A palavra-chave super
Um construtor vazio
8
Qual das opções representa um exemplo de herança em Java?
interface Aluno implements Pessoa
class Aluno extends Pessoa
abstract Aluno extends Pessoa
class Aluno implements Serializable
class Pessoa implements Aluno
9
O modificador protected em Java significa:
O atributo ou método é acessível por classes do mesmo pacote e classes
derivadas
O atributo ou método é acessível apenas pela própria classe
O atributo ou método é acessível globalmente
O atributo ou método não pode ser alterado
O atributo ou método é acessível somente por classes base
10
Qual é a palavra-chave usada para herdar uma classe em Java?
extends
inherits
super
parent
base
11
Um método emitirSom() é implementado em uma classe Animal e redefinido em Cachorro. O que isso representa?
Modularidade
Polimorfismo
Sobrecarga de métodos
Herança múltipla
Encapsulamento
12
Considere a classe Pessoa em Java. Qual declaração representa um construtor válido?
Pessoa() : nome("") {}
public Pessoa(String nome) {}
private void Pessoa() {}
static Pessoa() {}
public static Pessoa() {}
13
Uma classe Funcionario tem o método calcularSalario(). Uma classe Gerente herda Funcionario e adiciona um método bonificar(). Qual é a relação entre Funcionario e Gerente?
Polimorfismo
Herança
Encapsulamento
Composição
Associação
14
Uma classe abstrata FormaGeometrica tem um método abstrato calcularArea(). Qual das opções é verdadeira?
A classe não pode conter atributos
Apenas métodos estáticos podem ser definidos na classe
Classes filhas devem implementar calcularArea()
A classe pode ser instanciada diretamente
A classe não pode conter métodos concretos
15
Uma classe PagamentoOnline implementa a interface Pagavel, que tem o método processarPagamento(). Qual declaração é verdadeira?
PagamentoOnline deve implementar o método processarPagamento()
PagamentoOnline pode omitir a implementação de processarPagamento()
PagamentoOnline herda diretamente de Pagavel
A interface Pagavel não pode conter métodos abstratos
Interfaces não são permitidas em POO
16
Em Java, o método toString() é usado para:
Calcular o tamanho de uma string
Converter um objeto em uma string
Comparar dois objetos
Alterar a estrutura de classes herdadas
Inicializar atributos de uma classe
17
Por que utilizamos métodos getters e setters em vez de acessar diretamente os atributos de uma classe?
Para evitar a necessidade de construtores na classe
Para reduzir a complexidade do código da classe
Para facilitar o uso de atributos estáticos na classe
Para permitir controle sobre como os atributos são acessados e modificados
Para aumentar a performance do código ao acessar atributos
18
No sistema, você implementou uma classe base Produto e as subclasses Livro e Eletrônico. Qual vantagem o polimorfismo oferece nesse contexto?
Permitir tratar objetos de subclasses como objetos da classe base, simplificando o código
Aumentar a performance do código em tempo de execução
Reduzir o uso de memória em programas orientados a objetos
Tornar os atributos das subclasses acessíveis diretamente na classe base
Evitar a necessidade de construtores em subclasses
19
No Reino das Bibliotecas Encantadas, você é um programador responsável por criar um sistema mágico que exibe informações sobre os livros registrados na classe Livro. Para isso, você precisa sobrescrever o método toString() na classe para exibir o nome do livro e o preço. Qual das opções abaixo implementa corretamente a magia do método toString() na classe Livro?
@Override
public String toString() {
"Livro: " + getNome() + " - R$" + getPreco();
}
@Override
public void toString() {
return "Livro: " + getNome() + " - R$" + getPreco();
}
public String toString() {
return "Livro: " + this.nome + " - R$" + this.preco;
}
public void toString() {
return "Livro: " + getNome() + " - R$" + getPreco();
}
@Override
public String toString() {
return "Livro: " + this.getNome() + " - R$" + this.getPreco();
}
20
Você foi contratado para criar um sistema que registra os monstros de um jogo. Cada monstro tem um nome, força e vida. O sistema deve proteger esses atributos para que só possam ser acessados e alterados através de métodos. Qual das alternativas define corretamente a classe Monstro com os métodos get e set para encapsular os atributos?
public class Monstro {
public String nome;
public int forca;
public double vida;
public void setNome(String nome) {
this.nome = nome;
}
}
public class Monstro {
private String nome;
private int forca;
private double vida;
public void setNome(String n) {
nome = n;
}
public String getNome() {
return nome;
}
public void setForca(int f) {
forca = f;
}
public double getForca() {
return forca;
}
}
public class Monstro {
private String nome;
private int forca;
private double vida;
public void setNome() {
this.nome = "Monstro";
}
public int getForca() {
return forca;
}
}
public class Monstro {
private String nome;
private int forca;
private double vida;
public void setAtributos(String n, int f, double v) {
this.nome = n;
this.forca = f;
this.vida = v;
}
public String getAtributos() {
return "Nome: " + nome + ", Força: " + forca + ", Vida: " + vida;
}
}
public class Monstro {
private String nome;
private int forca;
private double vida;
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
public void setForca(int forca) {
this.forca = forca;
}
public int getForca() {
return forca;
}
public void setVida(double vida) {
this.vida = vida;
}
public double getVida() {
return vida;
}
}
21
Você precisa criar uma classe Personagem para um jogo. A classe deve ter um construtor que inicialize os atributos nome e energia. Qual das alternativas implementa corretamente o construtor da classe?
public class Personagem {
String nome;
int energia;
public Personagem() {
nome = "Sem Nome";
energia = 100;
}
}
public class Personagem {
String nome;
int energia;
public Personagem(String nome, int energia) {
this.nome = nome;
this.energia = energia;
}
}
public class Personagem {
String nome;
int energia;
public void inicializar(String nome, int energia) {
this.nome = nome;
this.energia = energia;
}
}
public class Personagem {
String nome;
int energia;
public void Personagem() {
this.nome = "Sem Nome";
this.energia = 100;
}
}
public class Personagem {
String nome;
int energia;
public void Personagem(String nome, int energia) {
this.nome = nome;
this.energia = energia;
}
}
22
Você é o programador-chefe do sistema que controla o Castelo dos Dragões. Para gerenciar os dragões cadastrados, você precisa conectar o sistema ao banco de dados dragao_db. O servidor do castelo está no endereço localhost, na porta 3306, e o usuário do banco é heroi com a senha espada123. Qual das opções conecta corretamente o sistema ao banco de dados para gerenciar os dragões?
public class ConexaoDragao {
public static Connection conectar() throws SQLException {
Connection conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/dragao_db", "heroi", "espada123");
return conn;
}
}
public class ConexaoDragao {
public static Connection conectar() throws SQLException {
Connection conn = DriverManager.getConnection
("jdbc:mysql://localhost:3306/dragao_db", "heroi", "espada");
return conn;
}
}
public class ConexaoDragao {
public static Connection conectar() throws SQLException {
Connection conn = DriverManager.getConnection
("jdbc:mysql//localhost/dragao_db", "heroi", "espada123");
return conn;
}
}
public class ConexaoDragao {
public static Connection conectar() throws SQLException {
Connection conn = DriverManager.getConnection ("jdbc:mysql://localhost/dragao_db", "heroi", "espada123");
return conn;
}
}
public class ConexaoDragao {
public static Connection conectar() {
Connection conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/dragao_db", "heroi", "espada123");
return conn;
}
}
23
No Reino dos Programadores, para que seu Eclipse IDE funcione corretamente com o Java Development Kit (JDK), você precisa configurar a variável de ambiente JAVA_HOME no sistema. Essa configuração é essencial para que o Eclipse saiba onde encontrar o JDK. Qual das opções a seguir configura corretamente a variável JAVA_HOME no sistema operacional?
Basta instalar o Eclipse na mesma pasta do JDK, e o Eclipse detectará
automaticamente o JDK
No Prompt de Comando, digite o comando:
set JAVA_HOME=C:\Arquivos de Programas\Eclipse\jdk
set PATH=%JAVA_HOME%\bin;%PATH%
No Prompt de Comando, digite o comando:
set JAVA_HOME=C:\Program Files\Java\jdk-XX
set PATH=%JAVA_HOME%\bin;%PATH%
Acesse o "Painel de Controle", procure "Configurações Avançadas do Sistema",
clique em "Variáveis de Ambiente" e crie a variável JAVA_HOME apontando para:
C:\Arquivos de Programas\Eclipse\jdk
Acesse o "Painel de Controle", procure "Configurações Avançadas do Sistema",
clique em "Variáveis de Ambiente" e crie a variável JAVA_HOME apontando para:
C:\Program Files\Java\jdk-XX
Depois, adicione ao Path a seguinte entrada:
%JAVA_HOME%\bin
24
No Reino da Programação, o Guardião das Classes precisa de sua ajuda para criar um sistema que organize e exiba os atributos de uma classe chamada Tesouro. Cada tesouro possui os seguintes atributos: nome, tipo e valor. A missão é implementar corretamente o método toString() para listar as informações do tesouro de forma organizada. Qual das opções abaixo implementa corretamente o método toString() na classe Tesouro?
@Override
public String toString() {
return "Tesouro encontrado: " + this.getNome() + " (" + this.getTipo() + ") - R$" +
this.getValor();
}
@Override
public String toString() {
return "Tesouro: " + nome + ", Tipo: " + tipo + ", Valor: R$" + valor;
}
@Override
public String toString() {
return "Tesouro:\n" +
"Nome: " + this.nome + "\n" +
"Tipo: " + this.tipo + "\n" +
"Valor: R$" + this.valor;
}
@Override
public String toString() {
return "Tesouro -> Nome: " + nome + "; Tipo: " + tipo + "; Valor: " + valor + "
moedas de ouro.";
}
public void toString() {
return "Tesouro: " + this.nome + ", Tipo: " + this.tipo + ", Valor: R$" + this.valor;
}
25
Você foi contratado pelo Reino dos Magos do Código para criar uma classe chamada Feitico, que deve ter um método chamado executarFeitico(). Esse método retornará uma mensagem com o nome do feitiço e a quantidade de mana necessária para lançá-lo. Qual das opções abaixo implementa corretamente o método executarFeitico()?
public class Feitico {
private String nome;
private int mana;
public void executarFeitico() {
System.out.println("Feitiço lançado!");
}
}
public class Feitico {
private String nome;
private int mana;
public void executarFeitico(String nome, int mana) {
System.out.println("Feitiço: " + nome + ", Mana necessária: " + mana + "
pontos");
}
}
public class Feitico {
private String nome;
private int mana;
public String executarFeitico() {
System.out.println("Feitiço: " + nome + ", Mana necessária: " + mana + "
pontos");
}
}
public class Feitico {
private String nome;
private int mana;
public void executarFeitico() {
return "Feitiço: " + nome + ", Mana: " + mana;
}
public class Feitico {
private String nome;
private int mana;
public String executarFeitico() {
return "Feitiço: " + nome + ", Mana necessária: " + mana + " pontos";
}
}
26
class Calculadora { public int somar(int a, int b) { return a + b; } public double somar(double a, double b) { return a + b; } } O que será impresso pelo seguinte trecho de código? Calculadora calc = new Calculadora(); System.out.println(calc.somar(5, 7)); System.out.println(calc.somar(5.0, 7.0));
12 e erro de compilação
12.0 e 12.0
12 e 12.0
Nenhuma saída
Erro de compilação em ambos os casos
27
Considere as classes e métodos abaixo: class Animal { public void fazerSom() { System.out.println("Som genérico de animal"); } } class Cachorro extends Animal { @Override public void fazerSom() { System.out.println("Latido"); } } Qual será a saída do seguinte código? Animal a = new Cachorro(); a.fazerSom();
"Latido"
Erro em tempo de execução
"Som genérico de animal"
Nenhuma saída
Erro de compilação
28
class Calculadora { public int somar(int a, int b) { return a + b; } public void somar(int a, int b) { System.out.println(a + b); } } Qual erro ocorrerá neste código?
Erro de compilação por retorno incompatível.
Funciona corretamente.
Exibe os resultados normalmente.
Erro em tempo de execução devido a conflitos.
Erro de compilação por ambiguidade nos métodos.
29
Qual das opções abaixo lista corretamente as vantagens de usar Java?
1. É uma linguagem compilada apenas para Windows.
2. Oferece suporte limitado à Orientação a Objetos.
3. Depende de um ambiente gráfico específico.
1. Só pode ser usada para desenvolvimento web.
2. Não é segura para aplicações críticas.
3. É de código fechado.
1. É uma linguagem interpretada, o que a torna mais lenta.
2. Não possui suporte à Orientação a Objetos.
3. Não é multiplataforma.
1. É uma linguagem multiplataforma graças à JVM (Java Virtual Machine).
2. Possui suporte completo à Orientação a Objetos.
3. É robusta, com gerenciamento automático de memória (Garbage Collection).
1. É uma linguagem de baixo nível focada apenas em hardware.
2. Requer acesso direto à memória.
3. Não possui bibliotecas padrão para aplicações modernas.
30
Qual o modificador de acesso padrão em Java, caso nenhum seja especificado?
protected
package-private
public
private
static
31
O que significa a palavra-chave final aplicada a uma classe?
A classe não pode conter métodos abstratos
Os atributos da classe não podem ser alterados
A classe não pode ter métodos sobrecarregados
A classe não pode ser instanciada
A classe não pode ser herdada
32
Qual é a principal diferença entre uma interface e uma classe abstrata em Java?
Classes abstratas podem ser instanciadas, enquanto interfaces não podem
Interfaces permitem múltipla herança, enquanto classes abstratas não
Interfaces possuem construtores, enquanto classes abstratas não possuem
Classes abstratas não permitem métodos concretos, enquanto interfaces
permitem
Interfaces não podem conter atributos, enquanto classes abstratas podem
33
Qual o papel do método main em um programa Java?
Servir como ponto de entrada para a execução do programa
Inicializar os atributos da classe
Gerenciar a memória alocada para os objetos
Controlar o fluxo de execução de métodos
Garantir que os métodos sejam chamados corretamente
34
Qual das opções é verdadeira sobre o gerenciamento de memória em Java?
Java utiliza alocação manual de memória
O programador deve liberar memória utilizando o comando free
O Garbage Collector é desativado por padrão
O Garbage Collector é responsável por liberar memória automaticamente
Java não possui gerenciamento automático de memória
35
O que acontece se nenhum construtor for definido em uma classe Java?
A classe só poderá ser instanciada por classes derivadas
Um construtor padrão vazio será automaticamente fornecido pelo compilador
A classe não pode ser instanciada
Um erro de compilação será gerado
A classe herda o construtor de sua classe base
36
Qual palavra-chave é usada para chamar o construtor da classe base em Java?
super
base
extends
this
parent
37
class Produto { private String nome; public Produto criarProduto(String nome) { this.nome = nome; return this; } } Qual o erro no código acima?
Um construtor não pode retornar um valor.
Nenhum erro; o código compila e executa.
O atributo nome precisa ser inicializado diretamente no construtor.
Não é possível usar this em métodos não estáticos.
O método criarProduto deveria ser estático.