

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.
Analise o trecho de código Java a seguir.
int x = 5;
x <<= 2;
O valor final da variável x deve ser:
0;
1;
20;
25;
125.
Considere as seguintes afirmações sobre os fundamentos da programação orientada a objetos.
I. A classe é uma estrutura de dados que representa um objeto do mundo real.
II. O método é um bloco de código que pode ser executado por um objeto.
III. A herança é um mecanismo que permite que uma classe herde os atributos e os métodos de outra classe.
IV. O polimorfismo é um mecanismo que permite que objetos de diferentes classes respondam a uma mesma mensagem de forma diferente.
É correto apenas o que afirma em
I e II.
I e III.
I, II e III.
II e IV.
II, III e IV.
Considere as alternativas a seguir sobre Encapsulamento e identifique a afirmação correta:
O encapsulamento é o processo de apresentar as características de objetivos e classes para diferentes tipos de aplicações.
O encapsulamento é o processo de evitar acesso a aplicações não autorizadas e mostrar dados de objetos e funções.
O encapsulamento é o processo de esconder todos os detalhes de um objeto que não contribuem para as suas características essenciais.
O encapsulamento é o processo de mostrar os dados de uma aplicação para acessos externos.
Considere que, para melhorar o desempenho de sistemas computacionais, projetistas de hardware decidam aumentar o número de processadores em vez de aumentar a frequência de clock. Dessa forma, surge a necessidade de utilizar softwares que explorem o paralelismo. Um problema típico encontrado no desenvolvimento desse tipo de software é a dependência de dados. Nesse contexto, considere que dois processadores precisem realizar, simultaneamente, o acesso a uma mesma matriz A.
Com base nas informações apresentadas, com relação aos trechos de código em linguagem C apresentados a seguir, assinale a opção que apresenta uma situação de conflito de dados.
Processador 1:
int a = &A[0][0];
Processador 2:
int b = &A[0][0];
Processador 1:
*A[0][0] = 10;
Processador 2:
*A[0][1] = 20;
Processador 1:
*A[0][0] = 10;
Processador 2:
int b = &A[0][0];
Processador 1:
int a = &A[0][0];
Processador 2:
*A[0][0] = 20;
Processador 1:
*A[0][0] = 10;
Processador 2:
*A[0][0] = 20;
Considere a existência do array abaixo, criado em uma aplicação Java, em condições ideais.
String[] nomes = i“Marta”", “paulo”, "Carolina", “Joaguim", “Fedro";
Considere, também, os laços de repetição abaixo, criados com o objetivo de percorrer o array e exibir seus valores.
I. for (String nome : nomes) (
System.out.println (nome);
)
II. for (int i = 0; i < nomes.length; i++) (
System.out.println (nomes[il);
)
III.int indice = O;
while (indice < nomes.length) {
System.out .println (nomes [indice]);
indice++;
}
IV.int index = O;
do {
System.out .println (nomes [index]) ;
index++;
} while (index < nomes.length)
Percorre corretamente o array e exibe seus valores APENAS os laços de repetição que constam em
I, II e III.
II e IV.
I e III.
I e IV.
II, III e IV.
Considere o seguinte código em C++, que usa a biblioteca Boost para criar um grafo direcionado com 4 vértices e 4 arestas:
#include <iostream>
#include <boost/graph/adjacency_list.hpp>
int main(){
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS> Graph;
Graph g(4);
boost::add _edge(0, 1, g);
boost::add_edge(1,2,g);
boost::add_edge(2,3,9);
boost::add_edge(3,0,g);
std:cout << "Vértices: "<< boost.:num_vertices(g) << std::endl;
std cout << "Arestas: " << boost::num_edges(g) << std::endl;
return 0;
}
Qual é a saída esperada para esse programa?
Vértices: 3, Arestas: 3.
Vértices: 3, Arestas: 4.
Vértices: 4, Arestas: 3.
Vértices: 4, Arestas: 4.
Vértices: 5, Arestas: 5.
Analise o seguinte trecho de código Java:
StringBuilder sb = new StringBuilder("Memória"); sb.append(" ocupada."); |
Em qual local a JVM (Java Virtual Machine) armazenará a instância de sb?
Heap
Perm
Stack
Swap
Sweep
Pilhas podem ser implementadas em Python por meio de listas em que o último elemento é o topo da pilha, como no exemplo abaixo:
pilha01 = ['a4', 'a3', 'a2', 'a1'] # o elemento 'a1' está
# no topo da pilha
pilha02 = ['b2', 'b1'] # o elemento 'b1' está no topo da pilha
Considere uma função Python, chamada unifica, que recebe duas pilhas como parâmetros e retorna uma terceira, que é o resultado da intercalação dos elementos das duas pilhas recebidas como parâmetros. Um programa Python chamou essa função unifica, passando como parâmetros as duas pilhas do exemplo acima (pilha01 e pilha02). O resultado da intercalação foi a pilha
['a4', 'a3', 'b2', 'a2', 'b1', 'a1']
Qual implementação da função unifica realiza o que foi descrito acima?
def unifica(p1, p2):
p3 = [ ]
while len(p1) > 0:
p3.append(p1.pop())
while len(p2) > 0:
p3.append(p2.pop())
return p3
def unifica(p1, p2):
p3 = [ ]
while len(p1) > 0 and len(p2) > 0 :
p3.append(p1.pop())
p3.append(p2.pop())
return p3
def unifica(p1, p2):
p3 = [ ]
p4 = [ ]
while len(p1) > 0 and len(p2) > 0 :
p3.append(p1.pop())
p3.append(p2.pop())
while len(p3) > 0:
p4.append(p3.pop())
return p4
def unifica(p1, p2):
p3 = [ ]
p4 = [ ]
while len(p1) > 0 or len(p2) > 0 :
if len(p1) != 0:
p3.append(p1.pop())
if len(p2) != 0:
p3.append(p2.pop())
while len(p3) > 0:
p4.append(p3.pop())
return p4
def unifica(p1, p2):
p3 = [ ]
p4 = [ ]
while len(p1) != 0:
if len(p1) != 0:
p3.append(p1.pop())
while len(p2) != 0:
if len(p2) != 0:
p3.append(p2.pop())
while len(p3) > 0:
p4.append(p3.pop())
return p4
Faça a associação dos métodos da classe ArrayList do Java e suas descrições.
MÉTODOS
1 - add
2 - clear
3 - remove
4 - trimToSize
5 - contains
DESCRIÇÕES
( ) Remove todos os elementos do ArrayList.
( ) Corta a capacidade do ArrayList para o número atual de elementos.
( ) Adiciona um elemento ao final do ArrayList.
( ) Retorna true se o ArrayList contém o elemento especificado; caso contrário, retorna false.
( ) Remove a primeira ocorrência do valor especificado ou o elemento no índice especificado.
A sequência correta dessa associação é
5, 4, 3, 2, 1.
1, 2, 3, 4, 5.
1, 5, 3, 4, 2.
2, 3, 5, 4, 1.
2, 4, 1, 5, 3.
Sobre os comandos R, analise as assertivas abaixo e assinale a alternativa correta.
I. license – detalha as condições de distribuição do R.
II. contributors – lista a equipe do time-cerne de desenvolvimento.
III. Citation – ensina como citar o R em trabalhos acadêmicos.
IV. Demo – inicia uma sessão interativa de demonstração do R.
Todas estão corretas.
Todas estão incorretas.
Apenas I está correta.
Apenas I e II estão corretas.
Apenas III e IV estão corretas.
Apresenta-se a seguinte definição técnica:
“princípio a partir do qual as classes derivadas de uma única classe base são capazes de invocar os métodos que, embora apresentem a mesma assinatura, comportam-se de maneira diferente para cada uma das classes derivadas”.
Diante do exposto, assinale, das alternativas abaixo, a única que identifica corretamente essa definição.
Polimorfismo
Herança
Encapsulamento
Interface
No programa R, a função aritmética básica (2 + 2)2 = 16 pode ser calculada digitando-se > 2 + 2^2.
Certo
Errado
Analise o código a seguir em linguagem de programação Java:
1 public class Programa {
2
3 ___ public static void main(String[] args) {
4
5 _______ int a = 5;
6 _______ int b = 7;
7
8 _______ int x = (~a & b);
9
10 ______ System.out.println("x = " + x);
11 ___ }
12 }
Ao executar esse programa em um terminal, será escrito na saída padrão:
x = 2
x = 3
x = 4
x = 5
x = 6
Python é uma linguagem de programação que possui as seguintes características: é uma linguagem de alto nível, orientada a objetos e interpretada de script, dentre outras. Sobre tal linguagem de programação, assinale a afirmativa correta.
Com exceção dos comentários funcionais, qualquer texto depois do # será ignorado até o fim da linha.
Os nomes de variáveis, em Python, são referências que não podem ser alteradas em tempos de execução.
Por padrão, a função print() remove os espaços entre as expressões que forem recebidas como parâmetro.
Os nomes das variáveis podem começar com uma letra ou com um número, com exceção do número 0 (zero).
Considere o trecho de código abaixo escrito na linguagem Python 3.x e a saída desejada a seguir:
CÓDIGO PYTHON | SAÍDA DESEJADA |
itens = ['item1', 'item2', 'item3'] precos = [3.50, 4.0, 5.80] # código para gerar o dicionario produtos ................. # fim do código print(produtos) | {'item1': 3.5, 'item2': 4.0, 'item3': 5.8} |
Assinale a alternativa que irá substituir o trecho “.................” com o código Python que irá executar corretamente para produzir a saída desejada:
produtos = {}
for x in itens:
----for y in precos:
-------produtos[x] = y
produtos = {}
for x in itens:
---for y in precos:
------produtos.update( { x : y })
produtos = {}
for x,y in zip(itens,precos):
---produtos.add(x[y])
produtos = { x:y for x,y in zip(itens,precos) }
produtos = {}
for x,y in zip(itens,precos):
---produtos[y] = x
Considere as seguintes classes Java, definidas em arquivos chamados, respectivamente, Funcionario.java, Gerente.java e TesteFuncionario.java:
public class Funcionario { protected String nome; protected double salario; public Funcionario(String nome, double salario) { this.nome = nome; this.salario = salario; } public void darAumento(double percentual) { salario = salario * (1.0 + percentual); } public double getSalario() { return salario; } } |
public class Gerente extends Funcionario { public Gerente(String nome,double salario) { super(nome, salario); } @Override public void darAumento(double percentual) { salario = salario * (1.05 + percentual); } } |
import java.util.ArrayList; import java.util.List; public classTesteFuncionario { private static List<Funcionario> equipe= new ArrayList<>(); public static void main(String[] args) { equipe.add(new Funcionario("Fulano", 3000)); equipe.add(new Gerente("Beltrana", 5000)); equipe.add(new Funcionario("Ciclano", 3000)); for (Funcionario func : equipe) { func.darAumento(0.1); System.out.print(func.getSalario() + " "); } System.out.println(); } } |
Considerando o código das 3 classes apresentadas acima, analise as afirmativas a seguir:
I. O código compila sem erros e sua execução imprime na tela 3 números de ponto flutuante na mesma linha.
II. A substituição do modificador de acesso protected por private na definição do atributo salario da classe Funcionario causa erro de compilação ao tentar se recompilar todo o código.
III. A anotação @Override na classe Gerente indica que o método darAumento está sendo sobrescrito. Removê-la causa erro de compilação ao tentar se recompilar todo o código.
IV. Os valores do atributo salario associados aos objetos com nome “Fulano” e “Ciclano” aumentam em 10% e o associado ao objeto com nome “Beltrana” aumenta em 15% em relação aos valores inicializados na construção dos respectivos objetos, se se desconsiderarem imprecisões em valores de ponto flutuante.
É CORRETO o que se afirma em
I, II e IV, apenas.
I, III e IV, apenas.
II, III e IV, apenas.
I, II e III, apenas.
I, II, III e IV.
A biblioteca NLTK (Natural Language Toolkit) engloba ferramentas para processamento de linguagem natural, tais como funções de tokenização e radicalização. Dessa forma, considerando o código apresentado:
frase = “Não esqueçam a lista de materiais:
1 lápis e 2 canetas!”
from nltk.tokenize import RegexpTokenizer
tokenizador = RegexpTokenizer(r’\w+’)
tokens = tokenizador.tokenize(frase)
print(tokens)
Qual o resultado correto?
[‘Não’, ‘esqueçam’, ‘a’, ‘lista’, ‘de’, ‘materiais’, ‘1’, ‘lápis’, ‘e’, ‘2’, ‘canetas’]
[‘Não’, ‘esqueçam’, ‘a’, ‘lista’, ‘de’, ‘materiais’, ‘lápis’, ‘e’, ‘canetas’]
[‘Não’, ‘esqueçam’, ‘a’, ‘lista’, ‘de’, ‘materiais’, ‘:’, ‘1’, ‘lápis’, ‘e’, ‘2’, ‘canetas’, ‘!’]
[‘Não’, ‘esqueçam’, ‘a’, ‘lista’, ‘de’, ‘materiais’, ‘:’, ‘lápis’, ‘e’, ‘canetas’, ‘!’]
No contexto dos princípios SOLID, analise as afirmativas a seguir.
I. O princípio de inversão de dependência estabelece que uma classe deve depender de implementações abstratas e não concretas, sempre que possível.
II. O princípio aberto / fechado estabelece que uma classe deve estar fechada para extensões, mas aberta para modificações.
III. O princípio da responsabilidade única é uma aplicação da propriedade de coesão, por propor que toda classe deve ter uma única finalidade.
Está(ão) correta(s) a(s) afirmativa(s)
I, apenas.
II, apenas.
III, apenas.
I e III, apenas.
II e III, apenas.
Em Phyton, a variável de ambiente que tem como função forçar o Phyton a despejar o rastreamento — lista de chamadas que chegaram a um erro — em erros fatais denomina-se
PYTHONTRACEMALLOC.
PYTHONPROFILEIMPORTTIME.
PYTHONASYNCIODEBUG.
PYTHONMALLOC.
PYTHONFAULTHANDLER.
Sobre as instruções de repetição na linguagem de programação Java é INCORRETO afirmar:
Quando a instrução "for" começa a ser executada, sua variável de controle é declarada e inicializada. Se inicialmente a condição da estrutura de repetição for verdadeira, seu conteúdo será executado, seguido da execução da expressão de incremento. Então, o teste de continuação do loop é realizado novamente para determinar se o programa deve continuar com a próxima iteração do bloco de instruções presente dentro da estrutura de repetição.
A repetição controlada por contador requer uma variável de controle, o valor inicial da variável de controle, o incremento pelo qual a variável de controle é modificada a cada passagem pelo loop e a condição de continuação do laço, que determina se um loop deve continuar.
Não é possível declarar uma variável e inicializá-la na mesma instrução.
A expressão incremento em uma instrução “for” atua como se ela fosse uma instrução independente no fim do corpo de “for”.
As expressões em um cabeçalho “for” são opcionais. Se a condição de continuação do loop for omitida, o Java irá supor que ela sempre é verdadeira, criando assim um loop infinito.