Questões de Concurso sobre Linguagens de Programação

 
 
Disciplina
Assunto 1
Banca
Instituição
Cargo
Ano
Carreira
Área de formação
Escolaridade
Dificuldade
 
Comentários:
Professores
Alunos
Meus Comentários
Vídeo
 
Minhas questões:
Resolvidas
Não resolvidas
Certas
Erradas
 
Tipo de questão:
Certo e errado
Múltipla escolha
Incluir questões:
Anuladas
Desatualizadas
 
Questões:
Todas as questões
 
Filtro simplificado
 
Questões
Todas as questões
 
7.241 questões encontradas
Questões por página
20
Mais recentes
 

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


A

I e II.


B

I e III.


C

I, II e III.


D

II e IV.


E

II, III e IV.

Considere as alternativas a seguir sobre Encapsulamento e identifique a afirmação correta:


A

O encapsulamento é o processo de apresentar as características de objetivos e classes para diferentes tipos de aplicações.


B

O encapsulamento é o processo de evitar acesso a aplicações não autorizadas e mostrar dados de objetos e funções.


C

O encapsulamento é o processo de esconder todos os detalhes de um objeto que não contribuem para as suas características essenciais.


D

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.


A

Processador 1:

int a = &A[0][0];

Processador 2:

int b = &A[0][0];


B

Processador 1:

*A[0][0] = 10;

Processador 2:

*A[0][1] = 20;


C

Processador 1:

*A[0][0] = 10;

Processador 2:

int b = &A[0][0];


D

Processador 1:

int a = &A[0][0];

Processador 2:

*A[0][0] = 20;


E

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


A

I, II e III.


B

II e IV.


C

I e III.


D

I e IV.


E

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?


A

Vértices: 3, Arestas: 3.


B

Vértices: 3, Arestas: 4.


C

Vértices: 4, Arestas: 3.


D

Vértices: 4, Arestas: 4.


E

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?


A

Heap


B

Perm


C

Stack


D

Swap


E

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?


A

def unifica(p1, p2):

p3 = [ ]


while len(p1) > 0:

p3.append(p1.pop())


while len(p2) > 0:

p3.append(p2.pop())


return p3


B

def unifica(p1, p2):

p3 = [ ]


while len(p1) > 0 and len(p2) > 0 :

p3.append(p1.pop())

p3.append(p2.pop())


return p3


C

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


D

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


E

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 é


A

5, 4, 3, 2, 1.


B

1, 2, 3, 4, 5.


C

1, 5, 3, 4, 2.


D

2, 3, 5, 4, 1.


E

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.


A

Todas estão corretas.


B

Todas estão incorretas.


C

Apenas I está correta.


D

Apenas I e II estão corretas.


E

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.


A

Polimorfismo


B

Herança


C

Encapsulamento


D

Interface

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:


A

x = 2


B

x = 3


C

x = 4


D

x = 5


E

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.


A

Com exceção dos comentários funcionais, qualquer texto depois do # será ignorado até o fim da linha.


B

Os nomes de variáveis, em Python, são referências que não podem ser alteradas em tempos de execução.


C

Por padrão, a função print() remove os espaços entre as expressões que forem recebidas como parâmetro.


D

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:


A

produtos = {}

for x in itens:

----for y in precos:

-------produtos[x] = y


B

produtos = {}

for x in itens:

---for y in precos:

------produtos.update( { x : y })


C

produtos = {}

for x,y in zip(itens,precos):

---produtos.add(x[y])


D

produtos = { x:y for x,y in zip(itens,precos) }


E

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


A

I, II e IV, apenas.


B

I, III e IV, apenas.


C

II, III e IV, apenas.


D

I, II e III, apenas.


E

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?


A

[‘Não’, ‘esqueçam’, ‘a’, ‘lista’, ‘de’, ‘materiais’, ‘1’, ‘lápis’, ‘e’, ‘2’, ‘canetas’]


B

[‘Não’, ‘esqueçam’, ‘a’, ‘lista’, ‘de’, ‘materiais’, ‘lápis’, ‘e’, ‘canetas’]


C

[‘Não’, ‘esqueçam’, ‘a’, ‘lista’, ‘de’, ‘materiais’, ‘:’, ‘1’, ‘lápis’, ‘e’, ‘2’, ‘canetas’, ‘!’]


D

[‘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)


A

I, apenas.


B

II, apenas.


C

III, apenas.


D

I e III, apenas.


E

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


A

PYTHONTRACEMALLOC.


B

PYTHONPROFILEIMPORTTIME.


C

PYTHONASYNCIODEBUG.


D

PYTHONMALLOC.


E

PYTHONFAULTHANDLER.

Sobre as instruções de repetição na linguagem de programação Java é INCORRETO afirmar:


A

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.


B

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.


C

Não é possível declarar uma variável e inicializá-la na mesma instrução.


D

A expressão incremento em uma instrução “for” atua como se ela fosse uma instrução independente no fim do corpo de “for”.


E

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.

   
Gerar simulado