Prévia do material em texto
📚 PROGRAM PARA DISPOSITIVOS MÓVEIS EM ANDROID
REACT NATIVE - GABARITO COMENTADO GERAL
Baseado nos 5 trabalhos práticos da Estácio, preparei um resumão com todas as questões e
gabaritos comentados para você revisar! 🚀
🧩 TRABALHO 2 - SINTAXE E COMPONENTES DO REACT
NATIVE
✅ 6/10 ACERTOS - GABARITO COMENTADO
Questão 1: React Developer Tools
Enunciado: A respeito do React Developer Tools, é correto afirmar que:
✅ Alternativa Correta: E
"Permite depurar aplicativos por meio do próprio dispositivo móvel ou de sua interface gráfica, que
é aberta após a inicialização da ferramenta."
📝 Comentário: O React Developer Tools é uma ferramenta poderosa para inspecionar a hierarquia
de componentes, estados e props. Pode ser usada tanto no dispositivo móvel quanto na interface
gráfica do navegador.
Questão 2: Componentes Nativos Android
Enunciado: Indique a opção correspondente à lista de componentes nativos existentes na plataforma
Android.
✅ Alternativa Correta: B
, , , ,
📝 Comentário: No React Native, os componentes são abstrações dos componentes nativos de cada
plataforma. No Android, corresponde a ViewGroup , a TextView , a
ImageView , a EditText e a ScrollView .
Questão 3: Comando NPM Válido
Enunciado: Assinale a alternativa que corresponde a um comando NPM válido.
✅ Alternativa Correta: A
npm install expo-cli
📝 Comentário: O comando npm install é o correto para instalar pacotes via NPM. As demais
alternativas misturam comandos do Node, Yarn ou React Native CLI.
Questão 4: Hierarquia de Componentes
Enunciado: Em relação à hierarquia de componentes nativos, é correto afirmar que:
✅ Alternativa Correta: A
"A hierarquia de componentes em React Native é bastante flexível. Com isso, é possível utilizar em
conjunto diferentes componentes, inclusive como contêineres de outros componentes."
📝 Comentário: No React Native, componentes podem ser aninhados livremente, permitindo
composição complexa de UI. O componente é o principal container.
Questão 5: Local dos Pacotes NPM
Enunciado: Pacotes instalados por intermédio de gerenciadores de pacotes são armazenados em que
local?
✅ Alternativa Correta: B
"Na pasta 'node_modules', dentro da pasta do projeto."
📝 Comentário: Por padrão, todos os pacotes instalados via NPM ou YARN ficam na pasta
node_modules na raiz do projeto.
Questão 6: Principal Elemento da UI
Enunciado: Qual dos elementos abaixo é o principal elemento na construção de uma interface gráfica
(UI) em React Native?
✅ Alternativa Correta: A
View
📝 Comentário: O componente é o container fundamental para construção de interfaces,
equivalente à no HTML.
Questão 7: Benefícios do React Native (Sua resposta: Errada)
Enunciado: Aponte a alternativa correta em relação aos benefícios apresentados por ele.
✅ Alternativa Correta: C
"Ao utilizar React Native, é possível desenvolver um único código, que será, em sua maior parte,
compatível com as plataformas Android e iOS."
📝 Comentário: Essa é a principal vantagem do React Native - escrever uma vez e rodar em ambas
as plataformas, compartilhando ~90% do código.
Questão 8: Pontos de Interrupção
Enunciado: Na depuração de um código-fonte, para interromper a execução do programa em
determinada linha ou instrução para análise, é necessária...
✅ Alternativa Correta: A
"A inclusão de pontos de interrupção (breakpoints)."
📝 Comentário: Breakpoints são marcadores no código que pausam a execução para inspeção de
variáveis e fluxo.
Questão 9: Transpilação no React Native (Sua resposta: Errada)
Enunciado: Sobre o processo de transpilação realizado pelo React Native, assinale a alternativa
correta:
✅ Alternativa Correta: C
"O React Native compila um aplicativo-base cuja função é executar código JavaScript no
JavaScriptCore presente em cada dispositivo móvel. A partir disso, esse aplicativo faz a
comunicação (ponte ou bridge) com os componentes nativos de cada plataforma."
📝 Comentário: Esse é o conceito fundamental do React Native - a bridge que conecta JavaScript
com componentes nativos via JavaScriptCore.
Questão 10: Instalação Local Expo CLI (Sua resposta: Errada)
Enunciado: Marque a alternativa correspondente ao comando para instalação local do Expo CLI.
✅ Alternativa Correta: C
npm install expo-cli
📝 Comentário: Este é o comando padrão para instalar qualquer pacote localmente via NPM.
🎨 TRABALHO 3 - INTERFACE GRÁFICA COM REACT NATIVE
✅ 0/10 ACERTOS (EM BRANCO) - GABARITO COMENTADO
Questão 1: Image dentro de Text
Enunciado: Analise o fragmento de código com dentro de .
✅ Alternativa Correta: C
"Será exibido um erro informando que não é possível inserir componentes Image como filhos de
componentes Text."
📝 Comentário: No React Native, o componente só pode conter outros componentes
ou texto puro. Inserir dentro de gera erro.
Questão 2: Navegação no React Native
Enunciado: Em relação aos recursos de navegação disponíveis no framework React Native, é correto
afirmar que:
✅ Alternativa Correta: A
"É preciso instalar dependências/bibliotecas extras para a construção dos elementos de navegação,
como, por exemplo, menus."
📝 Comentário: React Native não tem navegação nativa. É necessário instalar bibliotecas como
@react-navigation/native e suas variações.
Questão 3: LayoutAnimation API
Enunciado: Falando da LayoutAnimation API, é correto afirmar que:
✅ Alternativa Correta: B
"Essa API é voltada para a animação do layout do aplicativo, permitindo, por exemplo, que efeitos
sejam exibidos quando o aplicativo está sendo carregado/renderizado."
📝 Comentário: LayoutAnimation API anima automaticamente mudanças de layout, enquanto
Animated API oferece controle mais granular.
Questão 4: 10 Telas - Modelos de Navegação
Enunciado: Considerando um aplicativo que possua dez telas, é correto afirmar:
✅ Alternativa Correta: B
"A adoção dos três modelos de navegação consiste em uma boa estratégia, uma vez que é possível,
por exemplo, exibir, por meio de Tab Navigation, os links mais importantes e combinar os demais
links nos outros modelos de navegação."
📝 Comentário: É comum combinar Stack, Tab e Drawer Navigation para organizar muitas telas de
forma intuitiva.
Questão 5: Código com Erro de Navegação
Enunciado: Análise de código com TabButton.Screen dentro de Stack.Navigator .
✅ Alternativa Correta: D
"Será exibida uma mensagem de erro dizendo que não foi possível localizar a variável TabButton."
📝 Comentário: O componente correto é Stack.Screen . TabButton não existe, causando erro de
referência.
Questão 6: Propósito do ScrollView
Enunciado: Assinale qual destas opções corresponde ao propósito do componente ScrollView.
✅ Alternativa Correta: A
"O ScrollView é um elemento com a função de container, que pode conter em si vários elementos,
mantendo uma altura previamente definida e permitindo a navegação entre os elementos nele
contidos por meio de rolagem, que pode ser tanto vertical quanto horizontal."
📝 Comentário: ScrollView renderiza todo o conteúdo de uma vez, diferente da FlatList que é
virtualizada.
Questão 7: SectionList - Estrutura de Dados
Enunciado: Considerando as propriedades do SectionList, assinale a alternativa que define a
estrutura dos dados e o agrupamento dos itens em seções.
✅ Alternativa Correta: D
sections
📝 Comentário: A propriedade sections do SectionList recebe um array de objetos com title e
data , definindo as seções da lista.
Questão 8: Componentes de Lista
Enunciado: Indique qual afirmativa está correta em relação aos componentes de lista disponíveis em
React Native.
✅ Alternativa Correta: B
"Os componentes de lista são elementos otimizados para a exibição de dados nesse formato,
possuindo diversas otimizações, que vão desde o consumo de memória até a renderização e a
atualização da janela para a exibição dos itens."
📝 Comentário: FlatList,SectionList e VirtualizedList são otimizados para performance com grandes
volumes de dados.
Questão 9: Carregamento de Dados Adicionais
Enunciado: Assinale a alternativa que corresponde ao comportamento dos componentes de lista no
que diz respeito ao carregamento de dados adicionais.
✅ Alternativa Correta: A
"Todos os componentes de lista presentes no React Native possuem propriedades e métodos
nativos para tratar o carregamento de dados adicionais. Por meio deles, é possível tanto monitorar
o acréscimo de novos dados como carregá-los sob demanda mediante uma interação por parte do
usuário."
📝 Comentário: Propriedades como onEndReached e onRefresh permitem carregamento sob
demanda e pull-to-refresh.
Questão 10: Combinação de Modelos de Navegação
Enunciado: Sobre esses modelos e sua utilização em conjunto, aponte a alternativa verdadeira.
✅ Alternativa Correta: D
"É possível utilizar um ou mais modelos de navegação em conjunto em um aplicativo mobile. Para
isso, os containers de cada modelo de navegação deverão ser inseridos, no atributo 'component',
na definição dos itens (screens) de outro modelo."
📝 Comentário: A combinação é feita aninhando navegadores, por exemplo: um Tab Navigator
dentro de um Stack Navigator.
💾 TRABALHO 4 - PERSISTÊNCIA DE DADOS COM REACT
NATIVE
✅ 8/10 ACERTOS - GABARITO COMENTADO
Questão 1: Programação Assíncrona
Enunciado: Analise as afirmativas acerca da programação assíncrona no React Native:
I - O retorno de uma função assíncrona deve ser um objeto da classe Promise.
II - Uma função assíncrona deve ser definida com o uso da palavra await.
III - Utilizando o operador then, o retorno da função assíncrona é repassado para o fluxo seguinte
após o término de sua execução.
✅ Alternativa Correta: D
"Somente I e III estão corretas."
📝 Comentário: A afirmativa II está errada porque funções assíncronas são definidas com async ,
não com await . O await é usado dentro de funções async.
Questão 2: MongoDB - Consulta
Enunciado: Observe o trecho de código do MongoDB e determine o resultado.
✅ Alternativa Correta: D
"Recuperação dos documentos referentes às vendas, em que, no pagamento, foi utilizado dinheiro,
e a movimentação ocorreu no dia corrente."
📝 Comentário: A questão envolvia operadores como $gte (maior ou igual) e $lt (menor que)
para filtrar datas, e igualdade para o campo de pagamento.
Questão 3: MongoDB Compass
Enunciado: Qual a opção correta acerca do MongoDB?
✅ Alternativa Correta: B
"Oferece o aplicativo gráfico MongoDB Compass para a gerência da base."
📝 Comentário: MongoDB Compass é a ferramenta gráfica oficial para administrar bancos
MongoDB.
Questão 4: Banco NoSQL Baseado em Documentos
Enunciado: Qual das opções se refere a um banco de dados NoSQL baseado em documentos?
✅ Alternativa Correta: E
MongoDB
📝 Comentário: MongoDB é o principal exemplo de banco NoSQL orientado a documentos (JSON).
As outras opções incluem bancos relacionais (SQLite) ou colunares (BigQuery).
Questão 5: Operador SQL para Busca por Padrão
Enunciado: Qual dos operadores permite buscar os nomes iniciados por uma letra específica?
✅ Alternativa Correta: B
LIKE
📝 Comentário: LIKE 'A%' busca nomes começados com 'A'. IN verifica pertencimento a
conjunto, ANY e ALL são usados com subconsultas.
Questão 6: FlatList - keyExtractor
Enunciado: Se o campo de identificação da entidade não seguir o padrão do FlatList, você deverá
associar um método para extração da chave a qual atributo do componente?
✅ Alternativa Correta: B
keyExtractor
📝 Comentário: keyExtractor é a propriedade usada para extrair uma chave única de cada item da
FlatList.
Questão 7: SQLite - Tabela de Autoincremento
Enunciado: Qual das tabelas de catálogo do SQLite está associada ao controle dos valores de
autoincremento?
✅ Alternativa Correta: C
sqlite_sequence
📝 Comentário: A tabela sqlite_sequence armazena o último valor usado para colunas
AUTOINCREMENT em cada tabela.
Questão 8: Código SQLite (Sua resposta: Errada)
Enunciado: Qual será o resultado da execução do trecho de código com SQLite?
✅ Alternativa Correta: A
"Uma conexão será obtida de forma assíncrona, sendo utilizada, a seguir, para iniciar uma
transação e, a partir dela, inserir um registro no banco de dados."
📝 Comentário: O código usa openDatabase (assíncrono), transaction e executeSql com
parâmetros (?) para inserir um registro.
Questão 9: Realm - Atualização (Sua resposta: Errada)
Enunciado: Qual será o resultado da execução do trecho de código com Realm?
✅ Alternativa Correta: B
"Um aluno é recuperado a partir da chave, tendo seu nome e sala alterados."
📝 Comentário: O código usa objectForPrimaryKey para buscar, depois modifica atributos dentro
de write() , atualizando o objeto no banco.
Questão 10: Realm - Método create
Enunciado: Qual método da classe Realm seria utilizado para acrescentar um objeto a uma coleção
do banco?
✅ Alternativa Correta: E
create
📝 Comentário: realm.create('Classe', objeto) adiciona um novo objeto à coleção. write
inicia transação, commitTransaction confirma, beginTransaction inicia e objectForPrimaryKey
busca.
📡 TRABALHO 5 - CONEXÃO REMOTA COM REACT NATIVE
✅ 10/10 ACERTOS - GABARITO COMENTADO
Questão 1: Offline First - Banco Embarcado
Enunciado: Sobre banco de dados embarcado no modelo Offline First, é correto afirmar:
✅ Alternativa Correta: D
"São indispensáveis, uma vez que precisaremos ter um mecanismo que possibilite a persistência e
recuperação local dos dados necessários ao funcionamento do aplicativo para posterior
sincronização."
📝 Comentário: No Offline First, o banco local é essencial para armazenar dados quando offline e
sincronizar quando a conexão voltar.
Questão 2: Offline First - Identificação do Usuário
Enunciado: O desenvolvimento de um aplicativo multiusuário no modelo Offline First exige
identificação correta do usuário porque:
✅ Alternativa Correta: A
"Os dados, no modelo Offline First, são armazenados localmente e posteriormente sincronizados
com os dados existentes remotamente. Não identificar o usuário relativo a cada dado geraria
inconsistência nos mesmos."
📝 Comentário: Sem identificação do usuário, conflitos de sincronização seriam impossíveis de
resolver.
Questão 3: Conexão Remota no React Native
Enunciado: Dentre os recursos disponíveis em React Native para comunicação com APIs, podemos
afirmar:
✅ Alternativa Correta: B
"O framework React Native dispõe de recursos nativos para a realização de conexão remota."
📝 Comentário: Fetch API é nativa do React Native, não requer instalação adicional.
Questão 4: Elementos-chave em Conexão Remota
Enunciado: Dentre os elementos-chave em uma conexão remota, considerando o lado cliente,
encontram-se:
✅ Alternativa Correta: A
XMLHttpRequest, JSON (ou XML), Flatlist
📝 Comentário: XMLHttpRequest é o objeto base, JSON/XML são formatos de dados, e Flatlist exibe
os dados recebidos.
Questão 5: OAuth2 - Elementos
Enunciado: Alternativa que representa o conjunto de elementos normalmente presentes em
requisições com OAuth2:
✅ Alternativa Correta: A
"Aplicativo cliente, Servidor de Recurso externo/API, Servidor de autorização, Token"
📝 Comentário: Esses são os quatro elementos fundamentais do framework OAuth2.
Questão 6: Métodos HTTP
Enunciado: Marque a opção que corresponda a um dos métodos HTTP:
✅ Alternativa Correta: A
PUT
📝 Comentário: PUT, GET, POST, DELETE são métodos HTTP. IMAP, STP, POP são protocolos de
email. RSTP não existe.
Questão 7: Atualização de Dados - Método HTTP
Enunciado: Considerando uma requisição para atualização de dados, podemos utilizar:
✅ Alternativa Correta: D
"Podem ser usados os verbos POST ou PUT, sendo este último o mais recomendado, além de
utilizado para esse fim."
📝 Comentário: Por convenção REST, PUT é usado para atualização completa, POST para criação,
mas ambos podem ser usados dependendo da API.
Questão 8: Axios - Resposta
Enunciado: A resposta de uma requisição realizada coma biblioteca Axios pode ser acessada através
do objeto:
✅ Alternativa Correta: E
Response.data
📝 Comentário: No Axios, os dados retornados estão em response.data . Fetch usa
response.json() .
Questão 9: Offline First - Definição
Enunciado: Podemos considerar que um aplicativo aplica o modelo Offline First caso:
✅ Alternativa Correta: E
"Ofereça os mesmos recursos e funcionalidades, incluindo o consumo de recursos remotos,
estando ou não conectado à internet."
📝 Comentário: Essa é a definição central do Offline First - funcionar igual com ou sem internet.
Questão 10: AJAX
Enunciado: Em relação à tecnologia AJAX, podemos afirmar que:
✅ Alternativa Correta: A
"Pode receber informações em uma variedade de formatos, incluindo JSON, XML e Texto puro."
📝 Comentário: AJAX (Asynchronous JavaScript and XML) pode lidar com múltiplos formatos, não
apenas XML.
🧠 TRABALHO 6 - TÓPICOS AVANÇADOS COM REACT
NATIVE
✅ 10/10 ACERTOS - GABARITO COMENTADO
Questão 1: Padrão DAO - obterTodos
Enunciado: De acordo com o padrão DAO, qual seria o comando SQL associado ao método
obterTodos?
✅ Alternativa Correta: E
SELECT
📝 Comentário: O método obterTodos recupera todos os registros, portanto usa SELECT . INSERT
é para incluir, DELETE para excluir, UPDATE para alterar, CREATE para criar tabelas.
Questão 2: AES com CryptoJS
Enunciado: Como podemos utilizar o algoritmo AES no desenvolvimento com React Native usando
CryptoJS?
✅ Alternativa Correta: C
"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."
📝 Comentário: CryptoJS expõe métodos encrypt e decrypt no módulo AES. IV (vetor de
inicialização) é necessário para segurança.
Questão 3: Componentes do Redux
Enunciado: Os componentes que fazem parte da arquitetura Redux são:
✅ Alternativa Correta: B
View, Action, Store e Reducer
📝 Comentário: Redux tem: View (tela), Action (objeto com type/payload), Store (única fonte de
verdade), Reducer (função pura). Dispatcher não existe no Redux.
Questão 4: Redux - createStore
Enunciado: Qual método deve ser utilizado para a criação do componente Store na arquitetura
Redux?
✅ Alternativa Correta: D
createStore
📝 Comentário: createStore(reducer) é a função que cria a Store. dispatch envia ações,
getState obtém estado, subscribe registra listeners.
Questão 5: IV Aleatório no CryptoJS
Enunciado: Qual comando seria utilizado para criar um IV formado por valores aleatórios?
✅ Alternativa Correta: E
CryptoJS.lib.WordArray.random(16)
📝 Comentário: WordArray.random(tamanho) gera bytes aleatórios. IV de 16 bytes é comum para
AES.
Questão 6: Flux - Função da Store
Enunciado: O componente Store na arquitetura Flux é utilizado para:
✅ Alternativa Correta: E
"Receber as solicitações e executar processos sobre os dados."
📝 Comentário: No Flux, Store contém dados e lógica de negócio. Action cria pacotes, Dispatcher
distribui, View exibe.
Questão 7: Problema de Consumo de Memória
Enunciado: Qual das alternativas define um problema relacionado ao consumo de memória?
✅ Alternativa Correta: A
Memory leak
📝 Comentário: Memory leak (vazamento de memória) ocorre quando memória alocada não é
liberada. Deadlock é travamento, Promise rejection é erro assíncrono, Starvation é falta de recursos.
Questão 8: Testes sem Servidor
Enunciado: Qual instrumento de programação poderia ser utilizado para viabilizar os testes na
situação descrita?
✅ Alternativa Correta: D
Componente mock
📝 Comentário: Mocks simulam comportamentos de servidores/APIs sem necessidade de
implementação real.
Questão 9: Jest - toBeGreaterThan
Enunciado: Qual será o resultado da execução dos testes, via npm test?
✅ Alternativa Correta: B
"O teste será executado com sucesso, pois o resultado da soma será maior que o valor de teste
utilizado."
📝 Comentário: 10+5 = 15 , e 15 > 1 , então toBeGreaterThan(1) retorna verdadeiro.
Questão 10: Melhoria de Performance
Enunciado: Técnica simples que pode melhorar o consumo de memória e o tempo de resposta:
✅ Alternativa Correta: C
"Substituir o motor de execução JavaScript pelo Hermes."
📝 Comentário: Hermes é um motor JavaScript otimizado para React Native, reduzindo consumo de
memória e tempo de inicialização.