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.