Finalmente foi publicado o tão aguardado edital da Receita Federal! Para deixar você bem “afiado”, o Blog do Estratégia Concursos está elaborando uma série de artigos especiais sobre o concurso, com conteúdos gratuitos e dicas exclusivas para elevar o nível da sua preparação.
Neste artigo, selecionamos 15 questões focadas na disciplina de Fluência em Dados da temida banca FGV para exercitarmos juntos, com comentários bem objetivos para o estudo para a Receita Federal ser produtivo. Acreditamos que o estilo da sua prova será bem semelhante às questões selecionadas.
Como o conteúdo programático da disciplina Fluência em Dados para os cargos de Auditor-Fiscal e Analista-Tributário da Receita Federal é o mesmo, este artigo se aplica a todos os candidatos que farão a prova. Veja como os tópicos serão abordados:
Recomendamos que a leitura do artigo seja feita após estudar o conteúdo. Se você não conhece nada da disciplina de Fluência em Dados, sugerimos que faça a preparação por outros materiais da Receita Federal do Estratégia e que retorne a esse artigo quando estiver preparado.
Alternativamente, você pode também optar por realizar a leitura como um nivelamento, a fim de identificar em que ponto você se encontra. Se o objetivo for esse, você deve inverter as posições: leia o artigo primeiro, veja as suas forças e as suas fraquezas e depois inicie os estudos.
Por fim, caso não tenha tempo disponível para ler o artigo de uma só vez, você poderá dividi-lo em 2 ou 3 partes. Não há prejuízos em particionar a leitura, haja vista que as questões são independentes umas das outras. Vamos começar?
Tempo de leitura aproximada: 30 a 45 minutos
Assinale a opção que apresenta os principais componentes da arquitetura de um sistema de BI:
A) Data lake, big data e dashboard.
B) Data mart, análise de negócio e dashboard.
C) Data mart, extração-transformação-carga e interfaces do usuário.
D) Data warehouse, análise de negócio, business process management e interfaces do usuário.
E) Data warehouse, extração-transformação-carga, ciência de dados, business process management e dashboard.
Comentário: Essa foi uma questão retirada diretamente da literatura. Segundo Turban, os componentes da arquitetura de BI são data warehouse, análise de negócio, business process management e interfaces de usuário. Você precisaria conhecer isso para acertar a questão. Vamos ver brevemente cada um deles:
Armazém de Dados (Data Warehouse – DW): repositório de dados históricos da organização, por meio de onde as informações podem ser extraídas.
Análise de Negócio (Business Analytics): conjunto de ferramentas e técnicas que irão subsidiar a verificação dos dados do DW, auxiliando nas tomadas de decisões.
Gerenciamento de Processos de Negócio (Business Process Management): no contexto de BI, pode ser entendido como o conjunto de processos para monitorar o desempenho e a avaliação dos indicadores de negócio.
Interfaces do Usuário: ponto de contato para o usuário fornecer dados ou receber informações provenientes das análises realizadas.
Gabarito: Letra D.
Lino precisa preparar um grande volume de dados para minerar realizando operações de limpeza, adequação de formato, exclusão de brancos e inclusão de novos atributos derivados.
Para realizar o pré-processamento dos dados, Lino deve usar uma ferramenta do tipo:
A) ETL
B) OLAP
C) Apriori
D) Data Mart
E) Data Lake
Comentário: O ETL é a sigla para Extração (Extraction), Transformação (Transformation) e Carga (Load). De forma direta, consiste em extrair dados de uma base de origem, realizar transformações (limpezas, padronizações etc.) e posteriormente carregar os dados alterados em uma nova base.
Cada uma das 3 etapas mencionadas (Extração, Transformação e Carga) pode ser dividida em outras. O pré-processamento a que a questão se referia é uma das fases iniciais da transformação do ETL.
Gabarito: Letra A.
Uma organização deseja implementar um pipeline de dados e está avaliando a opção mais adequada para o seu contexto de operação. Em torno de 40% dos dados consumidos pela organização se encontram em planilhas eletrônicas que contêm dados sensíveis, produzidas semanalmente por suas unidades de negócio. Os outros 60% dos dados se encontram em alguns bancos de dados relacionais de sistemas de produção da organização. O tamanho da base é de moderado a pequeno, mas existe a necessidade de conformidade com normas de privacidade e confidencialidade dos dados. O objetivo do pipeline é fornecer insumos para um departamento que realiza análises de dados com métodos não supervisionados de aprendizagem de máquina para elaborar relatórios periódicos mensais. A organização está avaliando a construção de um Armazém de Dados (ETL) ou de um Lago de Dados (ELT).
A proposta de modelo adequada e corretamente justificada é:
A) Armazém de Dados. Ambos os modelos são adequados, mas Lago de Dados tem maior latência até a carga (L) e custo maior.
B) Armazém de Dados. Esse modelo possui menor latência até a carga (L) e, ao contrário do Lago de Dados, opera de forma eficiente com dados relacionais.
C) Armazém de Dados. O processo ETL é mais adequado para o tratamento dos dados sensíveis e os casos de uso são bem conhecidos.
D) Lago de Dados. Esse modelo possui menor latência até a carga (L) e permite a extração de dados semiestruturados e não estruturados.
E) Lago de Dados. Esse modelo não necessita de hardware especializado e, ao contrário do Armazém de Dados, possibilita tarefas de aprendizado de máquina.
Vimos brevemente os conceitos de Armazém de Dados (DW) e ETL na primeira e segunda questão. Os dados são extraídos de fontes distintas, transformados e posteriormente carregados no DW, para que sejam submetidos a processos de análises.
O problema é que a etapa de transformação é a mais custosa do percurso. Em outras palavras, o usuário somente terá acesso aos dados após sua transformação ter ocorrido.
O Lago de Dados busca otimizar esse processo, invertendo as etapas de Transformação e Carga. Em outras palavras, os dados são extraídos das fontes, carregados na base e posteriormente transformados (veja que a sigla muda para ELT).
A vantagem é que o usuário não precisa aguardar a conclusão da transformação para acessar os dados. O que não precisa ser transformado, estará disponível mais rapidamente.
Quando devemos utilizar o Armazém de Dados ou o Lago de Dados? O Lago de Dados é recomendado nos casos em que a quantidade de dados for grande, necessitando de muitas transformações.
Nesses casos, é conveniente carregar primeiro e deixar a transformação para depois. Em contrapartida, o Armazém de Dados é indicado para quantidades menores de dados (já que a transformação é realizada primeiro).
O enunciado menciona que a quantidade de dados é moderada a pequena. Dessa forma, já sabemos que o Armazém de Dados seria mais adequado, eliminando as letras D e E.
As letras A e B falam a respeito de latência até a carga. Quem possui menor latência é o ELT, pois realiza a carga primeiro. Consequentemente, o ETL possui uma latência maior. Com isso, eliminamos as letras A e B.
Gostaríamos de fazer uma ressalva a respeito dos dados sensíveis. Para a FGV (e você pode confirmar isso pelo gabarito da questão), o ETL é mais adequado para o tratamento de dados sensíveis.
Contudo, caso você pesquise outras fontes, verá que esse entendimento não é pacificado, possivelmente por estarmos lidando com temas muito novos. Mas como sempre afirmamos, o que importa é o que a banca acha. Por isso, guarde esse entendimento para as próximas questões.
Gabarito: Letra C.
Um analista do TCU recebe o conjunto de dados com covariáveis e a classe a que cada amostra pertence na tabela a seguir:
X1 | X2 | Classe |
---|---|---|
0 | 1 | A |
0 | 2 | B |
1 | 0 | A |
1 | -1 | B |
2 | 2 | B |
1 | 2 | A |
-1 | 1 | B |
2 | 3 | A |
Esse analista gostaria de prever a classe dos pontos (1, 1), (0, 0) e (-1, 2) usando o algoritmo de k-vizinhos mais próximos com k=3 e usando a distância euclidiana usual.
Suas classes previstas são, respectivamente:
A) A, B, A
B) B, A, A
C) A, B, B
D) A, A, B
E) A, A, A
O algoritmo k-vizinhos mais próximos (k-nearest neighbors) irá classificar um dado de acordo com os dados mais próximos. Como a questão disse que o nosso k=3, então iremos considerar os 3 pontos mais próximos.
Além disso, veja também que a questão mencionou a distância euclidiana, que é basicamente a distância entre 2 pontos. Para resolver esse tipo de questão, é importante que você tenha uma visão do plano cartesiano, para saber a localização exata dos pontos.
Segue um esboço. Os pontos amarelos são os pertencentes à tabela do enunciado, enquanto os pontos em vermelho são os do analista:
Dependendo da questão, você pode identificar os pontos mais próximos apenas visualmente, o que é muito mais rápido (ainda mais em uma prova da FGV).
Caso você não consiga fazer o reconhecimento pelo plano cartesiano, a solução alternativa é calcular a distância euclidiana de cada um deles e verificar quais são as menores, para identificar os mais próximos. Segue a fórmula:
Nesta questão, iremos adotar a estratégia visual. Seguem os pontos mais próximos:
(1, 1) => Pontos próximos (1, 2), (1, 0) e (0, 1)
=> 3 da Classe A
=> Classe A venceu
(0, 0) => Pontos próximos (0, 1), (1, 0) e (-1, 1) ou (1, -1)
=> 2 da Classe A e 1 da Classe B
=> Classe A venceu
(-1, 2) => Pontos próximos (-1, 1), (0, 2) e (0, 1)
=> 2 da Classe B e 1 da Classe A
=> Classe B venceu
Sendo assim, seguindo a ordem solicitada, os pontos mais próximos de (1,1), (0,0) e (-1,2) pertencem às classes A, A e B, respectivamente.
Gabarito: Letra D.
CRISP-DM é um modelo de referência não proprietário e tecnologicamente neutro que pode ser usado por iniciantes ou especialistas para descrever o ciclo de vida de projetos de Mineração de Dados em seis fases distintas.
A terceira fase do modelo corresponde:
A) à modelagem de fluxos de dados.
B) ao entendimento do negócio.
C) ao entendimento de dados.
D) à elicitação de requisitos.
E) à preparação de dados.
Comentário: As 6 fases do CRISP-DM são: entendimento do negócio, entendimento de dados, preparação de dados, modelagem, avaliação e entrega/implantação (nesta ordem).
A terceira fase é a preparação de dados, responsável por efetuar as transformações necessárias nos dados antes da execução do modelo propriamente dito.
Gabarito: Letra E.
Uma regra de associação utilizada em mineração de dados é uma expressão de implicação no formato X => Y, onde X e Y são conjuntos disjuntos de itens, onde X ∩ Y = Ø. A força de uma regra de associação pode ser medida em termos do seu suporte (sup) e confiança (conf).
Assinale a opção que apresenta a definição formal da métrica confiança:
A) conf(X => Y) = sup(X U Y)/N
B) conf(X => Y) = sup(X ∩ Y)/N^2
C) conf(X => Y) = sup(X ∩ Y)/sup(Y)
D) conf(X => Y) = sup(X U Y)/sup(X)
E) conf(X => Y) = sup(X U Y)/sup(X * Y)
Comentário: A associação trabalha com as regras de suporte e de confiança. A regra de suporte pode ser definida como a proporção de ocorrências que contém X e Y, dividido pelo número de ocorrências total.
Por outro lado, a regra de confiança pode ser definida como a proporção de ocorrências que contém X e Y, dividido pelo número de ocorrências de X. A questão deseja saber a fórmula dessa regra.
Conhecendo esses conceitos, já seria possível identificar de imediato a resposta, apenas observando o denominador. Veja que apenas uma alternativa apresenta o número de ocorrências de X nessa posição.
Questão extremamente conceitual e direta, que privilegia quem estudou o tópico ou conhece o conteúdo por motivos variados.
Gabarito: Letra D.
Um analista precisa construir um modelo de tópicos para uma grande base de documentos legais, mas há uma preocupação quanto à interpretabilidade do modelo e à capacidade de inspecionar os resultados.
Considerando essa preocupação, a técnica mais apropriada para a construção do modelo e a razão da escolha são, respectivamente:
A) Latent Semantic Analytics, devido à distância média dos tópicos gerados.
B) Latent Dirichlet Allocation, devido à capacidade de capturar informação sintática em sua representação.
C) Non-Negative Matrix Factorization, devido à representação esparsa e estritamente não negativa.
D) Explicit Semantic Analysis, devido à possibilidade de definir explicitamente tópicos a priori.
E) Parallel Latent Dirichlet Allocation, devido à distância mínima dos tópicos gerados.
Questão complicada de processamento de linguagem natural (PLN), cuja cobrança é bem rara nas provas. Optamos por mantê-la no artigo para você perceber claramente que há questões fáceis e difíceis.
Na hora da prova, se encontrar uma questão como essa (que eventualmente não saiba nem como começar), não desanime e tente fazer por eliminação. Essa é a estratégia que vamos utilizar para resolver a questão.
Observe que as alternativas apresentam os nomes das técnicas e as razões. No entanto, as razões apresentadas não batem com as técnicas. A única que bate é justamente a do gabarito. Vamos falar brevemente sobre cada uma delas:
Latent Semantic Analytics (LSA): relaciona ocorrências entre termos e documentos, de forma estatística.
Latent Dirichlet Allocation (LDA): faz o mesmo relacionamento do LSA, mas trabalhando com ponderações nos termos.
Non-Negative Matrix Factorization (NMF): relaciona ocorrências entre termos e documentos por matrizes. Cada relacionamento é representado por um elemento da matriz. Os valores dos elementos não podem ser negativos: apenas zero (não encontrados) ou positivos (encontrados X vezes).
Eventualmente, a matriz pode conter uma grande quantidade de zeros, caso os termos não tenham sido encontrados. Nessa situação, a matriz é denominada esparsa.
Explicit Semantic Analysis (ESA): variante do LSA, em que os termos e documentos são representados de maneira vetorial.
Parallel Latent Dirichlet Allocation: variante do LDA, aplicando conceitos de paralelismo à técnica empregada.
Gabarito: Letra C.
Leia o fragmento a seguir:
“Atualmente, no contexto de Big Data e Data Analytics, faz-se referência às características enunciadas por pesquisadores e produtores de soluções como sendo um conjunto de cinco Vs. Originalmente, a definição clássica de Big Data faz referência a três Vs fundamentais: ________, ________ e ________ de dados que demandam formas inovadoras e rentáveis de processamento da informação, para melhor percepção e tomada de decisão.”
Assinale a opção cujos itens completam corretamente as lacunas do fragmento acima, na ordem apresentada.
A) valor – variança – veracidade
B) validade – velocidade – vocabulário
C) valor – variabilidade – viscosidade
D) variedade – velocidade – volume
E) valor – volatilidade – volume
Comentário: Seguem os 5 Vs de Big Data, juntamente com seus conceitos:
Volume: representa a grande quantidade de dados que as aplicações tratam.
Velocidade: representa a rapidez no processamento que as aplicações exigem.
Variedade: representa a diversidade dos dados tratados pelas aplicações.
Valor: representa a importância que os dados agregam à instituição.
Veracidade: representa que os dados tratados são autênticos, verdadeiros.
A FGV “pegou leve” nessa questão e colocou outros termos iniciados por V nas alternativas, que não possuem relação com o contexto. Ou seja, seria possível acertar essa questão apenas conhecendo os 5Vs, por eliminação.
Contudo, é importante que você saiba também que os 3Vs são variedade, velocidade e volume. Na verdade, os 3Vs surgiram primeiro do que os 5Vs: inicialmente, aqueles foram definidos e, posteriormente, acrescentaram mais 2 características.
A quantidade de Vs no Big Data vem aumentando com o passar do tempo (7 Vs, por exemplo), mas os 3Vs e 5Vs ainda são os mais cobrados pelas bancas.
Gabarito: Letra D.
Com relação às arquiteturas de big data, analise as afirmativas a seguir:
I. As arquiteturas de big data suportam um ou mais tipos de carga de trabalho, por exemplo, processamento em lote de fontes de big data em repouso; processamento em tempo real de big data em movimento; exploração interativa de big data e análise preditiva e aprendizado de máquina.
II. A arquitetura kappa aborda o problema de baixa latência criando dois caminhos para o fluxo de dados. Todos os dados que entram no sistema passam por dois caminhos: a camada de lote (caminho frio) que armazena os dados de entrada em sua forma bruta e executa o processamento dos dados em lote, e a camada de velocidade (hot path) que analisa os dados em tempo real. Essa camada é projetada para ter baixa latência, em detrimento da precisão.
III. A arquitetura lambda, posterior à kappa, foi proposta para ser uma alternativa para mitigar os problemas da baixa latência. Lambda tem os mesmos objetivos da kappa, mas com uma distinção importante: todos os dados fluem por um único caminho, usando um sistema de processamento de fluxo de dados. Semelhante à camada de velocidade da arquitetura lambda, todo o processamento de eventos é realizado através de um fluxo único de entrada.
Está correto o que se afirma em:
A) I, apenas.
B) II, apenas.
C) III, apenas.
D) I e II, apenas.
E) II e III, apenas.
Vamos analisar as afirmativas individualmente:
I. Afirmativa correta. De fato, as arquiteturas de Big Data foram projetadas para lidar com grande quantidade de dados sendo processados, de forma rápida. Baseado nisso, é esperado que a arquitetura seja capaz de lidar com cargas de trabalho variadas.
Além disso, a arquitetura também deve proporcionar a análise de diferentes perspectivas de dados e previsão de eventos.
II. Afirmativa errada. A assertiva considerou características da arquitetura lambda, tais como camada de lote, camada de velocidade etc. Ademais, a arquitetura kappa não oferece divisão por caminhos.
III. Afirmativa errada. A fluidez dos dados por um único caminho é típica da arquitetura kappa. Aparentemente, a intenção da banca foi inverter os conceitos das arquiteturas lambda e kappa nas assertivas II e III desta questão.
Gabarito: Letra A.
Considere o código Python a seguir.
def xpto(S):
for k in range(0,len(S)):
if k%2 == 0:
yield(S[k]);
S=[1,2,3,4,5,6]
for x in xpto(S[::-1]):
print (x)
A execução desse código na IDLE Shell produz, na ordem e exclusivamente, os números:
A) 6, 1
B) 5, 3, 1
C) 6, 4, 2
D) 1, 3, 5
E) 2, 4, 6
Comentário: O código irá exibir apenas os números da lista que possuem resto 0 na divisão por 2, ou seja, os números pares. No entanto, ele exibe a ordem original de forma invertida. Vamos ver o que cada linha do código faz:
def xpto(S): #define a função xpto (parâmetro será a lista)
for k in range(0,len(S)): #percorre cada elemento da lista
if k%2 == 0: #se o resto da divisão do elemento por 2 for 0
yield(S[k]); #considero este elemento na lista de retorno
S=[1,2,3,4,5,6] #lista de elementos a serem analisados
for x in xpto(S[::-1]): #chamada da função xpto, com lista invertida
print (x) #imprimo elemento retornado da função xpto
Antes de mais nada, os comentários em python de uma linha são representados por # na frente do texto. Utilizamos este artifício para facilitar a explicação do código a você.
Veja que a inversão da lista é dada por S[::-1]. Fiquem atentos, pois nem todas as linguagens de programação trabalham dessa forma. Além disso, ressaltamos também o uso do yield.
Ele é uma espécie de retorno, gerando uma outra lista paralela com os elementos que você deseja. Da lista [1, 2, 3, 4, 5, 6], os números pares são 2, 4 e 6. Como vamos apresentar os valores invertidos, então o programa irá imprimir 6, 4 e 2.
Gabarito: Letra C.
Analise o código Python a seguir.
x = lambda a, b: a + [a[-1] + a[-2] + b]
y=[-1,0]
for i in range(7):
y = x(y, i)
print (y)
O resultado produzido pela execução desse código na IDLE Shell 3.9.9 é:
A) [-1, 0, -1, -1, -2, -3, -5, -8, -13]
B) [0, -1, 4, 9, 18, 33, 51, 84]
C) [-1, 0, -1, -2, -3, -5, -8, -13, -21]
D) [-1, 0, -1, 0, 1, 4, 9, 18, 33]
E) [-1, 0, -1, 4, 9, 18, 33, 51]
O código irá acrescentar um novo elemento na lista a cada iteração. Esse novo elemento será dado pela soma de 3 valores: último e penúltimo elementos da lista atual, além do índice correspondente a cada iteração. Vamos ver o que cada linha do código faz:
‘’’
Acrescenta na lista atual (a) o valor do último elemento (a[-1]), o valor do penúltimo elemento (a[-2]) e o índice correspondente a cada iteração (b)
‘’’
x = lambda a, b: a + [a[-1] + a[-2] + b]
y=[-1,0] #lista de elementos a serem analisados
for i in range(7): #iteração com i variando de 0 a 6
y = x(y, i) #chama a função, com lista e iteração como parâmetros
print (y) #imprime a lista final
Antes de mais nada, os comentários em Python de uma linha são representados por # na frente do texto. Por outro lado, os comentários multilinha são representados por ‘‘‘ na frente do texto (3 aspas simples). Utilizamos este artifício para facilitar a explicação do código a você.
Podemos destacar nessa questão o uso do lambda. Chamada de função anônima, ela caracteriza-se por receber vários parâmetros, mas conter apenas uma expressão. Na questão, veja que os parâmetros são a e b, enquanto a expressão é a + [a[-1] + a[-2] + b]. Assim:
Quando i = 0:
y = [-1, 0] + [0 – 1 + 0] = [-1, 0, -1]
Quando i = 1:
y = [-1, 0, -1] + [-1 + 0 + 1] = [-1, 0, -1, 0]
Não precisamos fazer as demais iterações, pois já conseguimos encontrar o gabarito. Veja que apenas uma alternativa apresenta a lista iniciando por [-1, 0, -1, 0].
Gabarito: Letra D.
A tabela presente no código em R abaixo apresenta a quantidade de processos analisados por três analistas (denotados por A1, A2 e A3) em diferentes anos.
dados = tibble::tibble(Analista=c(“A1”, “A1”, “A1”, “A2”,“A2”, “A3”, “A3”, “A3”),
Ano=c(2018,2019,2020,2019,2020,2018,2019,2020),
Processos=c(10,15,20,25,20,8,7,12))
Um programador roda o código abaixo em R.
tidyr::pivot_wider(data=dados, names_from=”Analista”, values_from=”Processos”)
Os valores esperados na primeira linha do objeto resultante do comando acima são:
A) 2018, 10, NA, 8
B) A1, 10, 15, 20
C) A1, 2018, 10
D) 2018, 18
E) A2, 2019, 25
O código irá montar um data frame (pense em uma tabela com dados, pois ficará mais fácil), pivotar esse data frame (agora pense em inversões, trocas de posições dos elementos) e, finalmente, selecionar a primeira linha desse data frame após pivotar. Vamos ver o que cada linha do código faz:
#definição do data frame dados, com as colunas Analista, Ano e Processos
#os valores das colunas estão representados dentro de c
dados = tibble::tibble(Analista=c(“A1”, “A1”, “A1”, “A2”,“A2”, “A3”, “A3”, “A3”),
Ano=c(2018,2019,2020,2019,2020,2018,2019,2020),
Processos=c(10,15,20,25,20,8,7,12))
#pivota o data frame dados
#os nomes das colunas virão de Analista (A1, A2 e A3)
#os valores para preencher as linhas virão de Processos (10, 15 etc.)
tidyr::pivot_wider(data=dados, names_from=”Analista”, values_from=”Processos”)
Antes de mais nada, os comentários em R são representados por # na frente do texto. Destacamos que a linguagem não suporta comentários em várias linhas. Utilizamos este artifício para facilitar a explicação do código a você.
Além disso, ressaltamos que o R trabalha com pacotes. O tibble é o pacote para definir os data frames, enquanto o tidyr é o pacote para realizar o pivoteamento a que nos referimos.
Após a definição do data frame, teremos a seguinte tabela. Veja que os valores das colunas aparecem na mesma ordem em que foram definidos no programa, sem nenhuma alteração (por enquanto):
Analista | Ano | Processos |
---|---|---|
A1 | 2018 | 10 |
A1 | 2019 | 15 |
A1 | 2020 | 20 |
A2 | 2019 | 25 |
A2 | 2020 | 20 |
A3 | 2018 | 8 |
A3 | 2019 | 7 |
A3 | 2020 | 12 |
A ação de pivotar mantém a coluna Ano intacta. No entanto, ele transforma os valores de Analista em colunas também (names_from=”Analista”). Sendo assim, ficaremos com as colunas Ano, A1, A2 e A3. E os valores das células? Eles virão da coluna Processos (values_from=”Processos”). Assim:
Ano | A1 | A2 | A3 |
---|---|---|---|
2018 | 10 | NA | 8 |
2019 | 15 | 25 | 7 |
2020 | 20 | 20 | 12 |
Reparou que no data frame original não havia sido definido o ano de 2018 para o analista A2? É como se não houvesse dados para isso. Sendo assim, a célula ficará com o valor NA após o pivoteamento, que significa não disponível (not available em inglês).
Por fim, como a questão solicitou a primeira linha, a resposta será a seguinte:
Ano | A1 | A2 | A3 |
---|---|---|---|
2018 | 10 | NA | 8 |
Gabarito: Letra A.
Utilizando a Linguagem R tem-se um objeto x como consta a seguir:
x
## [1] 1 3 4 3 4 <NA>
## Levels: 1 3 4
is.factor(x)
## [1] TRUE
O comando que resulta na soma dos elementos numéricos de x é:
A) sum(as.numeric(as.character(x)), na.rm = TRUE)
B) sum(x)
C) sum(as.numeric(x)), na.rm = TRUE)
D) sum(as.numeric(x)), na.rm = FALSE)
E) sum(x[-5])
Comentário: O código apresentou um objeto x, na forma de um vetor, e pediu a soma dos elementos numéricos. Sendo assim, vamos ter que desconsiderar os valores não disponíveis também.
Para somar os valores numéricos, utilizamos sum(as.numeric(x)). O intuito de utilizar as.numeric é fazer a conversão que precisamos de texto para números. Além disso, vamos precisar desconsiderar os valores não disponíveis (veja que temos um <NA>). Para isso, vamos utilizar o parâmetro na.rm = TRUE.
Ele indica que vamos remover (para quem conhece Linux, faça uma analogia com o comando rm de lá) os valores não disponíveis (na). Assim, teremos o seguinte comando:
sum(as.numeric(x), na.rm = TRUE)
Gabarito: Letra A.
Com relação ao teorema CAP e suas propriedades aplicadas ao contexto de bancos de dados NoSQL na Web, analise as afirmativas a seguir:
I. Consistência é a garantia de que o sistema devolverá a resposta correta a cada requisição de dados que atender, ou seja, os dados devolvidos serão os mais atualizados que estejam disponíveis.
II. Atomicidade é a garantia de que toda requisição recebida pelo sistema em um nó não falho, será respondida o mais isoladamente possível.
III. Performance é a garantia de que o sistema continue operante mesmo no caso de ocorrência de uma falha que isole os nós em grupos, e que os nós não consigam se comunicar com os demais do grupo.
Está correto o que se afirma em:
A) I, apenas.
B) II, apenas.
C) III, apenas.
D) I e II, apenas.
E) II e III, apenas.
Comentário: Vamos analisar as afirmativas individualmente:
I. Afirmativa correta. Consistência é uma das propriedades do Teorema CAP, representada pela letra C. Ela indica que os todos os usuários estão visualizando os mesmos dados fornecidos, ou seja, eles estarão atualizados frente a possíveis modificações.
II. Afirmativa errada. Não há o conceito de atomicidade no Teorema CAP. A letra A, proveniente da versão original em inglês (availability), representa a disponibilidade. Em outras palavras, os dados devem estar disponíveis para atendimento das solicitações dos usuários.
III. Afirmativa errada. Da mesma a assertiva II, não há o conceito de performance no Teorema CAP. A letra P, proveniente da versão original em inglês (partition tolerance), representa tolerância a partições. Ou seja, a solução deve continuar operando mesmo em caso de problemas com um dos nós que a compõem.
Gabarito: Letra A.
Com referência ao MongoDB, nas consultas usando o método find é possível exibir o resultado formatado por meio do método:
A) format
B) organize
C) pretty
D) structure
E) tidy
Comentário: Questão bem específica de MongoDB, que é um banco de dados NoSQL orientado a documentos. Para acertá-la, você teria que saber a coleção de métodos da ferramenta e o que eles fazem.
No nosso contexto, o método responsável por exibir os dados em formato amigável é o pretty. Os demais (format, organize, structure e tidy) foram introduzidos só para confundir o candidato.
Gabarito: Letra C.
Neste artigo, apresentamos uma bateria de questões comentadas da banca FGV para a disciplina de Fluência em Dados do edital da Receita Federal. As questões são uma forma bem prática de medir seu desempenho e reforçar o nível da sua preparação.
Independentemente de como tenha se saído hoje, não desanime e faça do aprendizado por questões de Fluência de Dados um norte para a sua vitória no concurso da Receita Federal. Recomendamos a utilização do Sistema de Questões do Estratégia para você praticar. O acesso é feito pelo link: https://concursos.estrategia.com/.
Por fim, caso você sinta necessidade de reforçar o conteúdo, lembramos que o Estratégia oferece diversos cursos em pdf, videoaulas e áudios para você ouvir onde quiser. Saiba mais sobre todos os nossos cursos disponíveis na plataforma por meio do link https://www.estrategiaconcursos.com.br/cursos/concurso/.
Bons estudos e até a próxima!
Cristiane Selem Ferreira Neves é Bacharel em Ciência da Computação e Mestre em Sistemas de Informação pela Universidade Federal do Rio de Janeiro (UFRJ), além de possuir a certificação Project Management Profissional pelo Project Management Institute (PMI). Já foi aprovada nos seguintes concursos: ITERJ (2012), DATAPREV (2012), VALEC (2012), Rioprevidência (2012/2013), TJ-RJ (2022) e TCE-RJ (2022). Atualmente exerce o cargo efetivo de Especialista em Previdência Social – Ciência da Computação no Rioprevidência, além de ser colaboradora do Blog do Estratégia Concursos.
O ICMBio (Instituto Chico Mendes de Conservação da Biodiversidade) definiu o Cebraspe como banca organizadora…
O concurso do ICMBio (Instituto Chico Mendes de Conservação da Biodiversidade), que inicialmente previa 350 vagas, agora,…
Já estão disponíveis os resultados preliminares, bem como o prazo de recursos, da etapa de…
A Prefeitura de Bebedouro, município do estado de São Paulo, divulgou o novo edital de…
Seguem abertas as inscrições para o concurso Guarda de Porto Nacional, no estado do Tocantins,…
Foi publicado o edital de concurso público do IPREM Cerqueira César (Instituto de Previdência Social…