QuestLab Plataforma Inteligente de Questões
Banco público de questões

Questões para Concursos

Pesquise questões reais por disciplina, assunto, tópico, banca, órgão, cargo, ano e modalidade.

Questões por banca

29 bancas disponíveis. Clique para visualizar todas.

Encontre as questões que procura
Limpar filtros
7 questões encontradas

Sobre divisão e conquista, memoização e programação dinâmica, assinale a alternativa correta.

A Sempre que um algoritmo recursivo apresenta subproblemas sobrepostos, a estratégia adequada é divisão e conquista, pois a independência entre subproblemas evita recomputações.
B A memoização é uma abordagem iterativa de baixo para cima: percorre todos os subproblemas em ordem crescente de tamanho, armazenando cada resultado sequencialmente em tabela antes de resolver qualquer subproblema de tamanho maior.
C A tabulação resolve, de forma iterativa, apenas os subproblemas que seriam efetivamente alcançados pela versão recursiva do mesmo algoritmo, evitando computações desnecessárias com estados inatingíveis
D Divisão e conquista e programação dinâmica são estratégias equivalentes: ambas subdividem o problema em partes menores, resolvem cada parte e combinam os resultados — a diferença é apenas notacional, não algorítmica.
E A memoização é uma estratégia top-down: aplicada a algoritmos recursivos, armazena o resultado de cada subproblema na primeira vez que é calculado, reutilizando-o em chamadas subsequentes; a tabulação é bottom-up e preenche a tabela iterativamente em ordem crescente de tamanho de subproblema.

Uma desenvolvedora está implementando o carrinho de compras de um sistema de e-commerce. Ela percebe que, ao enviar a segunda requisição HTTP ao servidor — adicionando um segundo produto ao carrinho —, o servidor não tem como associá-la à primeira requisição do mesmo cliente: o carrinho parece estar sempre vazio a cada nova chamada. Assinale a alternativa que identifica corretamente a causa do problema e a abordagem padrão para resolvê-lo.

A O HTTP é um protocolo sem estado (stateless): cada requisição é processada de forma independente, sem memória de interações anteriores. O estado da sessão é gerenciado na camada de aplicação via cookies — o servidor emite um identificador de sessão que o cliente reenvia em cada requisição subsequente.
B Conexões TCP persistentes (keep-alive) não foram habilitadas. Sem elas, o servidor encerra o contexto da sessão ao fechar o socket. Com keep-alive ativo, o protocolo de transporte mantém automaticamente o estado do carrinho entre requisições.
C Falta um módulo de rastreamento ativo no servidor: servidores HTTP associam automaticamente o estado da sessão ao IP de origem, mas apenas quando o módulo está habilitado — requisições do mesmo IP passam então a compartilhar a mesma sessão.
D O cabeçalho ‘Connection: keep-alive’ não foi incluído nas requisições. Sem ele, o servidor encerra o contexto de sessão após cada resposta e não preserva variáveis, como o conteúdo do carrinho, entre chamadas consecutivas.
E O HTTP/1.0 não suportava sessões persistentes; migrar para HTTP/1.1 e habilitar keep-alive faz o protocolo manter automaticamente o estado da aplicação entre requisições do mesmo cliente.

Sobre consultas em SQL padrão (ANSI/ISO) com GROUP BY, HAVING e funções de agregação, assinale a alternativa correta.

A A cláusula WHERE filtra grupos após o GROUP BY, enquanto a cláusula HAVING filtra linhas individuais antes da formação dos grupos.
B A cláusula HAVING é aplicada aos grupos após sua formação e pode usar funções de agregação. Além disso, COUNT(*) conta todas as linhas do grupo, enquanto COUNT(atributo) desconsidera valores NULL desse atributo.
C COUNT(atributo) e COUNT(*) são equivalentes: ambas contam todas as linhas do grupo, inclusive aquelas em que o atributo vale NULL.
D Em uma consulta com GROUP BY, qualquer atributo presente na lista SELECT pode aparecer fora de função agregadora mesmo sem constar no GROUP BY, desde que pertença à tabela agrupada.
E Funções de agregação podem ser usadas livremente na cláusula WHERE, desde que a consulta também contenha GROUP BY.

A engenharia de requisitos compreende as atividades de identificação, documentação e gerenciamento dos requisitos de um sistema de software. A distinção entre os tipos de requisitos e as práticas de rastreabilidade são aspectos centrais para a qualidade do processo e do produto. Nesse sentido, assinale a alternativa correta.

A Um requisito não funcional não especifica o que o sistema deve fazer, mas sob quais condições ou com quais atributos de qualidade ele deve operar; sua violação pode tornar o sistema inutilizável, mesmo que todos os requisitos funcionais sejam satisfeitos.
B Requisitos funcionais definem atributos de qualidade do sistema, como desempenho, confiabilidade e segurança. Os requisitos não funcionais especificam as funções e os comportamentos que o sistema deve executar em resposta a determinadas entradas ou eventos.
C Requisitos de usuário são redigidos em linguagem técnica e notação formal, destinada à equipe de desenvolvimento; requisitos de sistema, por sua vez, são expressos em linguagem natural acessível a gerentes e stakeholders não técnicos.
D A rastreabilidade de requisitos permite reconstruir o histórico de origem de cada requisito (rastreabilidade backward), mas não pode estabelecer relações entre os requisitos e os artefatos de design, código e testes produzidos a partir deles.
E Descumprir um requisito não funcional não compromete a aceitabilidade do sistema desde que todos os requisitos funcionais sejam atendidos. Requisitos não funcionais representam metas de qualidade desejáveis, não exigências vinculantes.

Uma Árvore Binária de Pesquisa (ABP) organiza chaves de forma que, para cada nó, todos os valores na subárvore esquerda são menores e todos na subárvore direita são maiores. A Árvore AVL é uma ABP autoequilibrada que mantém, em cada nodo, a invariante de que as alturas das subárvores esquerda e direita diferem em, no máximo, 1. Nesse contexto, assinale a alternativa correta.

A Uma ABP construída pela inserção de n elementos em ordem estritamente crescente mantém altura O(log n), pois a propriedade de busca binária distribui as chaves de forma equilibrada entre as subárvores.
B A operação de busca em uma AVL tem complexidade O(n) no pior caso, pois o rebalanceamento pode deslocar nodos de posição imprevisível durante a travessia.
C A inserção em uma AVL pode violar temporariamente a invariante de equilíbrio no ancestral mais baixo do nodo inserido; o desequilíbrio é corrigido por uma rotação simples (caso LL ou RR) ou uma rotação dupla (caso LR ou RL), restaurando a invariante e mantendo a altura garantida O(log n).
D O fator de balanceamento de um nó AVL é definido como a diferença entre o número total de nodos das subárvores esquerda e direita e deve ser igual a zero em todos os nodos da árvore.
E A remoção de um elemento em uma AVL nunca exige rotações, pois a substituição do nodo removido pelo seu sucessor in-order preserva automaticamente a invariante de balanceamento.

A arquitetura de microsserviços contrasta com a arquitetura monolítica em aspectos como acoplamento entre componentes, independência dos serviços e forma de interação entre eles. Nesse sentido, assinale a alternativa correta.

A Em uma arquitetura monolítica, a aplicação é decomposta em serviços independentes de plataforma, fracamente acoplados, que interagem por interfaces para compor o sistema.
B Na arquitetura orientada a serviços, os componentes devem ser fortemente acoplados entre si e compartilhar estado e dependências comuns, para garantir a consistência das operações distribuídas sem necessidade de coordenação explícita.
C Na arquitetura de microsserviços, os serviços devem basear-se em componentes externos compartilhados, para garantir seu comportamento funcional e não funcional consistente em qualquer ambiente de execução.
D Na arquitetura de microsserviços, a aplicação é composta por serviços independentes de plataforma e linguagem de implementação, fracamente acoplados, que interagem entre si para compor o sistema.
E Na arquitetura de microsserviços, cada serviço executa de forma completamente isolada, sem necessitar de comunicação com os demais serviços do sistema para realizar suas operações.

Os modelos de processo de software diferem na forma como organizam suas atividades e na adequação a diferentes contextos de projeto. Assinale a alternativa correta.

A O modelo cascata é recomendado para projetos com requisitos sujeitos a mudanças frequentes, pois sua estrutura sequencial facilita a incorporação de alterações entre as fases.
B O desenvolvimento incremental consiste em uma série de cascatas independentes, cada uma entregando um subsistema completo e encapsulado antes de iniciar o próximo.
C O modelo espiral é um processo incremental dirigido por riscos, em que cada ciclo representa uma fase do desenvolvimento com análise explícita de riscos como atividade central.
D O modelo espiral de Boehm é uma variante do modelo cascata dividida em quatro fases fixas, sem consideração explícita de análise de riscos entre os ciclos.
E O modelo cascata e o desenvolvimento incremental produzem resultados equivalentes para qualquer projeto, diferindo apenas no número de iterações necessárias — o cascata realiza todas as fases em um único ciclo, enquanto o incremental as repete em ciclos menores.