Prova

Propaganda
9
PROVA DE CONHECIMENTOS ESPECÍFICOS – Cód. 02/A
QUESTÃO 16
Considere o método estático incompleto a seguir, definido na classe MyClass,
utilizando-se a linguagem Java.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public static boolean myFunction(boolean m [ ][ ]) {
int c = 0;
for (int a = 0; a < m.length; a++) {
boolean p = m[a][0], q = m[a][1], r = m[a][2] ;
boolean b1 = p && q || ~p && q ;
boolean b2 = ~p && ~q || ~q && ~r ;
boolean b3 = <expressão que falta>;
If (b1 || b2 == b3)
c++;
}
return c == m.length;
}
Considere, ainda, que MATRIX seja um atributo estático da classe MyOtherClass e
represente a matriz:
0
1
2
3
4
5
6
7
0
1
2
true
true
true
true
false
false
false
false
true
true
false
false
true
true
false
false
true
false
true
false
true
false
true
false
A chamada MyClass.myFunction(MyOtherClass.MATRIX) retornará o valor 8 se a
expressão indicada por <expressão que falta> for substituída por:
a)
b)
c)
d)
~p || q ||~r
~p && q
~p || ~q || ~r
p && q && r
10
INSTRUÇÃO
As questões 17 e 18 referem-se à seguinte classe definida na linguagem Java:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
public class C {
private int value;
private C children[ ];
public C(int value) {
this.value = value;
this.children = new C[0];
}
public C(int value, C children[ ]) {
this.value = value;
this.children = children;
}
public String toString() {
String s = value + " " ;
for (C child : children)
s += child;
return s;
}
public int sum() {
int s = this.value;
for (C child : children)
s += child.sum();
return s;
}
public static C build(int a, int b, int c) {
if (a <= 1)
return new C(1);
C[ ] children = new C[c];
for (int d = 0; d < c; d++)
children[d] = build(a / b, b, c+1);
return new C(a, children);
}
}
11
QUESTÃO 17
Considere que, durante a execução de um programa que utilize a classe C, a
seguinte linha de código seja executada:
System.out.println(C.build(8,2,2).sum());
O valor impresso na tela em decorrência da execução dessa linha é:
a) 8
b) 15
c) 52
d) 127
QUESTÃO 18
Considere que, durante a execução de um programa que utilize a classe C, a
seguinte linha de código seja executada:
System.out.println(C.build(49,7,3));
A execução dessa linha tem como conseqüência a impressão da seguinte seqüência
de valores:
a) 49 7 1
b) 49 49 7 7 7 1 1 1 1
c) 49 7 1 1 1 1 7 1 1 1 1 7 1 1 1 1
d) 49 7 7 7 1 1 1 1 1 1 1 1 1 1 1 1
12
QUESTÃO 19
Considere o método doSomething a seguir, pertencente à classe MyClass, definida
na linguagem Java:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public static int doSomething() {
try {
BufferedReader br;
br = new BufferedReader(new FileReader(“a.txt”));
int result = 0;
for (int a = 0; a < 10; a++) {
String line = br.readLine();
result += Integer.parseInt(line);
}
return result;
} catch (NumberFormatException e1) { return -1;
} catch (IOException e2) { return -2;
}
}
Sobre este método, considere as seguintes afirmativas:
I. Se o número de linhas do arquivo “a.txt” for menor do que 10, então a
execução de MyClass.doSomething() terá como resultado o valor -1.
II. Se o arquivo “a.txt” não puder ser aberto para leitura, então a execução de
MyClass.doSomething() terá como resultado o valor -2.
III. Se o arquivo “a.txt” contiver alguma linha vazia, então a execução de
MyClass.doSomething() terá como resultado o valor -2.
Estão CORRETAS as afirmativas:
a)
b)
c)
d)
I, II e III.
I e II, apenas.
I e III, apenas.
II e III, apenas.
QUESTÃO 20
13
Considere o método mistery a seguir, pertencente à classe MyClass, definida na
linguagem Java.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public static void mistery(int n) {
Stack<Integer> s = new Stack<Integer>();
s.push(n);
while (! s.isEmpty()) {
int value = s.pop();
System.out.print(value + " ");
for (int a = 2; a < value; a++)
if (value % a == 0)
s.push(a);
}
}
Considerando que Stack seja a classe de implementação de pilha genérica
disponível no pacote java.util, é CORRETO afirmar:
a) Esse método está sintaticamente incorreto, pois não é possível definir instâncias
de objetos em métodos estáticos.
b) Esse método está sintáticamente correto, mas a sua execução produz uma
repetição infinita.
c) Esse método está sintaticamente correto e chamada MyClass.mistery(20)
imprime na tela a seqüência de valores: 20 10 5 4 2.
d) Esse método está sintaticamente correto e chamada MyClass.mistery(20)
imprime na tela a seqüência de valores: 20 10 5 2 5 4 2 2.
QUESTÃO 21
14
Considere a seguinte função definida em linguagem C, que recebe como parâmetro
uma seqüência de strings, de nome s, contendo n elementos:
1.
2.
3.
4.
5.
6.
7.
int test(char ** s, int n) {
int idx ;
for (idx = 1; idx < n; idx++) {
if (strcmp(s[ idx ], s[ idx – 1 ]) < 0)
return 0;
return 1;
}
Essa função retorna o valor 1 para todas as seqüências de strings a seguir,
EXCETO:
a)
b)
c)
d)
{“abc”, “XYZ”}
{“a”, “ab”, “abc”, “abcd”, “abcda”}
{“ab”, “abc”, “acx”}
{“AX, “abx”, “ax”}
QUESTÃO 22
15
Considere a seguinte função definida em linguagem C.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
int mistery(int n, int k) {
int c = 0, x, p = 1;
while (c < n) {
printf("x: "); scanf("%d", &x);
if (x == –1) break;
if (x == 0) return 0;
if (x > k) continue;
p *= x; c++;
}
return p;
}
Sobre essa função, considere as seguintes afirmativas:
I. Durante a execução de mistery(10,20), o usuário pode fornecer no máximo 10
valores inteiros.
II. A função mistery produz sempre o mesmo resultado que a seguinte função:
1.
2.
3.
4.
5.
6.
7.
8.
int mistery(int n, int k) {
int x = 1, p = 1;
while (p != 0 && n > 0 && x != –1) {
printf("x: "); scanf("%d", &x);
if (x != –1 && x <= k) { p *= x; n = n – 1; }
}
return p;
}
A alternativa CORRETA é:
a)
b)
c)
d)
Somente a afirmativa I é verdadeira.
Somente a afirmativa II é verdadeira.
As afirmativas I e II são verdadeiras.
As afirmativas I e II são falsas.
QUESTÃO 23
16
Considere o seguinte fragmento de código em linguagem C, no qual cada número
inteiro ocupa 4 bytes de memória.
1.
2.
3.
4.
5.
6.
7.
int * p1, * p2, * p3, * p4, * p5;
p1 = (int*) malloc(100 * sizeof(int));
p2 = (int*) malloc(200 * sizeof(int));
p3 = p2; p2 = (int*) malloc(400 * sizeof(int));
p3 = p2; p1 = (int*) malloc(800 * sizeof(int));
p4 = p1; p5 = p4; p4 = p3; p3 = p5;
p1[0] = 5; p2[0] = 10;
Sobre esse fragmento de código, avalie as seguintes afirmativas:
I. Após a execução da linha 7, há 1200 bytes alocados que não são acessíveis
a partir dos apontadores disponíveis (p1, p2, p3, p4 e p5).
II. Após a execução da linha 7, p2 e p4 referenciam a mesma posição de
memória.
III. Após a execução da linha 7, p3[0] é igual a 10.
Estão CORRETAS as afirmativas:
a)
b)
c)
d)
I e II, apenas.
I e III, apenas.
II e III, apenas.
I, II e III.
QUESTÃO 24
Considere o seguinte fragmento de código em linguagem C, no qual cada número
inteiro ocupa 4 bytes de memória.
1.
2.
3.
4.
5.
6.
7.
8.
int * p1, * p2, * p3, * p4, * p5, x, y = 1, s = 0;
p5 = p1 = (int *) malloc(10 * sizeof(int));
for (x = 0; x < 10; x++) { *(p5++) = y; y = y * 2; }
p2 = p1 + 1;
p3 = & (p2[2]);
p4 = & (p5[-3]);
while (p3 != p4) { s += *p3; p3++; }
printf("%d", s);
Durante a execução desse fragmento de código, o valor impresso na linha 8 será:
a)
b)
c)
d)
120
500
1024
2047
QUESTÃO 25
17
Os sistemas operacionais modernos são chamados de sistemas multithread
(multitarefa). Uma thread ou tarefa é considerada um processo leve e, normalmente,
é criada a partir de um processo pai.
Sobre sistemas operacionais multitarefa, é INCORRETO afirmar:
a) Em sistemas que suportam threads, o conjunto de registradores é associado a
threads e não a processos, dado que as threads possuem linha de execução
própria.
b) Mesmo que duas threads pertençam a um mesmo processo, é desejável que
elas possuam pilhas de execução protegidas e independentes, pois seus
contextos de execução são diferentes.
c) O escalonador de tarefas é o componente do sistema operacional que tem por
objetivo garantir uma distribuição justa dos recursos de máquina entre as
threads, podendo, no entanto, privilegiar processos ou tarefas prioritárias.
d) Como threads possuem linhas de execução e espaço de endereçamento de
memória independentes, a forma de transferência de dados entre duas threads
deve ser realizada através do RPC (chamada remota de procedimentos).
QUESTÃO 26
Considere as afirmativas sobre arquiteturas de redes de computadores:
I. Um único host na Internet pode possuir mais de um endereço IP.
II. Numa rede Ethernet, podem circular quadros com pacotes diferentes (IP, IPX,
etc.)
III. HTTP Keep-alive é um recurso que pode ser utilizado para aumentar a
performance de conexões baseadas no protocolo de transferência de
hipertexto.
IV. A norma ISO de cabeamento estruturado recomenda que cabos de par
trançado do tipo UTP não excedam 50 metros de comprimento.
Estão CORRETAS apenas as afirmativas:
a)
b)
c)
d)
I, II e IV.
I, II e III.
I, III e IV.
II, III e IV.
QUESTÃO 27
18
Observe as afirmativas abaixo, relativas à segurança de dados na Internet:
I. É comum recebermos e-mails que tentam se passar por uma pessoa ou
entidade confiável, com o objetivo de obter dados pessoais ou informações
privilegiadas do usuário.
II. A internet é, por vezes, inundada por e-mails alarmantes ou falsos, também
conhecidos como lendas urbanas, que simulam notificações de órgãos
governamentais ou empresas idôneas, e têm por objetivo causar falsos
alardes ou propagar vírus, causando embaraços ao usuário.
As afirmativas I e II estão diretamente relacionadas, respectivamente, a:
a)
b)
c)
d)
hoax e spam
spam e trojan horse
phishing scams e hoax
trojan horse e phishing scam
QUESTÃO 28
Em relação à programação de aplicações dependentes de sistema operacional,
assinale a afirmativa CORRETA:
a) Em Windows, uma chamada de sistemas deve ser implementada através de um
componente DCOM que acessa a API (Application Program Interface) do sistema
operacional.
b) As chamadas de sistemas são executadas pelo núcleo (kernel) do sistema
operacional, para notificar um programa de usuário que um evento de interação
de interface acabou de ocorrer.
c) Uma chamada de sistema corresponde ao identificador usado pelo sistema
operacional, para permitir a comunicação de dados entre programas de usuário
em redes locais ou grupos de trabalho.
d) O principal objetivo das chamadas de sistema é permitir que um programa de
usuário obtenha acesso privilegiado e seguro a recursos de hardware
gerenciados pelo núcleo (kernel) do sistema operacional.
QUESTÃO 29
19
Analise as seguintes afirmativas sobre a linguagem SQL padrão:
I. Uma visão (view) de uma única tabela é atualizável se contém, entre seus
atributos, a chave primária da relação básica e todos os atributos com
restrição NOT NULL que não tiverem valores default especificados.
II. INNER JOIN, LEFT OUTER JOIN, FULL OUTER JOIN e CROSS OUTER
JOIN são tipos de junções utilizadas na cláusula WHERE de uma consulta
SQL.
III. Quando se utilizam as cláusulas WHERE, HAVING e GROUP BY em uma
mesma consulta, o predicado da cláusula HAVING é aplicado primeiro, assim
as linhas que satisfazem a cláusula HAVING são colocadas em grupos por
meio da cláusula GROUP BY e, por fim, a cláusula WHERE é aplicada.
A opção CORRETA é:
a)
b)
c)
d)
Apenas I é verdadeira.
Apenas I e II são verdadeiras.
Apenas I e III são verdadeiras.
Apenas II e III são verdadeiras.
QUESTÃO 30
Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API)
que faz o envio de instruções SQL para qualquer banco de dados relacional. Um
driver JDBC é classificado em uma das quatro categorias, de acordo com suas
características. Considerando um driver com as seguintes características:
•
•
•
•
Converte as chamadas JDBC diretamente no protocolo do banco de dados.
É implementado em Java
É independente de plataforma.
É o tipo mais recomendado
identifique a qual categoria esse driver pertence:
a)
b)
c)
d)
Tipo 1: Ponte JDBC-ODBC
Tipo 2: Driver API-Nativo
Tipo 3: Driver de Protocolo de Rede
Tipo 4: Driver nativo
QUESTÃO 31
20
Analise as seguintes afirmativas sobre a linguagem SQL padrão:
I. A instrução INSERT da linguagem SQL padrão insere novos registros em
uma tabela existente. A forma INSERT ... VALUES da instrução insere
registros baseados em valores especificados explicitamente, mas com a
forma INSERT ... SELECT pode-se inserir linhas selecionadas a partir de
outra(s) tabela(s).
II. A instrução SELECT, apesar de não alterar os dados de uma tabela, é
considerada parte da Linguagem de Manipulação de Dados ou DML (Data
Manipulation Language), assim como a instrução GET, que funciona da
mesma forma.
III. Embora o SQL tenha sido originalmente criado pela IBM, rapidamente
surgiram vários "dialetos" desenvolvidos por outros fornecedores. Essa
expansão levou à necessidade de ser criado e adaptado um padrão para a
linguagem. Essa tarefa foi realizada pelo American National Standards
Institute (ANSI) e International Organization for Standardization (ISO).
São VERDADEIRAS as afirmativas:
a)
b)
c)
d)
I e II, apenas.
I e III, apenas.
II e III, apenas.
I, II e III.
QUESTÃO 32
As afirmativas relativas a Data Warehouse e OLAP são corretas, EXCETO:
a) Bases de dados mais adequadas para OLAP (Online Analytical Processing)
empregam um modelo de base de dados dimensional, que permite consultas
analíticas complexas, com um tempo de execução pequeno.
b) Por definição, os dados em um data warehouse não são voláteis, ou seja, eles
não mudam, salvo quando é necessário corrigir de dados previamente
carregados. Portanto, os dados devem estar disponíveis para leitura, mas não
devem ser alterados.
c) MOLAP ou OLAP Multidimensional é um tipo de OLAP que trabalha diretamente
com bancos de dados relacionais. Os dados e as tabelas de dimensões são
armazenados como tabelas relacionais e novas tabelas são criadas para receber
a informação agregada.
d) Um armazém de dados (data warehouse) é um sistema utilizado para armazenar,
de forma consolidada, em um bancos de dados, informações relativas às
atividades de uma organização. O data warehouse possibilita a análise de
grandes volumes de dados, coletados dos sistemas transacionais (OLTP).
QUESTÃO 33
21
Na Engenharia de Software, o método de teste que tem por finalidade determinar se
os requisitos foram total ou parcialmente satisfeitos pelo produto, não verificando
como ocorre o processamento, mas apenas os resultados produzidos, é conhecido
como:
a)
b)
c)
d)
Caixa preta.
Caixa branca.
Teste de Integração.
Teste de componente.
QUESTÃO 34
Analise as seguintes afirmativas sobre Engenharia de Software:
I. Os modelos de maturidade têm o objetivo de avaliar a qualidade dos
processos de software aplicados em uma organização (empresa ou
instituição). Um exemplo de modelo de maturidade muito conhecido é o
Capability Maturity Model Integration (CMMI) do Software Engineering
Institute (SEI).
II. Refactoring é o processo de modificar um sistema de software para melhorar
seu comportamento externo, minimizando alterações na estrutura interna do
código.
III. Programação extrema (eXtreme Programming), ou simplesmente XP, é uma
metodologia ágil para equipes pequenas e médias que irão desenvolver
software com requisitos vagos e em constante mudança. Para isso, adota a
estratégia de constante acompanhamento e realização de vários pequenos
ajustes durante o desenvolvimento de software.
São VERDADEIRAS as afirmativas:
a)
b)
c)
d)
I e II, apenas.
I e III, apenas.
II e III, apenas.
I, II e III, apenas.
QUESTÃO 35
22
Observe os trechos de código Java a seguir:
1.
2.
3.
4.
5.
6.
7.
8.
9.
ANTES
/** Salva o produto no banco de dados. */
public void save() {
// Verifica propriedades
if (this.getName() == null)
throw new Exception("Falta nome");
else if (this.getDescription() == null)
throw new Exception("Falta a descrição");
this.getDatabase().save(this);
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12
DEPOIS
/** Verifica as propriedades do produto. */
public void checkProperties() {
if (this.getName() == null)
throw new Exception("Falta nome");
else if (this.getDescription() == null)
throw new Exception("Falta a descrição");
}
/** Salva o produto no banco de dados. */
public void save() {
this.checkProperties();
this.getDatabase().save(this);
}
O código alterado (depois) demonstra a aplicação de refatoração (refactoring) para:
a)
b)
c)
d)
subir método.
extrair classe.
extrair método.
encapsular atributo.
QUESTÃO 36
Um modelo de processo de software pode ser visto como uma representação, ou
abstração dos objetos e atividades envolvidas no processo. São modelos de
processo de software, EXCETO:
a)
b)
c)
d)
RAD.
RUP.
Formal.
V-Model.
QUESTÃO 37
23
Sobre programação cliente/servidor utilizando Java, é CORRETO afirmar:
a) As classes Socket, instanciada na aplicação cliente, e ServerSocket,
instanciada no servidor, devem ser utilizadas em pares para que uma conexão
seja estabelecida.
b) A classe DatagramSocket nos permite implementar servidores orientados à
conexão, onde os pacotes serão entregues através da classe DatagramPacket,
utilizando-se funções send e receive.
c) Após estabelecida uma conexão com um servidor utilizando a classe Socket em
Java, a troca de dados é feita de forma semelhante a operações de
entrada/saída em um arquivo binário simples.
d) Quando utilizamos a classe URL em Java para estabelecer uma conexão HTTP,
a exceção MalformedURLException pode ser lançada caso o servidor HTTP
recerenciado no endereço web não seja encontrado.
QUESTÃO 38
O conceito de memória virtual permite ao sistema operacional utilizar mais memória
do que o computador possui fisicamente. Sobre memória virtual, todas as afirmativas
estão corretas, EXCETO:
a) A memória física e o arquivo de troca num sistema de memória virtual devem ser
divididos em pequenas regiões de mesmo tamanho chamadas páginas.
b) Enquanto a memória virtual no Windows é implementada na forma de um arquivo
de sistema, no Linux ela é normalmente implementada como uma partição de
disco.
c) Em sistemas com memória virtual, é possível se executar um único programa
que seja maior que a própria memória física do computador.
d) O desempenho de uma memória virtual não é influenciado pela velocidade do
disco rígido, mas pelo tamanho e pela fragmentação do arquivo de troca.
QUESTÃO 39
24
Sobre qualidade de serviço (QoS) em sistemas de comunicação, todas as
afirmativas estão corretas, EXCETO:
a) O serviço de roteamento melhor esforço (Best-effort) provê comunicação com
QoS baseado em filas de prioridades.
b) O protocolo RSVP (Resource Reservation Protocol) permite a reserva de
recursos em uma rede IP, mas não garante QoS, que deve ser provido pelo
protocolo IP.
c) O protocolo de serviço diferenciado (DiffServ) permite a configuração de até seis
classes de serviço, utilizando-se os 3 bits mais significativos do campo Type of
service do protocolo IPv4.
d) Apesar de o protocolo RTP não garantir QoS, o protocolo de controle RTCP pode
auxiliar no monitoramento do QoS e no controle de congestionamento em fluxos
de tráfego com características de tempo-real.
QUESTÃO 40
Considere as afirmações abaixo sobre Web Services (serviços web):
I. A flexibilidade do padrão XML permite que mensagens SOAP utilizadas nos
Web Services incluam informações visuais sobre a forma de apresentação
dos dados nas máquinas clientes.
II. O padrão textual baseado em XML confere aos Web Services uma
performance usualmente inferior a sistemas distribuídos implementado em
Java RMI ou CORBA.
III. Usando XML e HTTP, um Web Service cliente implementado na plataforma
.NET em Windows pode fazer uma chamada remota de procedimento a um
Web Service servidor implementado em Java e rodando no sistema
operacional Linux.
Estão CORRETAS as afirmativas:
a)
b)
c)
d)
I, II e III.
I e II, apenas.
I e III, apenas.
II e III, apenas.
Download