UNIVERSIDADE FEDERAL DE SÃO CARLOS CONCURSO
Transcrição
UNIVERSIDADE FEDERAL DE SÃO CARLOS CONCURSO
UNIVERSIDADE FEDERAL DE SÃO CARLOS Pró-Reitoria de Gestão de Pessoas Divisão de Desenvolvimento de Pessoas CONCURSO PÚBLICO PARA O CARGO DE Analista de Tecnologia da Informação Código – 00912.01 Campus São Carlos CADERNO DE PROVA Novembro/2012 INSTRUÇÕES Sr(a) candidato(a): 1) A prova terá duração de 4 (quatro) horas. 2) Verifique se o caderno de prova está completo. Caso contrário, solicite outro ao fiscal. 3) Ao terminar a prova, transcreva as respostas do caderno de prova para a folha resposta. Use caneta esferográfica de tinta azul ou preta. 4) Cuidado para não rasurar as marcações feitas na folha resposta por erro de preenchimento. Em nenhuma hipótese haverá substituição da mesma. 5) Assine a folha resposta no local indicado. 6) Ao término da prova e do preenchimento da folha resposta, entregue-a ao fiscal de sala. BOA PROVA! PARTE A – CONHECIMENTOS GERAIS Para responder as questões de número 1 e 2, leia a seguir o texto “'Fertilização' de oceano reacende polêmica”, de Bruno Deiro (Agência Estado), postado em 24/10/2012 no site www.estadao.com.br 'Fertilização' de oceano reacende polêmica Denunciado na semana passada pela imprensa inglesa, um projeto de "fertilização" do oceano com sulfato de ferro na costa do Canadá, financiado por um milionário dos Estados Unidos, reacendeu a polêmica sobre o uso da chamada geoengenharia para reduzir efeitos do aquecimento global. A maior ação do gênero posta em prática no mundo, alertam especialistas, abre o perigoso precedente para outras experiências invasivas na natureza. O projeto, implementado em julho no arquipélago de Haida Gwaii, no Pacífico, tem a intenção de aumentar a flora local de plânctons, que absorvem o dióxido de carbono (CO2) da atmosfera. Sem a avaliação dos riscos ao ecossistema, no entanto, a experiência foi criticada pela comunidade acadêmica. Segundo o físico Paulo Artaxo, membro do Painel Intergovernamental de Mudanças Climáticas (IPCC), a iniciativa é a que foi mais longe em uma tendência mundial de tentar combater as mudanças climáticas com novas tecnologias de engenharia. "Existe um número muito grande de indústrias e financiadores particulares milionários que estimulam a realização destas pesquisas", afirma Artaxo. "Ainda não existem muitos experimentos práticos sendo planejados, mas acho que é só uma questão de tempo." O país com maior número de projetos, segundo o físico, é a Grã-Bretanha, seguida pelos EUA. Outras propostas cogitadas em congressos internacionais e feiras incluem a emissão de aerossóis na estratosfera e o posicionamento de espelhos gigantes na órbita terrestre – ações que, em tese, conteriam radiação solar para mitigar o aumento da temperatura na Terra. "Nenhuma das tecnologias apresentadas até hoje conseguiu lidar com os efeitos colaterais negativos. O projeto no Canadá foi o primeiro individual e sem autorização internacional. Esses experimentos não podem nem devem ser executados, pois são uma distorção científica", diz Artaxo. "Não há saída para a questão climática que não envolva a diminuição das emissões de gases poluentes na atmosfera." No País, não há registro de projetos do gênero em andamento. Mesmo assim, o especialista defende que o assunto seja monitorado pelo governo e a comunidade científica brasileira. "Devemos nos preparar para lidar com essa questão, pois possíveis experimentos de geoengenharia na Antártida, por exemplo, afetariam o País." Lucro A experiência no Canadá foi executada pela empresa Haida Salmon Restoration Corporation (HSRC), aliada ao empresário norte-americano Russ George, e despejou 100 toneladas de sulfato de ferro na costa oeste para a proliferação de plânctons ao longo de 10 quilômetros quadrados. Com o sequestro do CO2, o projeto pretende lucrar com o comércio de créditos de carbono. Paulo César de Abreu, do Instituto de Oceanografia da Universidade Federal do Rio Grande (Furg), diz que a técnica é chamada "hipótese do ferro" e existe desde o fim da década de 1980. "Foi constatado, porém, que o processo pode culminar na liberação de metano, o que causaria um problema ainda pior para a atmosfera", explica. "Não existe a proibição, mas há um consenso entre pesquisadores de que essa técnica não deveria ser feita em larga escala." Segundo ele, a Petrobrás consultou especialistas sobre a questão, mas foi aconselhado o cultivo controlado de plânctons em tanques para, posteriormente, serem introduzidos no mar. As informações são do jornal O Estado de S. Paulo. (http://www.estadao.com.br/noticias/geral,fertilizacao-de-oceano-reacendepolemica,950166,0.htm) 1) O projeto de "fertilização" do oceano reacendeu polêmica porque: a) Trata-se da maior ação do gênero posta em prática no mundo. b) Foi realizado na costa do Canadá, mas financiado por um milionário dos Estados Unidos. c) Tem a intenção de aumentar a flora local de plânctons no oceano Pacífico. d) Abre o perigoso precedente para outras experiências invasivas na natureza. e) Foi executada pela empresa Haida Salmon Restoration Corporation (HSRC) no arquipélago de Haida Gwaii. 2) No período “Com o sequestro do CO2, o projeto pretende lucrar com o comércio de créditos de carbono”, a expressão sequestro do CO2 está empregada com sentido de: a) Aumento de grandes quantidades de gás carbônico (CO2) atmosfera. b) Geração de grandes quantidades de gás carbônico (CO2) atmosfera. c) Absorção de grandes quantidades de gás carbônico (CO2) atmosfera. d) Produção de grandes quantidades de gás carbônico (CO2) atmosfera. e) Cultivo de grandes quantidades de gás carbônico (CO2) atmosfera. presentes na presentes na presentes na presentes na presentes na 3) Assinale a alternativa que contém o sinônimo apropriado para a palavra mitigar, empregada no período “Outras propostas cogitadas em congressos internacionais e feiras incluem a emissão de aerossóis na estratosfera e o posicionamento de espelhos gigantes na órbita terrestre – ações que, em tese, conteriam radiação solar para mitigar o aumento da temperatura na Terra”: a) b) c) d) e) Originar. Facilitar. Acrescentar. Diminuir. Desenvolver. 4) Assinale a alternativa que contém o antônimo apropriado para a palavra contumaz, empregada na oração: Plínio é um usuário contumaz das redes sociais. a) b) c) d) e) Flexível. Irredutível. Firme. Obstinado. Teimoso. 5) Assinale a alternativa cujo verbo está acentuado de forma correta, segundo a nova ortografia: a) b) c) d) e) Eles vêem (ver) o pôr do sol da janela do apartamento. Eles vem (vir) amanhã. Eles contém (conter) a multidão. Eles tem (ter) muita paciência. Eles detêm (deter) o poder naquela região. 6) Assinale a alternativa que apresenta grafia correta, segundo a nova ortografia: a) b) c) d) e) Superomem. Entressafra. Contra-regra. Aero-espacial. Micro-sistema. 7) Assinale a alternativa que apresenta o correto emprego da crase: a) b) c) d) e) Essa ideia me veio à cabeça ontem. Todos devem participar do seminário à partir de hoje. Devo viajar daqui à dois meses. Mariana entregou o livro à ela logo cedo. Levei os documentos à todos. 8) Assinale a alternativa que apresenta incorreção quanto à concordância verbal: a) b) c) d) e) Faz dez anos que estou afastado dos estudos. Dois mil reais é muito para esse tipo de produto. A maioria das pessoas viaja para a praia no feriado prolongado. Haviam sete pessoas na sala de espera. Aplicam-se vermífugos em animais domésticos. 9) Na frase “Um quê misterioso aqui me fala, / Aqui no coração” (Gonçalves Dias, Obras Poéticas, II, p. 27), a palavra grifada pertence à seguinte classe gramatical: a) b) c) d) e) Preposição. Substantivo. Conjunção. Interjeição. Pronome. 10) Assinale a alternativa correta em relação ao uso da vírgula: a) Felipe Teobaldo e mais de 100 voluntários, decidiram ficar 100 dias sem entrar no Facebook. b) Marcos, é um dos voluntários no projeto idealizado por Felipe. c) Beatriz, você ainda insiste na ideia de matricular o Leo no seminário? d) Compareceram ainda, pessoas da sociedade. e) O fato de que ele não compareceu à reunião, preocupou seus colegas. 11) Conforme disposto na Lei no 8.112/1990, o servidor público responde pelo exercício irregular de suas atribuições, podendo, pela prática de um determinado ato, ser responsabilizado: a) Civil, penal e administrativamente, afastando-se a responsabilidade administrativa no caso de absolvição criminal que negue a existência do fato ou sua autoria. b) Civil, penal e administrativamente, não cabendo cumulação das sanções. c) Civil, penal e administrativamente, sendo as sanções independentes entre si, salvo no caso de condenação criminal, que absorve as demais penalidades. d) Civil e administrativamente, aplicando-se a responsabilidade civil como decorrência da constatação da falta administrativa. e) Penal e administrativamente, afastando-se a responsabilidade administrativa no caso de absolvição criminal por insuficiência de provas. 12) É correto afirmar, em relação à Lei no 8.112/90, que dispõe sobre o Regime Jurídico dos Servidores Públicos Civis da União, das Autarquias e das Fundações, que: a) Suas disposições aplicam-se, também, aos servidores públicos civis dos Estados, do Distrito Federal e dos Municípios, bem como às respectivas autarquias e fundações. b) Servidor é a pessoa legalmente investida em emprego público. c) Cargo público é o conjunto de atribuições e responsabilidades previstas na estrutura organizacional que devem ser cometidas a um servidor. d) Os cargos públicos são acessíveis a todos os brasileiros e estrangeiros. e) É permitida a prestação de serviços gratuitos, salvo os casos previstos em lei. 13) Quanto às afirmativas abaixo: I. O servidor habilitado em concurso público e empossado em cargo de provimento efetivo adquire estabilidade no serviço público ao completar 2 (dois) anos de efetivo exercício. II. A investidura em cargo público ocorrerá com a posse. III. A nomeação para cargos em comissão depende de prévia habilitação em concurso público de provas ou de provas e títulos. IV. Exercício é o efetivo desempenho das atribuições do cargo. É correto o que está afirmado apenas em: a) II e IV. b) III e IV. c) I e II. d) I, III e IV. e) I, II e III. 14) A vacância do cargo público poderá se dar: a) Por ofício, no interesse da Administração. b) A pedido, a critério da Administração. c) Para acompanhamento de cônjuge ou companheiro, também servidor público civil ou militar, de qualquer dos Poderes da União, dos estados, do Distrito Federal e dos municípios, desde que o cônjuge ou companheiro tenha sido deslocado no interesse da Administração. d) Por motivo de saúde de servidor, cônjuge, companheiro ou dependente que viva às suas expensas e conste do seu assentamento funcional, condicionada à comprovação por junta médica oficial. e) Por motivo de readaptação. 15) A Lei no 8.112/90 dispõe que ao servidor público é proibido: a) Ausentar-se do serviço durante o expediente, com ou sem prévia autorização do chefe imediato. b) Retirar, com ou sem prévia anuência da autoridade competente, qualquer documento ou objeto da repartição. c) Promover manifestação de apreço ou desapreço no recinto da repartição. d) Manter sob sua chefia imediata, em cargo ou função de confiança, cônjuge, companheiro ou parente até o quarto grau civil. e) Participar de gerência ou administração de sociedade privada, personificada ou não personificada, exercer o comércio, inclusive na qualidade de acionista, cotista ou comanditário. 16) Considere a situação hipotética em que uma junta médica oficial tenha declarado insubsistentes os motivos da aposentadoria por invalidez de um servidor público federal. Com relação a essa situação hipotética, é correto afirmar que: a) A aposentadoria deverá ser mantida caso o cargo anteriormente ocupado pelo servidor já esteja provido. b) Tal declaração ensejará a reversão, ou seja, o retorno do servidor ao cargo que ele ocupava ou ao que resultou de sua transformação. c) O servidor deverá ser reintegrado ao cargo por ele anteriormente ocupado. d) A aposentadoria do servidor deverá ser mantida caso ele tenha sessenta anos de idade. e) O servidor deverá ser reconduzido ao cargo por ele anteriormente ocupado. 17) No que diz respeito à aposentadoria, assinale a opção correta de acordo com o regime jurídico único dos servidores públicos federais: a) O servidor será aposentado, compulsoriamente, aos setenta anos de idade com proventos integrais. b) O servidor aposentado por invalidez permanente, ainda que decorrente de acidente em serviço, receberá proventos proporcionais ao tempo de serviço. c) A aposentadoria por invalidez será precedida de licença para tratamento de saúde, por período não excedente a doze meses. d) O desempenho de mandato eletivo federal, estadual ou municipal não será contado para fins de aposentadoria do servidor. e) O servidor poderá aposentar-se voluntariamente aos sessenta e cinco anos de idade, se homem, e aos sessenta, se mulher, com proventos proporcionais ao tempo de serviço. 18) Conforme a Lei no 8.112/90, que trata do regime jurídico dos servidores públicos federais, a penalidade aplicável e a conduta descrita estão corretamente relacionadas em: a) Suspensão ao servidor que recusar fé a documentos públicos. b) Advertência ao servidor que opuser resistência injustificada ao andamento de documento e processo ou execução de serviço. c) Advertência ao servidor que, injustificadamente, recusar-se a ser submetido à inspeção médica determinada pela autoridade competente. d) Suspensão para inassiduidade habitual do servidor. e) Suspensão para revelação de segredo obtido em razão do cargo. 19) Um servidor que, no interesse do serviço, passa a ter exercício em nova sede, com mudança de domicílio em caráter permanente, deve perceber, para custear suas despesas de instalação, a) Indenização de transporte. b) Adicional pela prestação de serviço extraordinário. c) Diária. d) Vencimento básico. e) Ajuda de custo. 20) São direitos deferidos aos servidores públicos federais, além do vencimento e das vantagens, conforme requisitos estabelecidos em lei, exceto: a) Adicional pelo exercício de atividades insalubres, perigosas ou penosas. b) Fundo de garantia do tempo de serviço. c) Adicional noturno. d) Gratificação natalina. e) Gratificação por encargo de curso ou concurso. PARTE B – CONHECIMENTOS ESPECÍFICOS 21) Na programação orientada a objetos, a herança simples pode ser usada para estender comportamento. No entanto, ela possui algumas limitações: I. Com herança, só é possível estender comportamento em tempo de compilação. Não é possível estender comportamento em tempo de execução; II. A interface do comportamento estendido deve ser mantida. Em outras palavras, a assinatura dos métodos correspondentes ao comportamento de uma classe deve ser a mesma nas subclasses que estendem esse comportamento. Não é possível, por exemplo, adicionar um parâmetro ou modificar o tipo de retorno de um método referente ao comportamento estendido; III. Com herança simples, caso exista um grande número de extensões independentes de comportamento, seria necessário um número ainda maior de subclasses para cobrir todas as combinações possíveis, o que é pouco prático; e IV. Na herança, todas as instâncias da subclasse tem obrigatoriamente seu comportamento estendido. Não é possível fazer com que apenas algumas instâncias tenham o comportamento estendido sem criar uma outra subclasse. Uma alternativa à herança para extensão de comportamento é o padrão de projeto Decorador (em inglês, Decorator), cuja estrutura é exemplificada no diagrama de classes a seguir: Quais das limitações anteriores podem ser superadas com o uso do padrão Decorador? a) Apenas as limitações I e IV. b) Apenas as limitações I, II e IV. c) Apenas as limitações II e III. d) Apenas as limitações I, III e IV. e) As limitações I, II, III e IV. 22) O padrão de projeto “Fábrica Abstrata” (Abstract Factory, em inglês) facilita a criação de famílias de objetos (ou produtos) relacionados entre si. Uma possível estrutura para sua implementação, mais tradicional, sugere o uso de vários “Métodos Fábrica” (Factory Method, em inglês), um para cada tipo de produto. No entanto, existe a possibilidade de uma implementação alternativa, com um único “Método Fábrica” universal para todos os tipos de produtos, onde o tipo do produto é especificado via parâmetro do método. O diagrama abaixo ilustra essa alternativa: Considerando os seguintes cenários, que são independentes entre si: I. Existem poucos produtos (três ou quatro) em cada família. II. A implementação será realizada em uma linguagem estaticamente tipada, como C++ ou Java, mas todos os tipos de produtos são suficientemente parecidos, de modo que é possível criar uma única superclasse abstrata da qual todo produto concreto é descendente. III. Existem centenas de tipos de produtos em cada família. IV. As características e o número de produtos são praticamente constantes ao longo do ciclo de vida do software. V. A implementação será realizada em uma linguagem dinamicamente tipada, como Smalltalk ou Javascript. VI. Novos tipos de produtos são adicionados frequentemente à fábrica, ao longo do ciclo de vida do software. Quais dos cenários acima (que são independentes entre si) apresentam fatos que justificam de alguma forma a escolha da alternativa descrita no diagrama, ao invés da estrutura tradicional com vários “Métodos Fábrica”? a) b) c) d) e) Apenas os cenários I, IV e V. Apenas os cenários II, III, IV e V. Apenas os cenários I, III, IV e VI. Apenas os cenários II, III, V e VI. Apenas os cenários I, II e IV. 23) Considere um exemplo de aplicação web simples onde o usuário precisa adivinhar um número sorteado, e que funciona da seguinte forma: na página inicial (adivinha.jsp), o usuário digita um número qualquer. Em seguida, é exibida uma página de confirmação (confirma.jsp) com o número digitado, na qual o usuário pode alterar o número antes de enviar ou cancelar o envio. Caso envie o número, é exibida uma página de resposta (resposta.jsp), informando se o número foi adivinhado corretamente ou não. Caso, na página de confirmação, o usuário opte por cancelar, qualquer alteração que tenha sido feita deve ser descartada, e o valor digitado originalmente deve ser exibido na página “adivinha.jsp”. A figura a seguir ilustra esse funcionamento: Considere ainda que para essa implementação, deve ser utilizado o framework JSF, e as seguintes configurações: - Um bean gerenciado (managed bean, em inglês) deve ser usado para armazenar o número digitado pelo usuário; - O bean gerenciado deve ser configurado para escopo de sessão; - O bean gerenciado deve ser associado à caixa de texto nas páginas “adivinha.jsp” e “confirma.jsp” por meio do atributo “value” dos respectivos componentes “inputText”; e - A navegação entre as páginas descrita na figura acima está definida corretamente no arquivo de configuração (e.g. faces-config.xml). Qual das afirmações abaixo está correta, com relação ao uso de JSF na implementação do funcionamento correto do botão “Cancelar”? a) Não é possível realizar esse tipo de funcionamento no JSF com as configurações acima, já que conforme o seu ciclo de vida, todo bean gerenciado que fica associado a um componente de interface é sempre atualizado a cada requisição de página. b) Basta adicionar a propriedade “immediate=’true’” no componente “commandButton” referente ao botão “Cancelar”. c) Basta adicionar a propriedade “immediate=’true’” no componente “commandButton”, referente ao botão “Cancelar”, e a propriedade “immediate=’true’” no componente “inputText” referente à caixa de texto da página “confirma.jsp”. d) Basta adicionar a propriedade “binding=’false’” no componente “inputText” referente à caixa de texto da página “confirma.jsp”. e) A única maneira é utilizar duas propriedades diferentes no bean gerenciado, uma para o valor digitado inicialmente, e outra para o valor digitado na confirmação. 24) Considere o diagrama de classes UML a seguir: Considere também os seguintes trechos de código Java com anotações JPA (obs: assuma que todas as declarações imports estão corretamente definidas, e que as classes têm os atributos e métodos auxiliares, como setters e getters, definidos corretamente, conforme requisitos da especificação JPA para entidades persistentes): @1 public class Sprite implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private int x, y; private String img; @2 private List<Component> comps; // ... setters e getters, // serialVersionUID, etc ... } @Entity public class Control extends Component implements Serializable { private boolean analog; private boolean dualCtrls; // ... setters e getters, // serialVersionUID, etc ... } @3 public abstract class Component implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String name; private int priority; @4 private Sprite spr; // ... setters e getters, // serialVersionUID, etc ... } @Entity public class Movement extends Component implements Serializable { private double angle private double velocity; // ... setters e getters, // serialVersionUID, etc ... } Considere ainda as seguintes anotações: A1=@Entity A2=@MappedSuperclass A3=@OneToMany A4=@OneToMany(mappedBy="spr") A5=@ManyToOne A6=@ManyToOne(mappedBy="comps") A7=@Column(nullable=false) A8=@JoinColumn(nullable=false) Qual das alternativas a seguir representa a substituição correta dos locais marcados com "@1", "@2", "@3" e "@4" pelas anotações acima, de forma a implementar a persistência conforme a especificação do diagrama de classes apresentado? a) b) c) d) e) @1=A1, @2=A4, @3=A2, @4=A5 @1=A1, @2=A3+A8, @3=A1, @4=A6+A8 @1=A1, @2=A3, @3=A1, @4=A5 @1=A1, @2=A4+A7, @3=A2, @4=A5+A7 @1=A1, @2=A4, @3=A1, @4=A5+A8 25) Considere o seguinte trecho de código em C#, que simula a execução de um escalonador de tarefas simples: interface Task { void Run(); } class TaskScheduler { public Task[] Tasks; private int NextTask; public int GetNextTask () { return NextTask; } public void SetNextTask (int p) { this.NextTask = p; } public Task GetCurrentTask () { return Tasks [NextTask]; } } class MainClass { public static void Main (string[] args) { var numTasks = 10; var ts = new TaskScheduler { NextTask = 0, Tasks = new Task[numTasks] }; while (true) { Task t = ts.GetCurrentTask(); t.Run(); int currentTask = ts.GetNextTask(); currentTask ++; if(currentTask >= ts.Tasks.Length) currentTask = 0; ts.SetNextTask(currentTask); } } } Considere também as seguintes modificações no código: M1. Mover a lógica de rodízio, que atualmente está implementada no método “Main” da classe “MainClass” para dentro de um método “Schedule” na própria classe “MainClass”. M2. Transformar o atributo “Tasks” da classe “TaskScheduler” de “public” para “private”. M3. Transformar o atributo “NextTask” da classe “TaskScheduler” de “private” para “public”. M4. Adicionar um construtor à classe “TaskScheduler”, que recebe como parâmetro o número de tarefas e inicializa o vetor de tarefas “Tasks”. Modificar o método “Main” da classe “MainClass” para utilizar esse construtor ao criar a instância “ts”. M5. Transformar os métodos “SetNextTask” e “GetNextTask” de “public” para “private”. M6. Adicionar um método na classe “TaskScheduler” que recebe como parâmetro um objeto do tipo “Task” e o adiciona ao vetor de tarefas “Tasks”. Utilizar esse método na classe “MainClass” para adicionar tarefas ao escalonador. M7. Mover a lógica de rodízio, que atualmente está implementada na classe “MainClass” para dentro do método “GetCurrentTask” da classe “TaskScheduler”. M8. Adicionar um construtor à classe “MainClass” , que recebe como parâmetro o número de tarefas e inicializa o vetor de tarefas “Tasks”. Modificar o método “Main” da classe “MainClass” para utilizar esse construtor e criar uma instância de “MainClass”. M9. Remover os métodos “SetNextTask” e “GetCurrentTask” da classe “TaskScheduler”. Qual das alternativas abaixo descreve um conjunto de modificações que, quando realizadas em conjunto, resulta em um código onde os princípios da orientação a objetos são mais bem aplicados? a) b) c) d) e) M2, M4, M5, M6 e M7 M2, M4, M6, M7 e M9 M2, M6, M7 e M9 M1, M3, M5 e M8 M1, M3, M6, M7 e M9 26) Suponha que você esteja desenvolvendo uma aplicação de e-commerce para Web, e precisa implementar uma funcionalidade do tipo “carrinho de compras”, isto é, o usuário, ao navegar pelas páginas, pode adicionar produtos ao carrinho. A aplicação precisa ter a capacidade de “lembrar” quais são os produtos que estão no carrinho de um usuário enquanto este navega pelas diversas páginas da aplicação, sem que este precise se identificar em toda página. As informações do carrinho devem ser mantidas mesmo após o usuário fechar o navegador e ficar sem entrar na aplicação por vários dias. Ou seja, ao entrar na aplicação novamente depois de vários dias sem acessá-la, o carrinho de compras deve estar no mesmo estado em que foi deixado na última vez que o usuário acessou a aplicação. Além disso, por uma questão de segurança, as informações de login (nome de usuário e senha) não podem trafegar frequentemente pela rede, a cada requisição. Qual das seguintes estratégias é adequada para implementar os requisitos descritos acima? a) Apenas as informações sobre os produtos e carrinho de compras ficam armazenadas no banco de dados. A cada requisição HTTP, a aplicação identifica o usuário pelo endereço da requisição, e as informações do carrinho de compras são armazenadas e/ou recuperadas do banco de dados. b) Apenas as informações sobre os produtos e usuários ficam armazenadas no banco de dados. Informações de login e carrinho de compras ficam armazenadas na sessão HTTP. A cada requisição HTTP as informações sobre o carrinho de compras são armazenadas e/ou recuperadas da sessão HTTP. c) As informações sobre os produtos, usuários e carrinho de compras ficam armazenadas no banco de dados. Nenhuma informação fica na sessão HTTP, e a cada requisição HTTP as informações sobre o usuário, produtos e carrinho de compras são recuperadas do banco de dados. d) Apenas as informações sobre os produtos e usuários ficam armazenadas no banco de dados. Informações de login, lista de todos os produtos e o carrinho de compras ficam armazenadas na sessão HTTP. A cada requisição HTTP as informações sobre o carrinho de compras são armazenadas e/ou recuperadas da sessão HTTP. e) As informações sobre os produtos, usuários e carrinho de compras ficam armazenadas no banco de dados. Apenas as informações de login ficam na sessão HTTP, e a cada requisição HTTP as informações sobre o carrinho de compras são armazenadas e/ou recuperadas do banco de dados. 27) Considere os seguintes conceitos inerentes à programação orientada a serviços: C1. SOAP C2. WSDL – Web Services Description Language C3. REST – REpresentational State Transfer C4. JSON – JavaScript Object Notation Considere também as quatro definições a seguir: D1. Formato leve, baseado em convenções da família C de linguagens, para intercâmbio de dados. D2. Protocolo leve, baseado em XML, projetado para a troca de informações estruturadas em um ambiente descentralizado e distribuído. D3. Formato baseado em XML para a definição de interfaces. D4. Estilo arquitetural originalmente proposto para a construção de sistemas hipermídia distribuídos. Qual das alternativas abaixo estabelece corretamente a relação entre os conceitos e as definições acima? a) b) c) d) e) C1=D2, C2=D3, C3=D4, C4=D1 C1=D1, C2=D3, C3=D4, C4=D2 C1=D3, C2=D1, C3=D4, C4=D2 C1=D4, C2=D1, C3=D1, C4=D2 C1=D2, C2=D3, C3=D1, C4=D4 28) O que é impresso pelo programa em C a seguir ? #include <stdio.h> int main() { int val = 2; int x[3] = { 1,3,5 }; troca(&val, x[0]); troca(&x[0], x[1]); troca(&val, x[val]); printf("%d,%d,%d,%d",val,x[0],x[1],x[2]); } void troca(int *a, int b) { int aux; aux = *a; *a = b; b = aux; } a) b) c) d) e) 3 2 2 2 1 3 3 2 1 1 3 1 2 3 1 5 5 2 5 5 29) Considere o seguinte código em Java: public class Principal { public static void main (String a[]) { new Principal().executar(); } void executar() { for (int i = 0; i < 5; i++) { new Produtor().start(); new Consumidor().start(); } } class Buffer { int[] array = new int[10]; int elementos = 0; synchronized boolean estaCheio() { return elementos == 10; } synchronized boolean estaVazio() { return elementos == 0; } synchronized void armazenar(int x) { array[elementos++] = x; } synchronized int remover() { return array[--elementos]; } } Buffer buffer = new Buffer(); final Object semaforo = new Object(); class Produtor extends Thread { private int produzir(int valor) { return valor; } @Override public void run() { for (int i = 0; i < 1000; i++) { int x = produzir(i); synchronized (semaforo) { while(buffer.estaCheio()) {} buffer.armazenar(x); semaforo.notifyAll(); } } } } class Consumidor extends Thread { private void consumir(int valor) { System.out.println("Cons: " + valor); } @Override public void run() { for (int i = 0; i < 1000; i++) { int x = 0; synchronized (semaforo) { while (buffer.estaVazio()){} x = buffer.remover(); semaforo.notifyAll(); } consumir(x); } } } } Considere também quatro possibilidades de ocorrência, definidas neste contexto da seguinte forma: Overflow: quando o vetor “array” possui dez elementos armazenados, ou seja, “elementos” possui o valor 10, e o método “armazenar” é chamado mesmo assim, causando um problema de acesso acima do índice máximo no vetor “array” (java.lang.ArrayIndexOutOfBoundsException); Underflow: quando o vetor “array” está vazio, ou seja, “elementos” possui o valor 0, e o método “remover” é chamado mesmo assim, causando um problema de acesso com índice negativo no vetor “array” (java.lang.ArrayIndexOutOfBoundsException); Deadlock: quando pelo menos uma thread fica parada, sem executar, em uma espera infinita; Loop infinito: quando pelo menos uma thread fica executando um determinado trecho de código infinitamente; e Exceção: quando a exceção “java.lang.IllegalMonitorStateException” é lançada durante a execução. Quais das possibilidades acima podem ocorrer durante a execução da classe “Principal”? a) b) c) d) e) Pode ocorrer Deadlock e/ou Loop infinito. Pode ocorrer Overflow e/ou Underflow e/ou Loop infinito. Somente Loop infinito pode ocorrer. Somente Deadlock pode ocorrer. Somente Exceção pode ocorrer. 30) No desenvolvimento para a plataforma Android, é necessário especificar um arquivo de configurações com algumas informações sobre a aplicação. O código abaixo mostra um trecho desse arquivo, chamado AndroidManifest.xml: 1: <manifest xmlns:android="http://schemas.android.com/apk/res/android" 2: package="br.com.exemplo" 3: android:versionCode="1" 4: android:versionName="1.0" > 5: 6: <uses-sdk 7: android:minSdkVersion="8" 8: android:targetSdkVersion="15" /> ... 25: </manifest> No exemplo acima, as linhas 7 e 8 (em destaque) especificam as seguintes propriedades: android.minSdkVersion: A versão mínima da API Android que um dispositivo deve possuir para conseguir executar a aplicação android.targetSdkVersion: A versão alvo da API Android para a qual a aplicação foi especificamente compilada Além de configurar o arquivo acima corretamente, o que o desenvolvedor precisa fazer para que uma aplicação funcione da melhor forma possível em diversos dispositivos? a) Nada, pois a configuração acima é suficiente para que a aplicação sempre funcione da melhor forma possível em qualquer dispositivo. b) Precisa incluir, no código de inicialização da aplicação, uma verificação para determinar a versão da API do dispositivo e interromper a execução caso seja menor do que a versão mínima exigida. c) Precisa testar a aplicação em todas as versões entre a mínima e alvo, para garantir o máximo de compatibilidade possível. d) Precisa incluir, no código de inicialização da aplicação, uma verificação para determinar a versão do dispositivo e interromper a execução caso seja menor do que a versão mínima ou maior do que a versão alvo. e) Precisa testar a aplicação em todas as versões menores do que a mínima, para garantir o máximo de compatibilidade possível. 31) Considere um interpretador Prolog onde o mecanismo de resolução SLD implementado utiliza: - Estratégia de busca: em profundidade com backtracking - Regra de computação: literal mais à esquerda é avaliado primeiro Considere ainda o seguinte programa escrito em Prolog: veiculo(harley). veiculo(monza). veiculo(scania). numRodas(harley, 2). numRodas(monza, 4). numRodas(caravan, 4). numRodas(scania, 16). carroPasseio(A) :- veiculo(A), numRodas(A, 4). parecidos(A, B) :- carroPasseio(A), carroPasseio(B). Considere também duas consultas submetidas ao interpretador Prolog com as características descritas acima: Q1: ?- parecidos(X,caravan). Q2: ?- parecidos(caravan,X). Nessas condições, qual das alternativas abaixo contém apenas afirmações verdadeiras? a) Ocorre um erro (exceção) durante a execução, tanto de Q1 como Q2. b) Tanto Q1 como Q2 geram a resposta "X=monza;X=caravan.". No entanto, Q1 encontra a resposta em menos passos do que Q2. c) Tanto Q1 como Q2 geram a resposta "X=monza.". Ambas as consultas encontram a resposta com o mesmo número de passos. d) Ocorre um erro (exceção) durante a execução de Q1. Q2 gera a resposta "false.". e) Tanto Q1 como Q2 geram a resposta "false.". No entanto, Q2 encontra a resposta em menos passos do que Q1. 32) Qual o resultado da execução do seguinte programa escrito em LISP? (defun segredo (var1 var2) (cond ((null var1) 0) ((null var2) 0) (t (+ (* (car var1) (car var2)) (segredo (cdr var1) (cdr var2)))))) (segredo '(1 2 1) '(4 2 3)) a) b) c) d) e) 36 80 26 11 0 33) O que faz o trecho de código C a seguir? ... #define N 100 ... int main() { int i,j,a; int v[100]; ... for(i=0;i<N-1;i++) for(j=i+1;j<N;j++) if(v[j]<v[i]) { a=v[i]; v[i]=v[j]; v[j]=a; } ... } a) b) c) d) e) Atribui à variável a o valor do maior elemento de um vetor. Calcula a média dos elementos de uma estrutura vetorial. Ordena os elementos de um vetor de forma crescente. Inverte os elementos de uma estrutura vetorial. Localiza os menores elementos de uma matriz. 34) Qual é a ação realizada pelo trecho de código C a seguir? #define N 100 ... int main() { int i,j,k; int a[N][N], b[N][N], c[N][N]; ... for(i=0;i<N;i++) for(j=0;j<N;j++) { c[i][j]=0; for(k=0;k<N;k++) c[i][j]=c[i][j]+a[i][k]*b[k][j]; } … } a) b) c) d) e) Calcula a média dos valores dos elementos de uma estrutura bidimensional. Multiplica duas matrizes, salvando o resultado numa terceira matriz. Soma os elementos de duas matrizes. Zera os elementos da matriz c e soma os elementos de a e b. Calcula o somatório dos elementos de duas estruturas bidimensionais. 35) Considere o trecho de script de shell apresentado a seguir e assinale a alternativa INCORRETA: #!/bin/bash PRG="$0" PRGDIR=`dirname "$PRG"` EXECUTABLE=catalina.sh if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then exit 1 fi exec "$PRGDIR"/"$EXECUTABLE" start "$@" a) O comando “PRGDIR/EXECUTABLE” é executado no fim do script. b) O nome do arquivo usado para a chamada do script determina o diretório onde está o arquivo a executar. c) O script termina se o arquivo catalina.sh não existir no diretório onde está armazenado este script . d) O script termina se o usuário atual não tiver permissão de executar o script catalina.sh. e) O script deve ser interpretado por um shell bash. 36) Em sistemas Linux/Unix, informações sobre os processos em execução podem ser obtidas com o comando ps, como exemplificado a seguir: $ ps l F UID PID PPID PRI 0 501 19184 19183 15 0 501 19219 19184 17 0 501 19221 19184 17 0 501 19223 19184 17 NI 0 0 0 0 VSZ 84072 58908 37215 63516 RSS 2632 516 516 860 WCHAN wait - STAT Ss S S R+ TTY TIME COMMAND pts/0 0:00 -bash pts/0 0:00 prog1 pts/0 0:00 prog2 pts/0 0:00 ps l Considerando o cenário apresentado, indique a alternativa a seguir que teria o efeito de encerrar (interromper, terminar ou matar) a execução do processo prog1, que não capturou, ignorou ou bloqueou qualquer sinal: a) b) c) d) e) $ kill –SIGSTOP 19184 $ kill –SIGCHLD 501 $ signal –9 58908 $ signal –SIGKILL 19223 $ kill 19219 37) Em sistemas Linux/Unix, processos servidores podem ser configurados para ativação automática como serviços, em diferentes níveis de execução. Sobre esses serviços, é INCORRETO afirmar que: a) Scripts de shell são comumente usados para controle da ativação e do encerramento da execução de serviços. b) O processo init é, normalmente, responsável por controlar os serviços que serão ativados e encerrados em cada nível de execução. c) Processos servidores podem ser ativados para execução com privilégios associados a contas de usuários específicos, restringindo os diretórios que podem modificar. d) Diferentes níveis de prioridade associados aos scripts de controle dos serviços servem para indicar os usuários autorizados a executar esses scripts. e) O envio de sinais pode ser usado para terminar ou parar a execução de processos associados aos serviços. 38) Sobre a comunicação na Internet, com WWW, é INCORRETO afirmar que: a) Protocolos de comunicação padronizados permitem interações entre sistemas heterogêneos, como diferentes tipos de sistemas operacionais. b) A comunicação entre processos clientes e servidores pode ocorrer através de requisições de arquivos gerados estática ou dinamicamente. c) Interações entre nós clientes e servidores podem ocorrer através de requisições baseadas no protocolo HTTP ou através de serviços e interfaces específicas. d) Comunicações entre clientes e servidores requerem criações de páginas específicas para diferentes tipos de navegadores WWW e sistemas operacionais. e) Linguagens de marcação permitem definir o formato das transferências de informações entre clientes e servidores, que podem ocorrer também através de outros formatos de documentos, como JSON. 39) Sobre direitos de acesso em sistemas Linux/Unix, é INCORRETO afirmar que: a) Arquivos e diretórios estão associados ao identificador de um usuário e de um grupo. b) Permissões ao sistema de arquivos podem ser atribuídas ao dono de um arquivo ou diretório, ao grupo associado a esse arquivo ou diretório e aos demais usuários. c) Permissões a arquivos indicam direito de leitura (r), escrita (w) e execução (x). d) Permissões de diretórios indicam privilégios para listar conteúdos, alterar informações de diretório e dos seus arquivos, e para tornar esse diretório o diretório corrente. e) O usuário root, com identificador 1, tem privilégio de acesso sobre todo o sistema de arquivos. 40) Sobre a interação entre sistemas Linux e Windows, é INCORRETO afirmar que: a) Sistemas de arquivos em sistemas Windows podem ser compartilhados com clientes Linux. b) Recursos, como impressoras e diretórios de um sistema de arquivos, de sistemas Linux podem ser exportados para computadores clientes com sistemas Windows. c) Compartilhamentos entre sistemas Windows e Linux ocorrem apenas para diretórios sem restrição de senha de acesso, já que não há usuários comuns entre as plataformas. d) O compartilhamento de áreas de usuários pode ser baseado em um servidor comum que forneça identificadores para os usuários de ambas as plataformas. e) O pacote samba oferece recursos para que sistemas Linux atuem como provedores ou clientes para interação com sistemas Windows. 41) Considerando o software Apache para sistemas Linux, é INCORRETO afirmar que: a) O conceito de host virtual (VirtualHost) permite associar nomes de domínio DNS ou endereços IP a estruturas de páginas diferentes. b) Configurações de timeouts permitem definir o tempo de resposta às requisições dos navegadores clientes solicitantes. c) Módulos de software permitem o carregamento de diferentes funcionalidades e a extensão dos recursos providos por um servidor. d) Configurações do número de processos e threads em uso e em espera permitem ajustar a escalabilidade de um servidor. e) Ajustes de configuração permitem limitar permissões e recursos por diretórios servidos e fornecer acesso a diretórios nas áreas de usuários. 42) Considere o script de shell apresentado a seguir e indique a alternativa CORRETA: #!/bin/bash SRC=/var/log DST=/local/backup for arq in `ls $SRC/*.log`; do gzip -c $arq > $DST/`basename $arq`.gz done a) O script gera uma cópia compactada de todos os arquivos com a extensão .log de um diretório em outro. b) O script realiza uma cópia de todos os arquivos do diretório SRC para o diretório DST. c) O script realiza a compactação do arquivo arq, copiando-o para o diretório /local/backup/basename. d) O script descompacta os arquivos do diretório /var/log que forem maiores que os similares do diretório /local/backup. e) O script compacta os arquivos maiores que um tamanho base do diretório destino. 43) Conforme notação do Diagrama Entidade-Relacionamento (DER) apresentada na Figura a seguir e empregada para especificar restrições estruturais em tipos de relacionamento no Modelo de Dados EntidadeRelacionamento, podemos afirmar que: a) A entidade e1 em E que exerce o papel p1 em R está sujeita à seguinte restrição: e1 deve participar em no mínimo 1 e no máximo N instâncias de relacionamento r em R; b) A entidade e1 em E que exerce o papel p1 em R está sujeita à seguinte restrição: e1 pode participar em alguma instância de relacionamento r em R e, se participar, poderá participar em no máximo 1 instância de relacionamento r em R; c) A entidade e1 em E que exerce o papel p1 em R está sujeita à seguinte restrição: e1 deve, obrigatoriamente, participar em N instâncias de relacionamento r em R; d) A entidade e2 em E que exerce o papel p2 em R está sujeita à seguinte restrição: e2 deve, obrigatoriamente, participar em N instâncias de relacionamento r em R; e) A entidade e2 em E que exerce o papel p2 em R está sujeita à seguinte restrição: e2 deve participar em no mínimo 1 e no máximo N instâncias de relacionamento r em R. 44) Considere o esquema de relações, observando que nesta notação a chave primária da relação está grifada (sublinhada) Projeto(nroproj, nomeproj, depnum) TrabalhaEm(CPF,nroproj) Empregado(CPF, Nome, Sobrenome, dataNascimento) Considere a consulta em álgebra relacional para obter Resultado: Proj5 ← πnroproj(σdepnum=5(Projeto)) EmpProj ← πCPF,nroproj(TrabalhaEm) EmpProj5 ← EmpProj ÷ Proj5 Resultado ← πNome,Sobrenome(EmpProj5 * Empregado) Considere ainda que o operador DIVISION da álgebra relacional não está implementado em qualquer versão da linguagem SQL e que os operadores CONTAINS, EXCEPT, EXISTS E NOT EXISTS estão implementados em alguma versão da linguagem SQL. Analise as consultas SQL I, II e III, descritas a seguir, em relação à expressão de consulta em álgebra relacional sobre o esquema de relações apresentado. I) SELECT Nome, Sobrenome FROM Empregado WHERE ((SELECT TrabalhaEm.nroproj FROM TrabalhaEm WHERE Empregado.CPF=TrabalhaEm.CPF) CONTAINS (SELECT Projeto.nroproj FROM Projeto WHERE depnum=5)); II) SELECT Nome, Sobrenome FROM Empregado WHERE NOT EXISTS ((SELECT Projeto.nroproj FROM Projeto WHERE depnum=5) EXCEPT (SELECT TrabalhaEm.nroproj FROM TrabalhaEm WHERE Empregado.CPF=TrabalhaEm.CPF) ); III) SELECT Nome, Sobrenome FROM Empregado E WHERE NOT EXISTS (SELECT * FROM TrabalhaEm TE1 WHERE (TE1.nroproj IN (SELECT Projeto.nroproj FROM Projeto WHERE depnum=5)) AND EXISTS (SELECT * FROM TrabalhaEm TE2 WHERE TE2.CPF = TE1.CPF AND E2.nroproj=TE1.nroproj)); Pode-se afirmar que a expressão de consulta em álgebra relacional: a) É equivalente à consulta SQL em I; não é equivalente à consulta SQL em II; é equivalente à consulta o SQL em III. b) É equivalente à consulta SQL em I; é equivalente à consulta SQL em II; é equivalente à consulta SQL em III. c) Não é equivalente à consulta SQL em I; é equivalente à consulta SQL em II; é equivalente à consulta SQL em III. d) É equivalente à consulta SQL em I; é equivalente à consulta SQL em II; não é equivalente à consulta SQL em III. e) Não é equivalente à consulta SQL em I; não é equivalente à consulta SQL em II; não é equivalente à consulta SQL em III. 45) Em geral, muitas expressões de álgebra relacional distintas podem ser equivalentes entre si. Portanto, muitas árvores de consulta também podem ser equivalentes entre si, ou seja, elas podem corresponder à mesma consulta. Um processador de consulta típico de Sistemas Gerenciadores de Banco de Dados (SGBDs) gera uma árvore de consulta inicial para uma consulta SQL, sem considerar qualquer otimização. Um otimizador de consulta heurístico deve transformar a árvore inicial de consulta em uma árvore final de consulta que seja eficiente na execução e, para tanto, o otimizador deve incluir regras para equivalência entre expressões da álgebra relacional que possam ser aplicadas à árvore inicial. Observação: devido a dificuldades técnicas, nesta questão o símbolo |X| representa o operador Join da Álgebra Relacional. Considere o esquema de relações, observando que nesta notação a chave primária da relação está grifada (sublinhada) Projeto(nroproj, nomeproj, depnum) TrabalhaEm(CPF,nroproj) Empregado(CPF, Nome, Sobrenome, dataNascimento) e a consulta SQL SELECT Sobrenome FROM Empregado E, TrabalhaEm T, Projeto P WHERE P.nomeproj=’Aquario’ AND P.nroproj=T.nroproj AND T.CPF=E.CPF AND E.dataNascimento > ‘1962-12-31’ Identifique a alternativa em que a árvore de consulta é mais otimizada e equivalente a essa consulta SQL: a) b) c) d) e) 46) O modelo que tem sido utilizado para especificar regras ativas de banco de dados é referida como Evento-Condição-Ação, ou modelo ECA. No SGBD Oracle a criação de regras ativas é realizada através do comando CREATE TRIGGER. A sintaxe resumida para a especificação de triggers no SGBD Oracle é a seguinte: Seja o seguinte esquema de relações, onde a chave primária encontra-se grifada: e as seguintes triggers construídas sobre esse esquema: Supondo que a relação Departamento apresenta o seguinte estado inicial: A tabela a seguir apresenta três operações ocorridas sequencialmente no banco de dados nos tempos I, II e III. Observe que a cada operação realizada corresponde uma suposta alteração no estado da relação Departamento. Analise a tabela e assinale a alternativa correta: a) As situações retratadas em I e II estão corretas, pois a operação da situação I foi o evento disparador da trigger T2 e a operação da situação II foi o evento disparador da trigger T1, e os dados na Relação Departamento foram corretamente atualizados. b) As situações retratadas em II e III estão corretas, pois ambas as operações das situações II e III foram os eventos disparadores da trigger T2, e os dados na Relação Departamento foram corretamente atualizados. c) As situações retratadas em I, II e III estão corretas, pois a operação da situação I foi o evento disparador da trigger T1 e as operações das situações II e III foram os eventos disparadores da trigger T2, e os dados na Relação Departamento foram corretamente atualizados. d) As situações retratadas em I, II estão corretas, porém a situação retratada em III está incorreta. Pois, embora a operação da situação I tenha sido o evento disparador da trigger T1 e as operações das situações II e III tenham sido os eventos disparadores da trigger T2, porém os dados na Relação Departamento foram incorretamente atualizados na situação III. e) As situações retratadas em I, II estão corretas, porém a situação retratada em III está incorreta. Pois, embora a operação da situação I tenha sido o evento disparador da trigger T1 e as operações das situações II e III tenham sido os eventos disparadores da trigger T2, não há dados suficientes que permitam checar se os dados na Relação Departamento foram corretamente atualizados na situação III. 47) Sabendo-se que na linguagem C Operador pow(x,y) sqrt(x) % / Função Potenciação (xy) Radiciação ( ) Resto da divisão Quociente da divisão Assinale a alternativa que determina corretamente a impressão resultante da avaliação da expressão lógica na linguagem C: a) Impressão: FALSO b) Impressão: FALSO c) Impressão: FALSO d) Impressão: FALSO e) Impressão: FALSO 48) Uma árvore binária é um conjunto finito de elementos que está vazio ou é particionado em três subconjuntos disjuntos. O primeiro subconjunto contém um único elemento, chamado raiz da árvore. Os outros dois subconjuntos são, em si, árvores binárias, chamadas de subárvores esquerda e direita da árvore original. Cada elemento de uma árvore binária é chamado nó da árvore. Estas árvores podem ainda ser classificadas em: estritamente binária, binária completa ou binária quase completa, conforme Tenenbaum, Langsan e Augenstein. Considere as seguintes árvores binárias: (I) ( II ) a) A árvore (I) é uma árvore binária, porém, não é estritamente binária, a árvore (II) é uma árvore binária, porém, não é estritamente binária. b) A árvore (I) é uma árvore binária completa de profundidade 3, a árvore (II) é uma árvore binária completa de profundidade 3. c) A árvore (I) é uma árvore binária completa de profundidade 3, a árvore (II) é uma árvore binária quase completa de profundidade 3. d) A árvore (I) é uma árvore estritamente binária, a árvore (II) é uma árvore binária, porém, não é estritamente binária. e) A árvore (I) é uma árvore binária, porém, não é estritamente binária, a árvore (II) é uma árvore estritamente binária. 49) Considere as seguintes rotinas para percursos em árvores binárias especificadas em linguagem C. O parâmetro de cada rotina é um ponteiro para o nó raiz e está sendo utilizada a representação de nós dinâmicos para árvores binárias. (A) ( B) I II III Rotinas Função da rotina Percurso na Árvore Binária ( A ) Percurso na Árvore Binária ( B ) Função da rotina Percurso na Árvore Binária ( A ) Percurso na Árvore Binária ( B ) Função da rotina (A) (B) Percurso 1 Travessia em préordem ABDGCEHIF Percurso 2 Travessia em ordem DGBAHEICF Percurso 3 Travessia em pósordem GDBHIEFCA ABCEIFJDGHKL EICFJBGDKHLA IEJFCGKLHDBA Travessia em ordem ABDGCEHIF Travessia em préordem DGBAHEICF Travessia em pósordem GDBHIEFCA ABCEIFJDGHKL EICFJBGDKHLA IEJFCGKLHDBA Travessia em pósordem GDBHIEFCA ABCEIFJDGHKL Travessia em ordem ABDGCEHIF IEJFCGKLHDBA Travessia em préordem DGBAHEICF EICFJBGDKHLA Analise o Quadro acima e assinale a alternativa correta: a) O item I do quadro está correto quanto à correspondência entre as rotinas e suas funções; os respectivos percursos em ambas as árvores binárias estão corretas. b) O item I do quadro está correto quanto aos percursos gerados por cada rotina em ambas as árvores binárias, porém, está incorreto quanto à correspondência entre as rotinas e suas funções. c) O item II do quadro está correto quanto à correspondência entre as rotinas e suas funções; os respectivos percursos em ambas as árvores binárias estão corretas. d) O item II do quadro está correto quanto aos percursos gerados por cada rotina para a árvore binária (A), porém, está incorreto para a árvore binária (B). Está correto quanto à correspondência entre as rotinas e suas funções. e) O item III do quadro está correto quanto à correspondência entre as rotinas e suas funções; os respectivos percursos em ambas as árvores binárias estão corretas. 50) Considere os seguintes comandos especificados em linguagem C: Assinale a alternativa que expressa os valores impressos pelos comandos das linhas 6, 9 e 12, respectivamente. Observe que a mensagem erro é ilustrativa de algum comando errado, pois, na realidade não seria impressa essa mensagem. a) b) c) d) e) 3 erro ; 7 7; 5 7 3 3 ; erro erro; 5 erro 3 3 ; 7 7; 5 7 erro erro ; 7 7; erro 7 3 erro ; 7 erro; 5 erro 51) Qual é o uso principal de CSS no desenvolvimento de soluções Web? a) b) c) d) e) Para a edição de métodos de navegação. Para a seleção de itens de controle de acesso. Para exibição adequada de recursos da linguagem de marcação. Para garantir métodos de navegação segura. Para aumentar a eficiência no controle de versionamento. 52) A linguagem de marcação HTML5 é proposta para desenvolvimento de aplicações Web complexas, ainda pouco apoiadas pela sua antecessora HTML4. Indique a alternativa que não corresponde a características do HTML5. a) Facilita o uso de elementos com os ‘applets’, sem uso do CSS. b) Facilidade de manipulação de vídeo. c) Novas APIS para modelagem 2D. d) Permite código mais enxuto. e) Melhor apoio a aplicações multiplataformas e interplataformas em dispositivos móveis. 53) Na modelagem de sistemas com o foco no humano é frequente o uso da estratégia de definição de personas. Indique a seguir a declaração que melhor expressa o significado dessa estratégia. a) Personas ajudam a identificar melhor cada um dos membros do time de desenvolvimento da solução tecnológica. b) Para entender o significado do uso da tecnologia, é escolhido um certo usuário que então informa ao time de designers o que ele deseja para o sistema. Esse usuário é chamado de persona. c) Após a definição do design da aplicação, o time de desenvolvimento define quem idealmente será usuário daquela solução, que é a persona. d) Entendido o problema a ser resolvido pela aplicação tecnológica, é definida a persona - pessoa que tipicamente usaria essa solução, considerando o perfil médio de um grupo expressivo de usuários reais. e) A persona é escolhida entre os diversos usuários que atendem a sessão de entrevistas nas etapas de experimentação do protótipo funcional. 54) Uma estratégia de projeto eficiente para apoio à etapa de levantamento de requisitos, adotando os princípios de design focado no usuário propostos pela área de IHC, é: a) b) c) d) e) Definição de um diagrama de estados. Fazer um levantamento de requisitos não funcionais do sistema. Definir quais tecnologias seriam adotadas. Perceber a estrutura de dados que será disponibilizada para uso. Definir cenários para compreensão do uso das tecnologias. 55) Considerando a tendência à mobilidade das soluções tecnológicas e Web, novas naturezas de aplicações surgem para atender as diferentes plataformas hoje utilizadas, como mobiles, tablets, laptops ou desktops. A natureza das interfaces é repensada no conceito de design responsivo que se refere principalmente ao uso de: a) Recursos da Cloud para garantia que as aplicações tenham capacidade de armazenamento. b) HTML5 para a garantia da manipulação adequada das diversas mídias. c) Imagens de tamanho mínimo que não sobrecarregam as aplicações em diferentes plataformas. d) Conceito RIA para o bom desempenho das aplicações. e) Media Queries para detectar as características dos dispositivos, permitindo a personalização do layout para qualquer dispositivo. 56) Suponha que uma fábrica de software esteja desenvolvendo uma aplicação web para ser utilizada através da Internet. A aplicação deve mostrar informações sobre as movimentações da bolsa de valores em tempo real. Um dos requisitos dessa aplicação diz que “assim que uma nova movimentação na bolsa ocorre, a mesma deve ser exibida o mais rápido possível para o usuário sem que este precise solicitá-la por meio de interação com mouse ou teclado, e de preferência em poucos segundos. Uma mesma informação deve ser exibida de diferentes formas, gráficas e textuais, simultaneamente, e em diferentes páginas”. Para atender a esse requisito, um desenvolvedor que faz parte da equipe de desenvolvimento da fábrica sugere o uso do padrão MVC, pois o mesmo facilita a criação de software para visualização das informações de diferentes formas (gráficas, textuais, etc) e também o envio de dados referentes a uma mesma informação para uma ou mais visões. Basta fazer, por exemplo, com que as páginas HTML representem as Visões (V), que o banco de dados de movimentações da bolsa representem o Modelo (M), e que um conjunto de classes ou serviços representem o Controle (C). Considerando o cenário descrito, qual das seguintes afirmações descreve de forma mais completa o emprego do padrão MVC neste caso específico? a) O padrão MVC é um bom candidato para este cenário, pois seus objetivos são próximos aos do requisito sendo considerado, porém para ser utilizado ele precisa necessariamente ser adaptado para fazer com que toda interação seja iniciada de forma explícita pelo usuário. Dessa forma, a estrutura do MVC original seria modificada e o requisito não seria completamente atendido. b) O padrão MVC é um bom candidato para este cenário, pois seus objetivos são próximos aos do requisito sendo considerado, e pode ser utilizado com pouca ou nenhuma modificação significativa na estrutura MVC original, desde que haja alguma forma de simular o envio de informações do servidor para o cliente (navegador), como por exemplo uma biblioteca JavaScript que faz requisições constantemente para o servidor, ou o uso da tecnologia WebSocket. c) O padrão MVC não é adequado para este cenário, pois seus objetivos não tem relação nenhuma com o requisito sendo considerado. d) O padrão MVC seria adequado para este cenário, pois seus objetivos são próximos aos do requisito sendo considerado, mas somente se a aplicação não fosse utilizada através da Internet, e sim em um ambiente Desktop. Não é possível utilizar MVC em aplicações Web. e) O padrão MVC é um bom candidato para este cenário, pois seus objetivos são próximos aos do requisito sendo considerado, e pode ser utilizado sem nenhuma modificação na estrutura MVC original, utilizando somente HTML4 e páginas no servidor (PHP, ASP, JSP e similares). 57) Considere o seguinte trecho de código em Java: import java.util.*; abstract class Sujeito { private List<Observador> observadores; Sujeito() { observadores = new ArrayList<Observador>(); } void anexar(Observador o) { observadores.add(o); } void remover(Observador o) { observadores.remove(o); } } interface Observador { void atualizar(); } class Sensor extends Sujeito { int temperatura; int getTemperatura() { return temperatura; } void setTemperatura(int t) { temperatura = t; } } class MostradorSystemOut implements Observador { Sensor sensor; public void atualizar() { int t = sensor.getTemperatura(); System.out.println("Temperatura: "+t); } } Qual das alternativas descreve modificações no código acima que completam de forma adequada a implementação do padrão Observador (em inglês, Observer)? a) Mover o método “atualizar” da interface “Observador” para a classe “Sujeito”, e adicionar, dentro do corpo do método “anexar” da classe “Sujeito”, uma chamada para o método “atualizar”. b) Criar a assinatura de um método chamado “notificar” na interface “Observador”, e implementar o mesmo método na classe “MostradorSystemOut”, fazendo-o percorrer a lista de observadores chamando o método “atualizar” de cada observador. Inserir uma chamada a este método dentro do corpo do método “setTemperatura” da classe “Sensor”. c) Criar um método “notificar” na classe “Sensor”, que percorre a lista de observadores, fazendo a chamada do método “atualizar” de cada observador. Inserir uma chamada a este método dentro do método “setTemperatura” da classe “Sensor” . d) Modificar o corpo do método “setTemperatura” da classe “Sensor” para que este, depois de atualizar o atributo “temperatura”, percorra a lista de observadores, fazendo a chamada do método “atualizar” de cada observador. e) Criar um método “notificar” na classe “Sujeito”, que percorre a lista de observadores, fazendo a chamada do método “atualizar” de cada observador. Inserir uma chamada para esse método no final do corpo do método “setTemperatura” da classe “Sensor. 58) Observando a natureza dinâmica e interativa dos sistemas Web, percebe-se a necessidade de mudanças nos modelos de ciclo de vida de sistemas até então convencionais. Essa preocupação é expressa na proposta do modelo de ciclo de vida espiral para sistemas Web que, para garantir o design participativo, passa a incluir a etapa de: a) b) c) d) e) Geração de páginas teste. Análise da interação. Projeto de interface. Avaliação pelo usuário. Projeto navegacional. 59) Qual das alternativas abaixo melhor descreve o principal propósito e os benefícios de um framework de injeção de dependência, como PicoContainer, Spring ou Guice? a) Reduz o número de dependências em tempo de execução, melhorando o desempenho da aplicação. b) Aumenta a coesão das classes, facilitando a reutilização de software. c) Separa configuração do uso de serviços ou componentes, facilitando o desenvolvimento incremental, reutilização de software e execução de testes. d) Reduz o número de dependências em tempo de compilação, melhorando o desempenho do compilador. e) Diminui o acoplamento das classes, facilitando a reutilização e manutenção. 60) A tabela abaixo lista três estratégias conhecidas para mapeamento objetorelacional envolvendo herança entre entidades persistentes e algumas vantagens e desvantagens associadas a algumas delas: Estratégias E1. Tabela única para toda a estrutura hierárquica E2. Uma tabela para cada classe concreta E3. Uma tabela para cada classe Vantagens/desvantagens V1. Não desperdiça espaço, pois todas as colunas são preenchidas V2. Bom suporte para relações polimórficas V3. Bom desempenho em consultas envolvendo a hierarquia toda D1. Desperdício de espaço, pois resulta em colunas com valores nulos D2. Suporte fraco para relações polimórficas D3. Desempenho ruim em consultas envolvendo a hierarquia toda Qual das alternativas abaixo descreve corretamente a relação entre cada estratégia e suas vantagens/desvantagens? a) b) c) d) e) E1=(D1+V2+D3), E2=(V1+V2+V3), E3=(D1+D2+V3) E1=(V1+V2+D3), E2=(V1+V2+D3), E3=(D1+V2+V3) E1=(D1+D2+V3), E2=(V1+V2+V3), E3=(V1+D2+D3) E1=(D1+V2+V3), E2=(V1+D2+D3), E3=(V1+V2+D3) E1=(V1+V2+V3), E2=(D1+D2+D3), E3=(D1+V2+D3)