Revisão Estratégica TI - Parte 2

Eng. de Dados, DevOps, Qualidade e Segurança (Q64 a Q76)

Home

Q64: SQL - CTE (Common Table Expression)

GABARITO: CERTO

"...a utilização da CTE (common table expression) apresentada a seguir para encapsular a lógica de ranking é semanticamente equivalente à consulta SQL apresentada..."

Equivalência Semântica

Subquery (Q63 Anterior)
SELECT id, valor
FROM (
  SELECT *, ROW_NUMBER() OVER(...) AS rn
  FROM contratos
) t
WHERE rn = 1
CTE (WITH clause)
WITH rankeados AS (
  SELECT *, ROW_NUMBER() OVER(...) AS rn
  FROM contratos
)
SELECT id, valor
FROM rankeados
WHERE rn = 1

A cláusula WITH (CTE) foi criada no padrão SQL para resolver exatamente o problema da leitura difícil das subqueries aninhadas (derived tables). Para o motor do banco de dados (Query Optimizer), o plano de execução gerado por ambas abordagens será idêntico (são semanticamente equivalentes).

Q65: ELT e Medallion Architecture

GABARITO: CERTO

"...implementação de CDC integrada a um modelo ELT permite que os eventos de alteração de dados (DML) sejam ingeridos e persistidos no repositório central em seus formatos semiestruturados originais."

Paradigma ELT em Data Lakes (Medallion)


Origem (RDBMS)
E (Extract) CDC
BRONZE
Raw / Json
(L - Load Original)
T (Transform)
SILVER

No passado usava-se ETL (o dado era transformado antes de ser salvo no Data Warehouse). No modelo de nuvem atual usamos ELT: o dado é extraído e imediatamente Carregado (L) na "Camada Bronze" do Data Lake em seu formato bruto (ex: JSON do CDC do Kafka). Só depois ele é Transformado (T) via Spark/DBT para tabelas limpas (Silver) e agregadas (Gold).

Q66: SCRUM - Product Owner

GABARITO: ERRADO

"...em cenários de alta complexidade com múltiplos stakeholders, essa responsabilidade [sobre o Product Backlog] é compartilhada com o scrum master..."

O Dono Absoluto do Produto

Product Owner (PO)

ÚNICO responsável por maximizar o valor do produto e pelo gerenciamento eficaz do Product Backlog.

Accountable

Delegação vs Responsabilidade

O PO pode até pedir ajuda ao Scrum Master ou aos Devs para escrever os itens, mas a responsabilidade final (prestação de contas) NUNCA é compartilhada no Scrum Guide. O PO é uma pessoa, não um comitê.

Q67: Prototipação no Ágil

GABARITO: ERRADO

"...prototipação é considerada incompatível com o desenvolvimento incremental... protótipos representam versões necessariamente descartáveis..."

Tipos de Protótipo (Eng. de Software)

Protótipo Descartável (Throwaway)

Feito rápido para validar requisitos (ex: telas no Figma/Papel). Após validar, é jogado fora e o sistema real é codificado do zero.

Protótipo Evolutivo

Totalmente COMPATÍVEL com métodos ágeis. Uma base sólida é construída e o protótipo vai recebendo incrementos de código até se transformar no produto final em produção.

A questão comete dois erros graves: diz que é incompatível com o ágil (mentira, Ágil ama validação rápida) e diz que todo protótipo é "necessariamente" descartável (ignorando os protótipos evolutivos).

Q68: CI/CD - Integração Contínua

GABARITO: CERTO

"...a eficácia da integração contínua fundamenta-se na execução automatizada de builds e testes, visando assegurar que o código integrado ao ramo principal (main branch) permaneça em um estado tecnicamente implantável..."

Pipeline CI (Continuous Integration)

Dev faz Push
Auto Build
Auto Testes
Merge na Main

A definição acadêmica de CI (Integração Contínua) é exatamente essa: sempre que um desenvolvedor submete um código, o servidor de CI (como Jenkins, GitLab CI) puxa o código, compila (build) e roda testes automatizados unitários. O objetivo de negócio disso é evitar o "inferno da integração" e garantir que a branch `main` nunca quebre (estado sempre implantável).

Q69: Testes de Software

GABARITO: CERTO

"...teste funcional visa verificar a conformidade... às suas especificações técnicas (caixa-preta), o teste de aceitação busca validar a prontidão do produto para o uso... ótica das necessidades de negócio..."

Níveis e Tipos de Teste

Teste Funcional (Verificação)

Pergunta: "Construímos o sistema corretamente?"

Feito pela equipe de QA/Testadores. Verifica o sistema "Caixa-Preta" batendo contra o documento de requisitos técnicos. Ex: "A senha exige 8 caracteres?".

Teste de Aceitação / UAT (Validação)

Pergunta: "Construímos o sistema certo (útil)?"

Feito pelos Usuários Finais/Cliente. O foco não é achar bug técnico, mas confirmar se o software atende ao processo de negócio real do dia a dia.

Q70: Análise de Pontos de Função (APF)

GABARITO: CERTO

"...sistema tenha 120 pontos de função não ajustados (UFP) e que a soma das 14 características gerais (GSC) seja igual a 30... o total de pontos de função ajustados (PFA) será exatamente igual a 114."

Matemática da APF (IFPUG)

/* Passo 1: Calcular o Fator de Ajuste de Valor (VAF) */
VAF = (GSC * 0.01) + 0.65
VAF = (30 * 0.01) + 0.65
VAF = 0.30 + 0.65
VAF = 0.95
/* Passo 2: Calcular o Ponto de Função Ajustado (PFA) */
PFA = UFP * VAF
PFA = 120 * 0.95
PFA = 114

Dica de Prova: O manual do IFPUG diz que cada uma das 14 características pode ter grau de influência de 0 a 5 (Total máximo: 70). Sendo assim, o VAF pode variar no mínimo de 0.65 (se GSC=0) até o máximo de 1.35 (se GSC=70). Se cair na prova "VAF variando de 0 a 1", marque errado.

Q71: Autenticação Biométrica

GABARITO: ERRADO

"Sistemas de autenticação biométrica modernos armazenam, por definição, a imagem biométrica bruta capturada... pois a verificação exige a comparação direta entre a imagem..."

Como Funciona Biometria (Template)

Imagem Bruta
(NÃO ARMAZENA)
Algoritmo extrai
Minúcias (Pontos de intersecção)
Template (Hash)
(O QUE FICA SALVO)

Por questões de Segurança e Privacidade (LGPD), sistemas modernos não salvam "fotos" da digital ou íris. Eles processam a imagem bruta, extraem pontos matemáticos (template/hash irreversível) e deletam a foto. Na hora do login, a nova leitura é convertida em template novamente, e o sistema compara os templates (vetores matemáticos), não as imagens.

Q72: Certificados X.509 (Autenticação)

GABARITO: CERTO

"...o usuário comprova a posse da chave privada... e o servidor é capaz de validar a assinatura utilizando a chave pública contida no certificado."

Challenge-Response Authentication

A questão descreve a perfeição o processo de autenticação de cliente (Client Certificate Authentication) em protocolos como TLS/SSL.

  • O Servidor envia um "Desafio" (Challenge - dados aleatórios) para o Usuário.
  • O Usuário assina o desafio usando sua Chave Privada (que está protegida no seu smartcard/token).
  • O Usuário envia o desafio assinado + seu Certificado Digital X.509 (que contém sua Chave Pública).
  • O Servidor pega a Chave Pública de dentro do certificado do usuário e a usa para validar a assinatura matemática no desafio. Se bater, está autenticado.

Q73: Rootkit vs Botnet

GABARITO: ERRADO

"Um rootkit é um tipo de malware cuja principal função é integrar múltiplos computadores comprometidos em uma botnet controlada remotamente por um servidor C2."

Classificação de Malwares

A Questão descreveu: BOT

O foco do malware BOT (Zumbi) é exatamente infectar a máquina e fazê-la se comunicar com um servidor de Comando e Controle (C2 / C&C). A rede de zumbis forma a Botnet, usada para disparar ataques DDoS (negação de serviço) massivos ou enviar spam.

O que é: ROOTKIT

O foco do Rootkit é a Ocultação (Furtividade). Ele adultera o kernel do sistema operacional para esconder do antivírus e do administrador processos, arquivos maliciosos, portas de rede abertas e registros. Mantém o acesso de "Root/Admin" indetectável.

Q74: Malware (Worm)

GABARITO: CERTO

"Um worm é um tipo de malware capaz de se propagar pela rede explorando vulnerabilidades... sem depender da execução de um arquivo hospedeiro por um usuário."

Vírus Clássico vs Worm

Característica Vírus Worm (Verme)
Depende de Arquivo Hospedeiro? SIM (Infecta um .exe / .docx) NÃO (Standalone)
Requer Ação do Usuário? SIM (Dar duplo clique) NÃO (Autopropagação via rede)

O Worm varre a rede local buscando máquinas com serviços vulneráveis (ex: falhas no SMB do Windows - WannaCry). Quando acha, ele envia a si mesmo pela rede e se instala sozinho. Essa independência é a marca registrada cobrada em provas.

Q75: Buffer Overflow e Linguagens

GABARITO: ERRADO

"Em linguagens de programação compiladas, a ocorrência de buffer overflow é impedida pelo próprio modelo... que realiza automaticamente a verificação de limites (bounds checking)..."

O perigo do C / C++

A afirmação é completamente o oposto da realidade histórica da computação. As linguagens compiladas clássicas (C, C++) foram projetadas para máxima performance e acesso direto à memória (ponteiros).

// Exemplo Clássico em C: Sem validação nativa
char buffer[10];
strcpy(buffer, "STRING_COM_MUITO_MAIS_DE_10_LETRAS");
>> SEGMENTATION FAULT / BUFFER OVERFLOW

A função strcpy do C não faz "bounds checking". Ela copia dados até achar um byte nulo, estourando a memória se o dado for maior que o buffer. Linguagens mais modernas (Java, C#, Rust, Python) implementam abstrações ou checagem de limites (causando exceções *IndexOutOfBounds* antes da memória corromper), mas dizer que linguagens compiladas "impedem" isso nativamente é falso.

Q76: Stack-based Buffer Overflow

GABARITO: CERTO

"...permite a execução de código arbitrário quando dados excedentes sobrescrevem o endereço de retorno armazenado na pilha... redirecionando o fluxo do programa para instruções..."

"Smashing the Stack" (Anatomia do Ataque)

Estrutura de uma Função na Pilha (Memória)
Parâmetros da Função
Endereço de Retorno (RET) <- ALVO DO HACKER!
Ponteiro Base (EBP)
Variável Local (Buffer [10])
AAAAAA\x90\x90Shellcode\xFF\xFF
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Crescimento dos dados

A arquitetura de processadores (x86) gerencia chamadas de funções usando a memória Pilha (*Stack*). Quando uma função é chamada, o processador salva o "Endereço de Retorno" (para saber pra onde voltar após acabar). Se um hacker injeta mais dados num buffer local do que ele suporta (transborda "para cima" na representação lógica), o excesso sobrescreve o EBP e o Retorno (RET) com um novo endereço inserido pelo atacante, que aponta para um malware embutido nos próprios A's enviados (Shellcode).