

Seu próximo nível começa aqui
Com a Assinatura Ilimitada, você tem tudo que precisa para sua aprovação.
Com a Assinatura Ilimitada, você combina prática, teoria e método em uma única assinatura com tudo que você precisa para sua aprovação.
Um projeto em Java, dentro do paradigma da orientação por objeto, precisa definir uma estrutura base que descreva um modelo com atributos e comportamentos comuns para vários tipos de clientes do sistema bancário.
Essa estrutura é
um módulo externo sem atributos.
o modelo de um objeto executável.
uma variável do tipo primitivo.
uma função que cria listas.
uma classe que define o modelo.
Na programação orientada a objetos com a linguagem Java, a distinção entre membros de classe e membros de instância define como os recursos são compartilhados e acessados. Considerando as propriedades dos métodos, analise as afirmativas a seguir.
I. Métodos estáticos podem acessar variáveis de instância diretamente sem a necessidade de instanciar um objeto, desde que estejam no mesmo pacote.
II. Um método declarado como final em uma classe pai não pode ser sobrescrito pelas subclasses, garantindo a integridade do comportamento definido.
III. Métodos não estáticos possuem implicitamente a referência "this", que permite acessar o estado interno do objeto específico que invocou o método.
Está correto o que se afirma em:
II e III apenas.
I, II e III.
I apenas.
I e III apenas.
Considerando expressões lambda em Java, qual alternativa representa um Method Reference correto para imprimir os elementos de uma lista de strings?
lista.forEach(System.out::println);
lista.forEach(s -> System.out.println);
lista.forEach(s -> System.out.println(s));
lista.stream().map(s->s.toUpperCase())
.forEach(System.out.println);
Analise o seguinte programa escrito em Java conforme a especificação Java SE 11:

Considerando o comportamento do polimorfismo, qual será a saída produzida pela execução do programa?
A A
B B
B C
B B C
B B C C
O Java 8 representou uma das atualizações mais significativas da plataforma Java, introduzindo recursos de programação funcional como expressões lambda, a API de Streams, interfaces funcionais, a classe Optional e métodos default em interfaces. Esses recursos modernizaram a linguagem, permitindo um código mais conciso, expressivo e adequado ao processamento declarativo de coleções de dados.
Considere o seguinte trecho de código utilizando recursos do Java 8:

Considerando os recursos introduzidos pelo Java 8 e o comportamento padrão do código apresentado, sobre o código apresentado, assinale a afirmativa correta.
A saída no console será [AMANDA, ANA], pois o método filter seleciona apenas os nomes que começam com a letra "A", o método map converte cada nome para letras maiúsculas utilizando uma referência de método (method reference), e o método sorted ordena os elementos em ordem alfabética antes da coleta final.
A expressão nome -> nome.startsWith("A") passada ao método filter é uma classe anônima instanciada em tempo de compilação, pois o Java 8 não suporta funções como valores — toda expressão lambda é convertida em uma classe anônima convencional que implementa a interface Runnable.
O método map(String::toUpperCase) realiza a filtragem dos elementos da stream, removendo os nomes que já estão em letras maiúsculas e mantendo apenas os que possuem letras minúsculas, sem alterar o conteúdo dos elementos restantes.
A operação collect(Collectors.toList()) é uma operação intermediária que retorna uma nova stream contendo os elementos coletados, permitindo o encadeamento de operações adicionais de filter e map após a sua invocação.
O método stream() aplicado à lista cria uma cópia profunda (deep copy) de todos os elementos, de modo que qualquer modificação realizada durante o pipeline de operações altera permanentemente a lista original nomes.
Considere o programa Java a seguir, contido em um único arquivo Main.java.
Qual é a saída produzida pela execução desse programa?
15 B:5
0 B:5
10 B:5
O programa não compila, pois a anotação @Override em C é inválida: o método inicializar(int x) não está declarado na classe A.
10 C:15
Considere o código Java a seguir.
class Produto {
String nome;
double preco;
void exibir() {
System.out.println(nome + " - R$ " + preco);
}
}
public class Principal {
public static void main(String[] args) {
Produto p = new Produto();
p.nome = "Notebook";
p.preco = 3500.00;
p.exibir();
}
}Com base nos conceitos de Programação Orientada a Objetos, assinale a alternativa correta.
A variável p representa uma classe responsável por armazenar os atributos do produto.
O método exibir() é um atributo da classe Produto, utilizado para armazenar informações do objeto.
O objeto p é uma instância da classe Produto, contendo valores próprios para seus atributos.
Os atributos nome e preco pertencem exclusivamente ao objeto p, não fazendo parte da definição da classe.
A instrução new Produto() apenas declara a variável p, sem criar um objeto em memória.
Considere o seguinte trecho de código Java.
public class Produto {
private String nome;
private double preco;
public Produto(String nome, float preco) {
this.nome = nome;
this.preco = preco;
}
public double calcularDesconto(double percentual) {
double valorFinal = preco - (preco * percentual);
return valorFinal;
}
public static void main(String[] args) {
int percentual = 10;
Produto p = new Produto("Notebook", 3500.0f);
System.out.println(p.calcularDesconto(percentual /
100));
}
}Considerando os conceitos de variáveis, tipos de dados e Programação Orientada a Objetos em Java, assinale a alternativa correta.
O método calcularDesconto() retornará 3150,0, pois a divisão entre percentual e 100 é convertida automaticamente para double antes da chamada do método.
O código compila normalmente, porém o método imprimirá 3500,0, pois a expressão percentual / 100 realiza divisão inteira, produzindo o valor 0, que posteriormente é convertido para double.
O código apresenta erro de compilação porque o construtor recebe um parâmetro do tipo float, enquanto o atributo preco foi declarado como double.
O código apresenta erro de compilação porque um atributo declarado como private somente pode ser inicializado por métodos set, não sendo permitido atribuí-lo diretamente no construtor.
O método calcularDesconto() deveria retornar um valor do tipo float, pois o atributo utilizado nos cálculos foi inicializado a partir de um literal float.
Sobre o uso de polimorfismo, considere o trecho de código Java, que contém uma lacuna identificada por “”:

Para que o programa imprima exatamente “Ana:Aluno | Bruno:Professor”, qual das alternativas apresenta a melhor expressão para substituir a lacuna ?
p1.nome + ":" + p1.papel() + " | " + p2.nome + ":" + p2.papel()
p1.getNome() + ":" + p1.papel() + " | " + p2.getNome() + ":" + p2.papel()
p1.getNome() + ":" + p1.toString() + " | " + p2.getNome() + ":" + p2.toString()
p1.getNome() + ":" + Pessoa.papel() + " | " + p2.getNome() + ":" + Pessoa.papel()
((Aluno)p1).getNome() + ":" + ((Aluno)p1).papel() + " | " + ((Professor)p2).getNome() + ":" + ((Professor)p2).papel()
Um programador escreveu o seguinte programa em Java:
class XXX {
private int campo1;
protected char campo2;
public void procedure1() {
this.campo1 = 100;
this.campo2 = ‘X’;} }
class YYY extends XXX {
protected double campo3;
public int campo4;
public void procedure2() {
this.campo4 = 100;
this.campo3 =100; }}
public class Main {
public static void main(String[] args) {
YYY c = new YYY();
c.campo1 = 100;
c.campo2 = ‘x’;
c.campo4= 100;
c.campo3 =200; }}
Na execução, ocorreu um erro indicando a não-visibilidade do atributo:
XXX.campo1
XXX.campo2
YYY.campo3
YYY.campo4
Na linguagem Java, para declarar uma classe chamada CA que só pode ser herdada por CB, CC e CD, dentre as alternativas a seguir, deve-se declará-la como:
public sealed class CA permits CB, CC, CD
public final class CA permits CB, CC, CD
public class CA extended by CB, CC, CD
public final class CA extends CB, CC, CD
public class CA sealed CB, CC, CD
Durante o desenvolvimento de um framework surgiu a necessidade de invocar dinamicamente um método a partir de uma string que contém o nome e a classe do método. Um dos programadores com mais experiência sugeriu o uso do conceito de reflexão computacional. O framework em questão foi desenvolvido na linguagem Java, versão 25.
Assinale a alternativa CORRETA.
Java não implementa nativamente o conceito de reflexão computacional, mas é possível implantar manipulando diretamente o bytecode. Existem bibliotecas open source desenvolvidas com esse propósito, sendo uma delas a JavaReflect.
Apesar de o conceito de reflexão computacional existir na linguagem Java ele não pode ser utilizado para resolver o problema do enunciado.
A linguagem Java implementa o conceito de reflexão computacional por meio do pacote import java.lang.reflect.* e o problema do enunciado pode ser resolvido a partir desse conceito.
Não existe forma de implementar reflexão computacional na linguagem Java, porque esse conceito vai contra os princípios do uso de máquinas virtuais.
A linguagem Java foi concebida com forte ênfase em portabilidade, independência de plataforma e execução distribuída. Uma das características centrais da arquitetura Java consiste na possibilidade de executar aplicações compiladas em diferentes sistemas operacionais sem necessidade de recompilação, desde que exista uma Java Virtual Machine (JVM) compatível. Esse conceito é tradicionalmente associado ao princípio:
Write Once, Run Anywhere (WORA).
Compile Once, Deploy Locally (CODL).
Build Once, Execute Specifically (BOES).
Interpret Everywhere, Compile Nowhere (IECN).
Code Once, Rewrite Always (CORA).
Qual é a principal diferença conceitual entre uma interface e uma classe abstrata em Java, considerando suas capacidades e seus propósitos de design?
Interfaces podem ter construtores, enquanto classes abstratas não.
Classes abstratas podem implementar múltiplas interfaces, mas interfaces não podem estender múltiplas classes abstratas.
Interfaces definem um contrato de comportamento sem implementação de estado, enquanto classes abstratas podem ter estado (atributos) e implementações parciais.
Interfaces podem ter métodos estáticos e privados, mas classes abstratas não.
Não há diferença significativa, são apenas formas diferentes de alcançar o polimorfismo.
Analise o seguinte programa escrito em linguagem Java, conforme a especificação Java SE 11. Sobre o fluxo de execução com try-catch-finally e relançamento de exceções, assinale a alternativa que apresenta a saída produzida. Considere que o método main captura a exceção relançada, e que o bloco finally sempre é executado antes da propagação da exceção, conforme a Seção 11.3 da Java Language Specification.

B F A
B A F
F B A
B F
F A
A linguagem Java permite herança múltipla de classes, de modo que uma classe pode ser subclasse de outras duas classes diretamente.
Certo
Errado
Qual é a palavra reservada, na linguagem de programação Java, para indicar que um bloco de código será executado de forma segura, com recursos compartilhados em múltiplas threads?
strictfp.
throws.
protected.
synchronized.
transient.
Na linguagem Java, a anotação @Override é utilizada no contexto de herança e polimorfismo para auxiliar na verificação de métodos sobrescritos. Analise as afirmativas a seguir:
I.A anotação @Override faz com que o compilador verifique se o método realmente sobrescreve um método da superclasse ou interface.
II.Caso um método anotado com @Override não corresponda a nenhum método da superclasse ou interface, ocorrerá erro de compilação.
III.A anotação @Override altera o comportamento do método em tempo de execução, permitindo otimizações na JVM.
É correto o que se afirma em:
I, II e III.
III, apenas.
II e III, apenas.
I e II, apenas.
I, apenas.
Considere o seguinte código em Java:

Com base nos princípios da Programação Orientada a Objetos e no mecanismo de herança, analise as afirmativas a seguir:
I. A classe Cachorro herda o atributo nome da classe Animal e pode acessá-lo diretamente por ele ter sido declarado como protected.
II. A anotação @Override garante, em tempo de compilação, que o método emitirSom() da subclasse esteja sobrescrevendo corretamente um método da superclasse.
III. Caso o construtor da classe Cachorro não chamasse explicitamente super(nome), o código ainda compilariam normalmente, pois o construtor da superclasse é automaticamente herdado.
IV. A classe Cachorro especializa o comportamento da superclasse ao redefinir o método emitirSom(), caracterizando polimorfismo por sobrescrita.
Assinale a alternativa CORRETA:
Apenas I, II e IV estão corretas.
Apenas I e III estão corretas.
Apenas II e IV estão corretas.
Apenas I, II e III estão corretas.
I, II, III e IV estão corretas.
Na linguagem Java, a classe String é imutável, ou seja, uma vez criada, seu valor não pode ser alterado. Essa decisão possui implicações importantes no design da linguagem e na arquitetura da JVM. Nesse contexto, é correto afirmar que a principal razão arquitetural para a imutabilidade de String é:
Impedir completamente qualquer modificação interna da classe por mecanismos de reflexão.
Evitar o uso de padrões de projeto como Builder na manipulação de textos.
Garantir que seu valor não possa ser alterado após a criação, permitindo seu uso seguro em ambientes concorrentes e como chave em estruturas baseadas em hash.
Ter como principal objetivo aumentar o consumo de memória para melhorar o desempenho.
Permitir que a JVM execute cálculos matemáticos com maior precisão utilizando Strings.