Prévia do material em texto
Você acertou 10 de 10 questões
Verifique o seu desempenho e continue treinando!
Você pode refazer o exercício quantas vezes quiser.
Verificar Desempenho
A
B
C
D
E
1 Marcar para revisão
Técnicas formais para execução de testes e análise
de performance devem ser utilizadas para a garantia
da qualidade do produto. Alguns problemas comuns
estão relacionados ao tempo de resposta, outros ao
consumo de memória, e há ainda os fatores de
usabilidade do produto. Qual das alternativas define
um problema relacionado ao consumo de memória?
Memory leak
Deadlock
Promise rejection
Format exception
Starvation
Questão 1 de 10
Corretas (10)
Em branco (0)
1 2 3 4 5
6 7 8 9 10
Lista de exercícios Tópicos… Sair
A
B
Resposta correta
Parabéns, você selecionou a alternativa
correta. Confira o gabarito comentado!
Gabarito Comentado
O termo "memory leak" ou "vazamento de
memória" é um problema comum em diversos
aplicativos. Ele ocorre quando sucessivas
chamadas a determinados métodos resultam no
consumo de pequenos blocos de memória.
Esses blocos são alocados durante o
processamento, mas não são desalocados ao
final. Com o bloqueio gradativo das posições de
memória, o sistema se torna mais lento,
impactando diretamente na performance.
Portanto, o "memory leak" é um problema
diretamente relacionado ao consumo de
memória, o que justifica a alternativa A como a
correta.
2 Marcar para revisão
Entre os requisitos de segurança da plataforma
Android, atualmente não é aceitável que o mesmo IV
seja utilizado na geração sequencial de chaves. Ao
utilizar a biblioteca CryptoJS, portada para React
Native de sua versão NodeJS, qual comando seria
utilizado para criar um IV formado por valores
aleatórios?
CryptoJS.lib.generateIV(128/8)
CryptoJS.IV.getVector(128)
C
D
E
CryptoJS.lib.ByteArray.createIV([128,16])
CryptoJS.lib.IV.createFrom(''randomBytes'')
CryptoJS.lib.WordArray.random(16)
Resposta correta
Parabéns, você selecionou a alternativa
correta. Confira o gabarito comentado!
Gabarito Comentado
A biblioteca CryptoJS oferece o módulo lib, que
contém diversas classes e métodos utilitários
para auxiliar em processos criptográficos, como
a geração de números aleatórios. Esses
números podem ser utilizados na construção do
IV e do SALT. O método random, pertencente à
classe WordArray e acessado através do
módulo lib de CryptoJS, retorna um vetor de
números aleatórios de 32 bits (Word), cujo
tamanho é fornecido como parâmetro. Portanto,
o comando CryptoJS.lib.WordArray.random(16)
é o correto para criar um IV formado por
valores aleatórios.
3 Marcar para revisão
O padrão DAO é muito importante para a arquitetura
MVC, pois permite que as chamadas ao banco de
dados sejam concentradas em poucas classes,
viabilizando o agrupamento na camada mais
apropriada, e evitando que os comandos SQL sejam
repercutidos nas demais camadas do sistema. De
A
B
C
D
E
acordo com o padrão DAO, qual seria o comando
SQL associado ao método obterTodos?
UPDATE
CREATE
DELETE
INSERT
SELECT
Resposta correta
Parabéns, você selecionou a alternativa
correta. Confira o gabarito comentado!
Gabarito Comentado
O padrão DAO (Data Access Object) é uma
estratégia de design que encapsula o acesso
aos dados em uma interface, isolando a lógica
de negócios do acesso direto ao banco de
dados. Nesse padrão, temos a concentração
dos comandos SQL relacionados a uma
entidade específica. Os métodos comumente
considerados no padrão DAO são: incluir, que
está relacionado ao comando INSERT; excluir,
que tem como base o comando DELETE; alterar,
que invoca o comando UPDATE; e métodos
gerais de consulta, como obterTodos, que são
baseados no comando SELECT, com ou sem
restrições. Portanto, o comando SQL associado
ao método obterTodos é o SELECT, que é
A
B
C
D
E
utilizado para recuperar dados do banco de
dados.
4 Marcar para revisão
A arquitetura Redux surgiu como uma alternativa ao
Flux, porém, trabalha com um modelo de
programação mais adequado ao ambiente do React
Native. Ela deve ser utilizada quando desejamos um
fluxo unidirecional de execução em um aplicativo
móvel, e os componentes que fazem parte da
arquitetura são
View, Store, Dispatcher e Reducer.
View, Action, Store e Reducer.
Action, Model e Store.
Action, Dispatcher, Controller e Store.
View, Action, Store e Dispatcher.
Resposta correta
Parabéns, você selecionou a alternativa
correta. Confira o gabarito comentado!
Gabarito Comentado
Os componentes da arquitetura Redux são View,
Action, Store e Reducer. A tela, ou View, exibe
os dados representados pela Store, além de
invocar solicitações, ou Actions, despachadas
A
B
C
D
E
pela própria Store, para que sejam iniciados os
processos definidos nas funções do tipo
Reducer, as quais modificam os dados
representados pelo componente Store.
5 Marcar para revisão
De forma geral, o resultado de um processo
criptográfico é uma sequência binária, que apresenta
dificuldades relacionadas à persistência e
transmissão em rede, requerendo uma
transformação para o formato texto. Qual algoritmo
é tipicamente utilizado na conversão?
Base64
SHA1
Runge-Kutta
MD5
Euler
Resposta correta
Parabéns, você selecionou a alternativa
correta. Confira o gabarito comentado!
Gabarito Comentado
O algoritmo Base64 é comumente utilizado para
converter uma sequência binária em formato de
texto. Essa conversão é necessária para superar
A
B
C
D
E
as dificuldades relacionadas à persistência e
transmissão de dados em rede. A codificação
por meio do algoritmo Base64 transforma o
vetor de elementos binários em uma sequência
de texto, eliminando valores nulos ou zeros, que
poderiam causar problemas. Vale ressaltar que
o Base64 não é um algoritmo criptográfico, mas
sim um algoritmo de codificação, pois a
transformação não requer a utilização de uma
chave.
6 Marcar para revisão
Muitas vezes, precisamos testar a conexão com um
banco de dados ou servidor na rede, antes que ele
seja implementado. Qual instrumento de
programação poderia ser utilizado para viabilizar os
testes na situação descrita?
Modificador async
Função expect
Operador toEqual
Componente mock
Função test
Resposta correta
Parabéns, você selecionou a alternativa
correta. Confira o gabarito comentado!
Gabarito Comentado
Os objetos mock, também conhecidos como
simulados, são utilizados para desviar o fluxo
de execução normal, fornecendo as respostas
previstas por um determinado servidor. O uso
de um componente mock é extremamente útil,
pois elimina a necessidade de construir um
servidor físico para realizar testes nas fases
iniciais do desenvolvimento. Além disso,
mantém a compatibilidade com os processos
normais de verificação. Portanto, na situação
descrita no enunciado, onde é necessário testar
a conexão com um banco de dados ou servidor
antes de sua implementação, o componente
mock seria o instrumento de programação mais
adequado para viabilizar esses testes.
7 Marcar para revisão
Ao efetuar a persistência em banco de dados, pode
ser necessário ocultar informações de determinados
campos, com a possibilidade de recuperação
posterior, ou seja, devem ser adotados algoritmos
de criptografia simétrica, em que o AES tem sido a
principal opção para as plataformas móveis mais
populares. Tendo como base a biblioteca CryptoJS,
como podemos utilizar o algoritmo AES no
desenvolvimento com React Native?
A
B
C
D
E
É necessário instanciar um objeto do tipo
Cipher, com a passagem do algoritmo AES,
chave e IV, e utilizar os métodos encrypt e
decrypt do objeto.
Não é possível trabalhar com o algoritmo
AES no React Native, pois a biblioteca
CryptoJS não fornece um gestor
apropriado para ele.
Devemos invocar o método encrypt,
fornecendo o valor original, chave AES e IV,
ou o método decrypt, com o valor
criptografado, chave e IV, sempre por meio
do módulo AES.
Basta invocar a classe Base64, pois os
valores já são codificados noformato AES.
Precisamos utilizar o método
digestStringAsync, fornecendo chave AES e
IV, tanto para a criptografia quanto para a
recuperação da informação.
Resposta correta
Parabéns, você selecionou a alternativa
correta. Confira o gabarito comentado!
Gabarito Comentado
A biblioteca CryptoJS é uma ferramenta
poderosa que fornece gestores de criptografia
simétrica por meio de módulos. Entre esses
módulos, estão incluídos AES, DES, TripleDES,
Rabbit e RC4, cada um referindo-se a um
algoritmo específico. Independentemente do
gestor escolhido, os métodos encrypt e decrypt
estão disponíveis para uso. O método encrypt é
A
B
C
usado para criptografar a informação, enquanto
o decrypt é usado para recuperar a informação
criptografada. Ambos os métodos necessitam
da chave e do IV (Vetor de Inicialização) para
funcionar corretamente. No contexto da
questão, ao trabalhar com o algoritmo AES no
desenvolvimento com React Native, devemos
invocar o método encrypt, fornecendo o valor
original, chave AES e IV, ou o método decrypt,
com o valor criptografado, chave e IV, sempre
por meio do módulo AES.
8 Marcar para revisão
Considere o trecho de código apresentado a seguir,
que tem como base a utilização da biblioteca de
testes unitários Jest:
Qual será o resultado da execução dos testes, via
npm test?
O teste irá falhar, pois o resultado da soma
deveria ser menor que o valor de teste.
O teste será executado com sucesso, pois
o resultado da soma será maior que o valor
de teste utilizado.
O teste será executado com sucesso,
devido ao fato de que o resultado da soma
é igual ao valor de teste utilizado.
D
E
O teste irá falhar, pois o resultado da soma
será menor que o valor de teste utilizado.
O teste irá falhar, pois o retorno da soma
não é igual ao valor de teste utilizado.
Resposta correta
Parabéns, você selecionou a alternativa
correta. Confira o gabarito comentado!
Gabarito Comentado
Com base na biblioteca Jest, temos diversos
operadores para as comparações utilizadas nos
testes. No fragmento de código, é utilizado o
operador toBeGreaterThan, que verifica se o
resultado é maior que o valor de teste. Como a
soma retornará o valor quinze, e o valor de
comparação é um, o teste será executado com
sucesso.
9 Marcar para revisão
Quando um aplicativo não consegue completar as
funcionalidades oferecidas por ele em prazo
adequado, o usuário se sente desestimulado, pois a
usabilidade fica comprometida. No entanto, existem
técnicas simples que podem melhorar o consumo de
memória e o tempo de resposta, como a que é
citada na alternativa:
A
B
C
D
E
Utilizar sempre implementações recursivas
para as funções.
Manter as mensagens via console para
acompanhamento da execução.
Substituir o motor de execução JavaScript
pelo Hermes.
Adotar figuras no formato BMP, devido à
taxa de compressão.
Recriar os componentes nativos a cada
exibição.
Resposta correta
Parabéns, você selecionou a alternativa
correta. Confira o gabarito comentado!
Gabarito Comentado
A alternativa correta é a C, que sugere a
substituição do motor de execução JavaScript
pelo Hermes. O motor Hermes é conhecido por
ser mais eficiente, e a sua substituição pode
trazer benefícios reais em termos de
performance para o aplicativo. Em relação às
demais alternativas, é importante destacar que a
implementação recursiva geralmente consome
mais memória, as mensagens de console devem
ser eliminadas para evitar sobrecarga, as figuras
devem ser preferencialmente no formato PNG
ou vetorial para otimizar o carregamento, e os
componentes nativos, quando utilizam o mesmo
conteúdo, podem ser memorizados via
A
B
C
D
E
React.memo, diminuindo o tempo para exibição
e melhorando a performance do aplicativo.
10 Marcar para revisão
Arquiteturas de fluxo unidirecional são muito
eficientes na construção de sistemas para Web ou
dispositivos móveis. Criada pelo Facebook, a
arquitetura Flux é um bom exemplo de modelo
baseado em fluxo, e o componente Store, definido
na arquitetura, é utilizado para
Criar pacotes de comunicação,
representando as solicitações do usuário.
Exibir os dados para o usuário.
Gerenciar a interatividade do usuário com o
sistema.
Despachar os pacotes de comunicação,
para o responsável pelo processamento.
Receber as solicitações e executar
processos sobre os dados.
Resposta correta
Parabéns, você selecionou a alternativa
correta. Confira o gabarito comentado!
Gabarito Comentado
Na arquitetura Flux, o componente Store tem a
função de receber as solicitações e executar
processos sobre os dados. É importante
destacar que, nesta arquitetura, qualquer
solicitação é traduzida em uma Action, que
pode ser definida como um pacote de
comunicação. Este pacote é então repercutido
pelo Dispatcher para algum componente Store,
onde são executados os processos necessários
sobre os dados. Ao final, eventos são emitidos
para a atualização da View, que é o componente
responsável por exibir os dados para o usuário
e gerenciar a interatividade. Portanto, a
alternativa E é a correta, pois afirma que o
componente Store é utilizado para receber as
solicitações e executar processos sobre os
dados.