Questões de Ciência da Computação do ano 2016

Lista completa de Questões de Ciência da Computação do ano 2016 para resolução totalmente grátis. Selecione os assuntos no filtro de questões e comece a resolver exercícios.

Em relação à linguagem SQL e à respectiva sintaxe, assinale a alternativa correta.

  • A. Os comandos select, update e delete admitem a cláusula from para determinar um predicado.
  • B. A seleção select distinct nome_loja, count(vendas) from loja group by nome_loja, em que loja é uma tabela, e nome_loja e vendas são atributos dessa tabela, não poderia ser executada em razão da cláusula group by.
  • C. O comando insert permite especificar apenas a inserção de uma tupla por vez.
  • D. A seleção select nome_loja from loja group by nome_loja, where max(avg(vendas))<=100, em que loja é uma tabela, e nome_loja e vendas são atributos dessa tabela, pode ser executada sem erros, caso venda seja um atributo do tipo numérico.
  • E. No operador like, os caracteres porcentagem (%) e sublinhado (_) podem ser combinados para realizar uma busca por substrings. Assim, por exemplo, a expressão “_%” permitirá a busca por qualquer string com, pelo menos, um caractere.

A respeito do backup de banco de dados, assinale a alternativa correta.

  • A. Sistemas remotos de backup para bancos de dados são de pouca eficiência, principalmente em razão da impossibilidade de realizar o controle de concorrência das transações em ambientes distintos, o que diminui as opções de implementação.
  • B. A realização de backups em bancos de dados distribuídos é complexa, pois devem ser criados controles adicionais manuais off-line de verificação das características Atomicidade, Consistência, Isolamento e Durabilidade (ACID).
  • C. A única alternativa para a obtenção de alta disponibilidade no backup de bancos de dados é executar o processamento das transações em um lugar primário e manter um local de backup secundário no mesmo endereço geográfico.
  • D. Se o log no backup remoto do banco de dados crescer muito, o tempo de recuperação pode se tornar indesejável. Assim, o local de backup remoto pode processar de tempos em tempos os registros de log e criar pontos de verificação que permitem apagar os registros de log já processados.
  • E. Como é impraticável para um sistema de backup remoto de banco de dados determinar o momento de falha do local primário, toda a transferência de controle para o local secundário deve ser realizada manualmente por uma equipe de monitoração e operação.

Um sistema de banco de dados está em deadlock se há um conjunto de transações, e toda a transação desse conjunto está esperando outra transação também nele contida. Com relação ao deadlock e às respectivas características, assinale a alternativa correta.

  • A. Após a detecção de deadlocks, deve-se utilizar o protocolo de prevenção de deadlocks para garantir o rollback das informações inconsistentes.
  • B. Para detectar deadlocks, o sistema deve manter um gráfico de espera e invocar periodicamente um algoritmo que verifique a existência de ciclos. Só há deadlock em um sistema se, e somente se, o gráfico de espera contiver um ciclo.
  • C. O protocolo de detecção de deadlock pode garantir que um sistema de banco de dados nunca entre em tal situação. Porém, este sempre necessitará realizar o rollback de dados caso alguma anomalia aconteça.
  • D. Em razão da facilidade de se prever todos os itens de dados em uma transação, que podem sofrer algum bloqueio, o deadlock é uma situação de controle e prevenção simples.
  • E. O tratamento de deadlocks pode ter por base o tempo esgotado para o bloqueio. Esse método, altamente assertivo, garante que todos os deadlocks sejam tratados em tempo adequado.

Conhecer as metodologias utilizadas por um compilador para a análise e síntese de um programa de computador pode ser muito útil para entender como um software funciona por dentro. Assim, atividades como a engenharia reversa podem ser mais facilmente entendidas e realizadas. A esse respeito, no que se refere aos programas de computadores e às fases de um compilador, assinale a alternativa correta.

  • A. As fases de análise sintática e semântica tratam da grande maioria dos erros detectáveis pelo compilador.
  • B. A fase de análise constrói o programa alvo desejado, com base nas respectivas representações intermediárias. É a fase que requer as técnicas mais especializadas.
  • C. Durante a análise sintática do programa fonte, o compilador procura encontrar as construções que possuam a estrutura sintática correta, sem se preocupar com o significado da operação envolvida.
  • D. A análise semântica, também chamada de análise gramatical, envolve o agrupamento dos tokens do programa fonte, no qual cada token representa uma sequência de caracteres logicamente coesa, em frases gramaticais que são usadas pelo computador, a fim de sintetizar a saída.
  • E. A fase final do compilador é a geração de código intermediário, na qual as alocações de memória são realizadas para cada uma das variáveis utilizadas pelo programa.

Acerca dos conceitos relacionados ao desenvolvimento seguro de aplicações, assinale a alternativa correta.

  • A. A responsabilidade de desenvolver aplicações seguras é dos desenvolvedores. Dessa forma, com treinamento adequado, todos os desenvolvedores podem encontrar vulnerabilidades no código e, assim, criar código seguro e resiliente.
  • B. Para que um software seja considerado seguro, é suficiente que possua certa resiliência, ou seja, que, ao ser intencionalmente forçado a falhar por agentes mal-intencionados, ele possa retornar ao seu estado inicial sem realizar operações não planejadas.
  • C. A fase de requisitos de software é de pouca ou nenhuma importância para a construção de software seguro, já que se concentra nos requisitos funcionais e não funcionais da aplicação. A responsabilidade de manter a segurança do software é do time de segurança da informação.
  • D. A aplicação de criptografia na informação gerenciada pela aplicação e o uso do SSL/TLS para a proteção da comunicação são suficientes para manter as aplicações web protegidas. Com essas medidas de proteção, ataques a aplicações como os descritos em guias como o OWASP Top 10 tornam-se secundários.
  • E. Um ciclo de desenvolvimento de software seguro é aquele em que atividades de segurança são aplicadas ao longo das etapas de requisitos, projeto, codificação, testes, operação e descarte. Essas atividades podem incluir revisão de segurança no projeto de arquitetura da aplicação e no respectivo código fonte, além de testes com foco em segurança, realizados pela equipe de garantia da qualidade.

A Runtime Application Self-Protection (RASP) é uma tecnologia acoplada a uma aplicação e que pode detectar e prevenir ataques, em tempo real, pela inspeção da pilha de execução de uma aplicação. Além disso, o Web Application Firewall (WAF) é um equipamento que inspeciona o tráfego HTTP em busca de problemas relacionados à requisição e resposta de aplicações web. A respeito das técnicas de defesa utilizadas em aplicações e do respectivo impacto no ciclo de desenvolvimento seguro de software, assinale a alternativa correta.

  • A. Medidas de proteção, como o RASP e WAF, são necessárias em razão da incapacidade dos desenvolvedores de produzir código livre de bugs de segurança, e são suficientes para reduzir a superfície de ataque das aplicações.
  • B. Vulnerabilidade ou falhas em aplicações são bugs que impactam a segurança do software. Desse modo, produzir aplicações livres de defeitos relacionados aos requisitos funcionais e não funcionais pode garantir que o software seja seguro.
  • C. A utilização de metodologia de validação de entrada e saída de dados com foco em segurança nas aplicações, se bem implementada, pode auxiliar na mitigação de ataques de injeção de comando como o Cross-Site Scripting (XSS) persistente, injeção SQL e injeção LDAP.
  • D. Equipamentos como o WAF e APIs de validação de entrada e saída estão sujeitos a ataques com strings ofuscadas e são medidas ineficientes de proteção das aplicações.
  • E. A proteção de dados de privacidade individuais é de baixa importância quando se fala de um ciclo de desenvolvimento de software seguro, pois essa abordagem está preocupada apenas com a mitigação de vulnerabilidades técnicas no código fonte de uma aplicação.

A proteção de dados de privacidade individuais é de baixa importância quando se fala de um ciclo de desenvolvimento de software seguro, pois essa abordagem está preocupada apenas com a mitigação de vulnerabilidades técnicas no código fonte de uma aplicação.

  • A. Com base na utilização de técnicas de debugging do código malicioso em memória, uma engenharia reversa atenciosa pode identificar entry points alternativos no arquivo executável e, com isso, realizar a respectiva análise de forma clara e direta, antes do programa malicioso iniciar a respectiva execução.
  • B. Como técnica de ofuscação, o desenvolvedor do programa malicioso pode inserir uma função de callback na Thread Local Storage (TLS) e executar uma decriptação ou, até mesmo, a identificação de debuggers antes da parada no entry point original identificado no cabeçalho PE do executável malicioso.
  • C. Mesmo utilizando otimizações de compilador, o código malicioso não consegue inserir chamadas, como JUMP ou CALL, que funcionem na área de dados do executável PE.
  • D. Valores inválidos no cabeçalho PE dificultam a execução dos executáveis maliciosos em ferramentas de debugging. Porém, utilizando técnicas de análise estática, será possível encontrar a informação necessária para identificar o comportamento nocivo do executável malicioso.
  • E. Arquivos DLL podem esconder código malicioso a ser utilizado por um executável perigoso. Apesar disso, DLLs só podem ser acessadas a partir do entry point original do cabeçalho PE do arquivo executável, o que facilita a análise do arquivo que utiliza essa técnica de ofuscação.

Quanto às técnicas de engenharia reversa de software e às respectivas características, assinale a alternativa correta.

  • A. A engenharia reversa é uma técnica aplicada quando se deseja realizar a refatoração do software, melhorando as respectivas estruturas internas e facilitando a leitura e a manutenibilidade do código.
  • B. Ao realizar a engenharia reversa de um arquivo bytecode, pode-se visualizar um código idêntico ao real, mantendo características como o nome e o tipo das variáveis, os comentários presentes nos arquivos originais, as respectivas estruturas de controle e de repetição e o relacionamento entre as classes, entre outros.
  • C. Caso sinta dificuldade para fazer com que um executável malicioso se execute em um ambiente de análise, um perito pode realizar a análise estática com base na engenharia reversa realizada por um disassembler. Assim, o perito poderá analisar o programa na linguagem utilizada para desenvolver o programa malicioso, sem prejuízo à respectiva estrutura.
  • D. A análise dinâmica de um software, também chamada de análise caixa-branca, está relacionada com a análise desse software no respectivo ambiente de execução e possibilita o maior conhecimento de todas as características dessa aplicação.
  • E. A análise estática do código gerado pela engenharia reversa, independentemente do tipo de código resultante, pode ser útil para encontrar funções escondidas e comportamentos não esperados de um programa. Porém, nem sempre o código gerado é idêntico ao código original.

Arquivos maliciosos podem armazenar trechos de código de forma escondida na área de dados de um arquivo executável, entre outras formas que eles encontram para se esconder. A respeito das técnicas de ofuscação utilizadas pelos arquivos maliciosos e dos conceitos correlatos, assinale a alternativa correta.

  • A. Quando um arquivo malicioso é descompactado, em geral cria-se um novo arquivo binário que não é idêntico ao original, mas que executa as mesmas tarefas maliciosas do original.
  • B. A cifra XOR é um tipo de cifra simples que significa OU exclusivo. Ela é implementada a partir de uma operação XOR lógica em um conjunto de bytes dinâmicos em texto claro do arquivo PE, utilizando um byte aleatório como chave e preservando o caractere nulo.
  • C. A técnica de cálculo de entropia para identificação de programas compactados tem base na característica organizada que os dados digitais assumem quando compactados. Essa técnica é utilizada pelas principais ferramentas de detecção de programas compactados.
  • D. Muitas vezes, quando se tenta descompactar um binário compactado ou criptografado manualmente, ele modifica o entry point no cabeçalho NT e o deixa sem possibilidade de execução.
  • E. Em alguns casos, pode ser mais simples a realização do dump da memória do código malicioso descompactado. Porém, não será mais possível executar novamente esse código malicioso para completar a análise dinâmica.

Técnicas de ofuscação de código são úteis para proteger a implementação do código-fonte contra agentes mal-intencionados. Isso é especialmente importante quando, por exemplo, deseja-se dificultar o acesso ao código Javascript que é transmitido para o lado cliente de uma aplicação web ou quando se deseja proteger aplicações executadas por interpretadores chamados máquinas virtuais. Acerca dos conceitos relativos às técnicas de proteção do código fonte, assinale a alternativa correta.

  • A. A ofuscação de código baseada em deslocamento de bits pode ser interpretada pelo interpretador ou compilador da linguagem de programação utilizada, sem prejuízo às respectivas funcionalidades.
  • B. A criptografia e ofuscação de código é uma técnica aplicada após a compilação do programa, modificando o binário original, com o objetivo de protegê-lo de técnicas de cracking. Assim, apesar de impedir a engenharia reversa com o alto nível de proteção, a técnica tem custo muito elevado e é pouco aplicada.
  • C. A criptografia e ofuscação de código é uma técnica aplicada após a compilação do programa, modificando o binário original, com o objetivo de protegê-lo de técnicas de cracking. Assim, apesar de impedir a engenharia reversa com o alto nível de proteção, a técnica tem custo muito elevado e é pouco aplicada.
  • D. Realizar a ofuscação do código geralmente tem um custo associado. Isso pode manifestar-se na forma de código maior, tempos de execução mais lentos ou consumo aumentado de memória em tempo de execução.
  • E. Técnicas de criptografia de código que utilizam chaves elípticas assimétricas são altamente sofisticadas e realizam uma proteção completa do código das aplicações, mas dependem de trocas de chaves constantes em pontos remotos para que o carregador da aplicação funcione corretamente. É muito utilizada em jogos on-line.
Provas e Concursos

O Provas e Concursos é um banco de dados de questões de concursos públicos organizadas por matéria, assunto, ano, banca organizadora, etc

{TITLE}

{CONTENT}

{TITLE}

{CONTENT}
Provas e Concursos
0%
Aguarde, enviando solicitação!

Aguarde, enviando solicitação...