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)