Enquanto um contêiner é um processo, a imagem que ele utiliza é baseada em um documento executado como um pacote de sistemas de arquivo com todas as dependências necessárias para que ele possa ser executado, isso inclui bibliotecas, arquivos, recursos e pacotes. Além disso, outros elementos do Docker também são importantes, como registry e hub . Com base nas informações apresentadas, identifique se são (V) verdadeiras ou (F) falsas as afirmativas a seguir. I. ( ) Imagens são templates utilizados para a criação de contêineres e são construídas em camadas. II. ( ) O Docker Hub é o repositório oficial no qual as imagens são hospedadas e, também, é o local em que é realizado o controle de versões. III. ( ) Scripts não são compatíveis com a estrutura de docker , por isso as imagens devem ser criadas manualmente no Dockerfile. Assinale a alternativa que apresenta a sequência correta.
A arquitetura de microsserviços (MSA, do inglês, Microservice Architecture ) é um padrão para a construção de uma aplicação distribuída, sendo composta por um conjunto de serviços, cada um deles executando o seu próprio processo e explorando uma API, tendo sido desenvolvido de forma independente. Cada serviço está focado em fazer determinada tarefa de maneira excelente. Com relação á arquitetura de microsserviços), avalie as afirmativas a seguir. Na MSA, é necessário que todo o ecossistema seja testado. Ela aumenta o tráfego de mensagens trocadas entre os componentes de uma aplicação. Utilizar a MSA significa, automaticamente, melhorar a disponibilidade da aplicação. Aumenta-se a complexidade para adaptar novas tecnologias Está correto o que se afirma em:
Os microsserviços são independentes. Em geral, uma única equipe pequena de desenvolvedores é capaz de escrevê-los e mantê-los. Cada microsserviço é uma base de código separado, o qual pode ser gerenciado por uma equipe de desenvolvimento pequena. Uma equipe pode atualizar um microsserviço que já existe sem precisar recompilar e reimplantar o aplicativo inteiro. Em relação aos microsserviços, analise as afirmações a seguir. I. Os microsserviços são responsáveis por manter seus próprios dados, informações ou estado externo. Isso diverge do modelo tradicional que conhecemos, em que uma camada de dados separada lida com a persistência de dados. II. Os microsserviços estabelecem comunicação entre si por meio de APIs bem definidas, que dinamizam a conexão. Detalhes da implementação interna de cada microsserviço ficam ocultos para outros. III. Ao dimensionar-se os microsserviços é importante seguir boas práticas, segundo as quais: - o comportamento específico do domínio deve estar em um só lugar; de forma que se for necessário mudar um comportamento, não será necessário alterar múltiplos microsserviços. IV. Um aplicativo de microsserviços tem mais partes móveis que o aplicativo monolítico equivalente. Cada microsserviço é mais simples, mas o sistema como um todo é mais complexo. Está correto o que se afirma em:
Considerando um padrão como sendo uma forma particular em que alguma coisa/situação é realizada, organizada, ou acontece de forma repetitiva e semelhante, assinale a alternativa correta.
As arquiteturas de microsserviços tem como foco o desenvolvimento de aplicações com um pequeno número de serviços. Dentre as principais características destacam-se: I. A modularidade e a comunicação por meio de APIs. II. Os serviços são monolíticos. III. Todo o sistema composto por microsserviços precisa ser reiniciado quando um microsserviço é alterado. IV. Os serviços executam várias funções cada um, e crescem junto às mudanças de um sistema.
A programação orientada a objetos tem importantes características, dentre elas, há os modificadores de acesso. Quanto ao uso da palavra reservada “final”, analise as asserções a seguir e a relação proposta entre elas. I. A palavra-chave “final”, ou o modificador final, pode ser aplicada em classes, métodos e atributos. PORQUE II. Um método definido com o modificador final não pode ser sobrescrito em uma subclasse. Analisando essas asserções, é correto afirmar que :
De acordo com Félix (2016, p. 22), “[...] a função de uma classe abstrata é servir apenas como uma superclasse apropriada para ter os atributos comuns que subclasses precisam, organizando e simplificando o código do sistema. As classes abstratas auxiliam a organizar e dirigir os desenvolvedores nos métodos e atributos que devem ser implementados”. FÉLIX, R. Programação orientada a objetos . São Paulo: Pearson Education do Brasil, 2016. Com base nos conceitos de classe abstrata, analise as afirmativas a seguir. I. As classes abstratas forçam suas subclasses a sobrescrever e implementar os métodos declarados como abstratos. II. As superclasses abstratas forçam suas subclasses a sobrescrever e implementar os métodos declarados como concretos. III. Cada subclasse concreta fornecerá informações concretas de todos os métodos abstratos herdados da superclasse. IV. Para alcançar o polimorfismo em Java é obrigatório o uso da palavra reservada extends. Está correto o que se afirma em:
Leia o trecho a seguir. “O Java também suporta interfaces – coleções de métodos relacionados que normalmente permitem informar aos objetos o que fazer, mas não como fazer [...]. Na analogia do carro, uma interface das capacidades ‘básicas de dirigir’, consistindo em um volante, um pedal de acelerador e um pedal de freio, permitiria que um motorista informasse ao carro o que fazer. Depois que você sabe como usar essa interface para virar, acelerar e frear, você pode dirigir muitos tipos de carro, embora os fabricantes possam implementar esses sistemas de forma diferente” (DEITEL; DEITEL, 2016, p. 10). DEITEL, P., DEITEL, H. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2016. Sobre as interfaces em Java, analise as asserções a seguir e a relação proposta entre elas. I. Uma classe implementa zero ou mais interfaces, em que cada uma pode ter um ou mais métodos. POIS II. As classes podem implementar os métodos de uma interface de maneiras diferentes, sem dependência entre si. A respeito das asserções, assinale a alternativa correta a seguir.
Considere uma classe “Calculo” que tem dois métodos “calculo”, sendo que um deles recebe dois parâmetros e outro recebe três, conforme o código em linguagem Java (em qualquer versão) a seguir. public class Calculo { public int calculo (int a, int b) { return a + b; } public int calculo (int a, int b, int c) { return a + b + c; } } É possível afirmar que, no código apresentado :
O polimorfismo é um paradigma e uma grande contribuição para a programação orientada a objetos, visto que permite a adequação das ações das classes ao que elas se propõem. Considerando o paradigma do polimorfismo, analise as afirmativas a seguir e assinale V para a(s) verdadeira(s) e F para a(s) falsa(s). I. ( ) Um exemplo de polimorfismo ocorre quando um método da classe-mãe é redefinido na classe-filha. II. ( ) Caso o método não seja definido na classe-filha, o compilador busca a implementação na classe-mãe. III. ( ) Um método deve ter a assinatura diferente na classe-mãe e na filha, a fim de ter o comportamento padrão dessas classes. IV. ( ) Quando um método é sobrescrito na classe-filha, passa a ter o comportamento descrito na classe-filha. Assinale a alternativa que apresenta a sequência correta .
Na programação orientada a objetos, existem os conceitos de classe e subclasse. Uma subclasse também pode ser denominada classe-filha, pois passa a ter acesso aos atributos e métodos da classe-mãe, classe-base ou superclasse. Essa afirmativa refere-se à qual paradigma?
Na programação orientada a objetos, as classes podem herdar características e ações de outras classes. A linguagem Java é orientada a objetos e permite a criação de classes-pais e filhas. Considerando a linguagem Java, com base na criação de uma subclasse “Onibus”, a partir de uma superclasse “Transporte”, assinale a alternativa que apresenta o código correto .
Leia o trecho a seguir. “A declaração de variáveis de instância com o modificador private é conhecida como ocultamento de dados ou ocultamento de informações. Quando um programa instancia um objeto de uma classe, a variável (atributo) é ocultada no objeto e pode ser acessada apenas por métodos da classe do objeto” (DEITEL; DEITEL, 2016, p. 63). DEITEL, P.; DEITEL, H. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2016. Em relação aos conceitos de programação orientada a objetos, assinale a alternativa a seguir que apresenta corretamente ao que se refere o trecho lido anteriormente.
Considere uma classe “Calculo”, que solicita dois valores ao usuário e realiza a soma desses valores, conforme o código em linguagem Java (em qualquer versão) a seguir. public class Calculo { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.println("Informe o primeiro termo:"); int a = entrada.nextInt(); System.out.println("Informe o segundo termo:"); int b = entrada.nextInt(); int c = calculo(a, b); System.out.println("O resultado é " + c); } private static int calculo (int a, int b) { return a + b; } } Analise o código apresentado e assinale a alternativa correta .
Leia o trecho a seguir. “Na indústria, diagramas UML ajudam projetistas de sistema a especificar um sistema de maneira gráfica, concisa e independente de linguagem de programação antes de os programadores implementarem o sistema em linguagem específica” (DEITEL; DEITEL, 2016, p. 61). DEITEL, P.; DEITEL, H. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2016. Observe a seguinte imagem: Fonte: Deitel e Deitel (2016, p. 61). Considerando o apresentado, analise as afirmativas a seguir. I. No compartimento superior, temos o atributo da classe, que corresponde à variável de instância de mesmo nome em Java. II. O compartimento inferior contém as operações da classe, que correspondem aos métodos com os mesmos nomes em Java. III. A UML representa o tipo de retorno de um método utilizando dois pontos, juntamente com a expressão void ao lado de cada tipo em Java. IV. O compartimento intermediário possui definições de nome da classe, representada por uma classe de mesmo nome em Java. Está correto o que se afirma em:
Na programação orientada a objetos, é comum o uso de classes e métodos genéricos, visando reduzir a quantidade de códigos de conversão de tipos de dados. Considerando esse contexto, assinale a alternativa que apresenta, corretamente, o uso dos “Generics” em linguagem Java .
Considere o código a seguir, em linguagem Java (qualquer versão), que apresenta a utilização de um tipo genérico para uma lista de nomes. public static void main(String[] args) { List<String> nomes = new ArrayList<String>(); nomes.add("José"); nomes.add("João"); nomes.add("Maria"); System.out.println(nomes.get(0)); } Em relação a esse código, é possível afirmar que:
Leia o trecho a seguir. “Todo tipo primitivo tem uma classe empacotadora de tipo correspondente (no pacote java.lang). Essas classes chamam-se Boolean , Byte , Character , Double , Float , Integer , Long e Short . Elas permitem manipular valores de tipo primitivo como objetos. [...] Mas podem manipular objetos das classes empacotadoras de tipo, porque cada classe, em última análise, deriva de Object” (DEITEL; DEITEL, 2016, p. 539). DEITEL, P., DEITEL, H. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2016. Sobre tipos e classes, analise as asserções a seguir e a relação proposta entre elas. I. A interface List é implementada por várias classes, inclusive pelas classes ArrayList, LinkedList e Vector. O autoboxing ocorre quando valores de tipo primitivo são adicionados aos objetos dessas classes. POIS II. As variáveis de tipo primitivo armazenam apenas referências a objetos, em que as classes ArrayList e Vector são implementações de arrays redimensionáveis de List. A respeito das asserções, assinale a alternativa correta a seguir.
A estrutura de coleções em Java fornece ao desenvolvedor diversas interfaces e classes, facilitando sua implementação em vários algoritmos, além de diversas estruturas de dados. Algumas classes de coleção importantes são ArrayList, LinkedList, HashMap, TreeMap, HashSet e TreeSet. Essas classes resolvem a maioria das necessidades de programação, no entanto, se for necessária alguma classe de coleção especial, podemos estendê-la para criar uma classe de coleção personalizada. Em relação aos métodos utilizados nas coleções, analise as afirmativas a seguir. I. A função do método reverse é inverter a ordem dos elementos em uma List. II. No método fill , os elementos em uma List são sobrescritos com um determinado valor. III. A operação fill é útil para limpar uma lista e bloquear suas alterações. IV. Se a lista de destino for mais longa, os elementos não sobrescritos sofrerão alterações. Está correto o que se afirma em:
Na linguagem Java, é comum o uso de coleções, estruturas de dados (que também são objetos) que permitem armazenar vários outros objetos. Nesse contexto, analise as afirmativas a seguir, em relação aos métodos utilizados nas classes concreta e as relacione adequadamente. 1 – add e offer . 2 – remove e poll . 3 – element e peek . I. Removem e retornam o elemento do início. II. Retornam, porém não removem, o elemento do início. III. Inserem um elemento na fila. Assinale a alternativa que relaciona, adequadamente, os dois grupos de informações .
O Java Iterator também é conhecido como o cursor universal de Java, pois é apropriado para todas as classes do framework Collection. Ele também auxilia nas operações como READ e REMOVE. Quando comparamos a interface do Java Iterator com a interface do iterador de enumeração, podemos dizer que os nomes dos métodos disponíveis no primeiro são mais precisos e fáceis de usar. Assinale a alternativa correta a respeito do Java Iterator, a seguir.
Observe o seguinte trecho de código escrito em Java: Fonte: Elaborada pelo autor (2022). Considerando o apresentado, analise as afirmativas a seguir. I. O uso do ArrayList, na linha 14, está incorreto, uma vez que, na linha 10, se utilizou List. II. A classe Collections possui diversos métodos implementados, como ordenações, por exemplo. III. O array colors é definido como string , adicionado em uma lista utilizando o método sort . IV. O método construtor inicializa uma lista criada de forma global na codificação. Está correto o que se afirma em:
Na programação orientada a objetos, “[...] classes internas são definidas dentro de outras classes [...]”. Desse modo, as “[...] classes internas podem ter acesso a dados privados das classes nas quais elas estão inseridas” (FÉLIX, 2016, p. 16). FÉLIX, R. Programação orientada a objetos. São Paulo: Pearson Education do Brasil, 2016. Considerando o apresentado, analise as asserções a seguir e a relação proposta entre elas. I. A classe interna poderá conter o que uma classe considerada “normal” possui, como variáveis e métodos, além de membros estáticos. POIS II. A utilização de membros estáticos em uma classe interna informa ao compilador Java que essa classe será interpretada separadamente. A respeito das asserções, assinale a alternativa correta a seguir.
Em Java, variável é um contêiner de dados que salva os valores de dados durante a execução do programa. Para cada variável, é atribuído um tipo de dado, que designa o tipo e a quantidade de valor que ela pode conter. Uma variável é um nome de local de memória para os dados. Quanto ao uso de variáveis em Java, analise as afirmativas a seguir. I. Para atribuir dados a uma variável, especificamos o nome da variável e, em seguida, o operador de atribuição = , seguido de um valor que corresponda ao tipo de dados. II. Só usamos o tipo de dados no código quando estamos declarando ou inicializando a variável, e não ao atribuir ou alterar um valor. III. Podemos declarar ou inicializar várias variáveis de mesmo tipo ao mesmo tempo em Java separando cada nome por ponto e vírgula, não sendo possível atribuir valores. IV. Uma constante é um item de dados cujo valor não pode mudar durante a execução do programa. Assim, como o próprio nome indica, o valor é constante. Está correto o que se afirma em:
Na programação orientada a objetos, utilizamos o conceito de classes e objetos. Uma analogia que podemos fazer é a de um projeto de uma casa, que podemos utilizar para construir várias casas, com as mesmas características. Em relação a esses aspectos, assinale a alternativa correta .
Observe o seguinte trecho de código: Fonte: Elaborada pelo autor (2022). Podemos afirmar que poderia existir uma característica de polimorfismo atribuída à variável tamanho na linha:
Na linguagem Java, a primeira linha que compõe o método é denominada cabeçalho. Considere o seguinte cabeçalho do método: public static void main(String[] args) A seguir, analise as afirmativas, relacionadas aos termos utilizados no cabeçalho do método, e as relacione adequadamente. 1 – String[] 2 – public 3 – args I. Identificador da variável local utilizada como parâmetro do método. II. Modificador de acesso do método. III. Tipo de dados do parâmetro do método. Assinale a alternativa que relaciona, adequadamente, os dois grupos de informações .
Um dos conceitos relacionados à programação orientada a objetos em Java é o de abstração, que é o ato de representar os principais recursos sem incluir informações de suporte. É um método para desenvolver um novo tipo de dados apropriado para um aplicativo específico. Ele evita fornecer fatos estranhos ou sem sentido e exibe apenas a parte precisa que o usuário solicitou. Como base nos conceitos de abstração, analise as asserções a seguir e a relação proposta entre elas. I. Em Java, a abstração fornece segurança, mostrando os detalhes essenciais e ocultando certos detalhes do usuário. Para criar uma classe ou método abstrato, a palavra-chave abstract é utilizada. POIS II. As propriedades e os comportamentos de um objeto são essenciais para diferenciá-lo de outros objetos de tipo semelhante, além de auxiliar na classificação desses objetos. Sobre as asserções, assinale a alternativa correta a seguir.