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
FROM (
SELECT *, ROW_NUMBER() OVER(...) AS rn
FROM contratos
) t
WHERE rn = 1
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)
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.
AccountableDelegaçã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)
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)
VAF = 0.30 + 0.65
VAF = 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)
(NÃO ARMAZENA)
Minúcias (Pontos de intersecção)
(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).
strcpy(buffer, "STRING_COM_MUITO_MAIS_DE_10_LETRAS");
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)
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).