Questões de Concurso sobre Padrões de Aplicações (JEE, PoEAA, Refactoring, etc.)

 
 
Disciplina
Assunto 1
Banca
Instituição
Cargo
Ano
Carreira
Área de formação
Escolaridade
Dificuldade
 
Comentários:
Professores
Alunos
Meus Comentários
Vídeo
 
Minhas questões:
Resolvidas
Não resolvidas
Certas
Erradas
 
Tipo de questão:
Certo e errado
Múltipla escolha
Incluir questões:
Anuladas
Desatualizadas
 
Questões:
Todas as questões
 
Filtro simplificado
 
Questões
Todas as questões
 
28 questões encontradas
Questões por página
20
Mais recentes
 

Em uma aplicação corporativa desenvolvida em Java e C#, a equipe de arquitetura revisou um módulo responsável por calcular diferentes políticas de cobrança. A versão inicial concentrava regras condicionais em uma única classe, com testes frequentes sobre o tipo concreto de cliente, produto e contrato. A proposta de refatoração envolveu uso de interfaces, classes especializadas, injeção de dependências e substituição de estruturas condicionais extensas por chamadas polimórficas. Acerca do tema, analise as sentenças a seguir:


I- O polimorfismo permite que objetos de classes diferentes sejam tratados por uma mesma abstração, de modo que a seleção do comportamento concreto possa ocorrer em tempo de execução, desde que os tipos envolvidos respeitem o contrato definido por uma interface, classe abstrata ou hierarquia compatível.

II- A herança deve ser utilizada sempre que duas classes compartilham atributos com nomes semelhantes, pois a reutilização estrutural é critério suficiente para estabelecer relação “é-um”, mesmo que os comportamentos esperados das subclasses violem substitutibilidade em relação à superclasse.

III- A redução de condicionais baseadas em tipo concreto pode aumentar a extensibilidade do módulo quando novas políticas de cobrança são adicionadas por meio de novas implementações de uma abstração, sem exigir alteração direta da lógica cliente que consome o contrato comum.

IV- O encapsulamento consiste em tornar todos os atributos privados e todos os métodos públicos, garantindo baixo acoplamento automaticamente, independentemente da exposição de detalhes internos por métodos de acesso e da estabilidade da interface pública da classe.


Analisadas as sentenças, estão CORRETAS apenas:


A

I e II.


B

I e III.


C

I e IV.


D

II e III.

Em um sistema corporativo desenvolvido em Java, decisões arquiteturais influenciam diretamente a manutenibilidade e a evolução do software. Aspectos relacionados ao funcionamento da JVM, à aplicação de padrões de projeto, aos princípios do SOLID, bem como à coesão, ao acoplamento e à modelagem UML, devem ser considerados. Diante desse cenário, assinale a alternativa correta:


A

O princípio da responsabilidade única favorece classes com foco bem definido, enquanto padrões como Strategy podem reduzir acoplamento ao permitir a variação de comportamentos sem alterações extensivas na estrutura existente; na JVM, o carregamento dinâmico de classes contribui para essa flexibilidade.


B

Diagramas UML, como o de classes, são utilizados apenas na fase inicial de análise, não sendo relevantes após a implementação, uma vez que padrões de projeto eliminam a necessidade de documentação estrutural.


C

O coletor de lixo da JVM atua apenas na liberação imediata de memória de objetos fora de uso, sendo seu funcionamento independente da forma como os objetos são referenciados no código ou do modelo de execução da aplicação.


D

A aplicação do princípio da substituição de Liskov permite que subclasses modifiquem livremente contratos definidos em superclasses, desde que a implementação seja compatível com a execução gerenciada pela JVM.

Acerca do desenvolvimento de software e práticas relacionadas, analise cada uma das afirmações a seguir como VERDADEIRA (V) ou FALSA (F):


( ) Desenvolvimento Ágil de Software busca implementar softwares mais rapidamente e com menos recursos.

( ) Refatoração consiste em alterar a funcionalidade de um programa para atender novos requisitos.

( ) Padrões de Projeto são arquiteturas reutilizáveis que ajudam a desenvolver softwares orientados a objetos de melhor qualidade, economizando tempo, dinheiro e esforço.


Assinale a alternativa que apresenta a sequência CORRETA:


A

V, V, F


B

F, V, F


C

V, F, F


D

V, F, V


E

F, F, V

Um módulo de relatórios da Assembleia foi projetado de modo que, sempre que um novo formato de relatório é necessário, o código da classe GeradorDeRelatorio precisa ser modificado para incluir a nova lógica de exportação.


Assinale o princípio SOLID está sendo violado por esse design, e a técnica ideal de design seria ideal para corrigi-lo


A

Dependency Inversion Principle; Correção: Padrão Adapter.


B

Single Responsibility Principle; Correção: Padrão Singleton.


C

Open-Closed Principle; Correção: Padrão Strategy ou Decorator.


D

Liskov Substitution Principle; Correção: Herança.


E

Interface Segregation Principle; Correção: Facade.

Ano: 2025
Prova: CESPE/CEBRASPE - PCDF - Gestor de Apoio - Área: Analista de Informática Desenvolvimento de Sistemas . - 2025

No nível de abstração, o reúso ocorre por aproveitamento de conhecimentos, como padrões de projeto, arquiteturas e outras práticas bem-sucedidas, que orientam o desenvolvimento de novos softwares.


C

Certo


E

Errado

Considere as seguintes arquiteturas:


I. Arquitetura de Microsserviços;

II. Framework JEE;

III. Arquiteturas Centradas em Dados.


É considerada arquitetura de camada o que consta em


A

II e III, somente.


B

I, somente.


C

II, somente.


D

III, somente.


E

I e II, somente.

Uma fintech especializada em processamento de pagamentos enfrenta dificuldades na manutenção da API de transações financeiras. Tais dificuldades ocorrem devido ao crescimento desorganizado do código dessa API, que resulta em funções extensas, repetição de lógica e desafios na implementação de novas funcionalidades. Pequenos ajustes nesse código tornaram-se arriscados, pois qualquer alteração pode gerar efeitos colaterais inesperados, além de demandar um tempo excessivo da equipe para compreender trechos confusos e mal estruturados. Para resolver esse problema, o diretor de tecnologia propõe a adoção de práticas de refatoração.


Dado o problema enfrentado por essa fintech, a abordagem que se alinha ao conceito de refatoração para resolver essa situação é a de


A

implementar verificações externas no código para capturar mais erros em tempo real e de execução.


B

priorizar o lançamento de novas funcionalidades antes de realizar qualquer refatoração no código existente.


C

reescrever códigos-fonte confusos que não demandam modificações, tornando-os mais claros, com o objetivo de subdividir o problema.


D

otimizar o desempenho, com vistas a conjugar a aceleração do tempo de resposta e um código mais fácil de operar.


E

modificar a estrutura interna do software de forma a torná-lo mais compreensível e menos custoso, preservando seu comportamento observável.

O refactoring extract superclass é utilizado para esconder dependências indiretas entre objetos, promovendo encapsulamento de delegações e reduzindo o acoplamento estrutural do sistema.


C

Certo


E

Errado

Em um projeto de software, a técnica de Refactoring (Refatoração) é utilizada principalmente para


A

adicionar novas funcionalidades ao sistema de acordo com novos requisitos.


B

realizar a migração do código-fonte para uma nova linguagem de programação.


C

corrigir defeitos críticos reportados pelos usuários, em produção.


D

melhorar a estrutura interna do código, sem alterar seu comportamento externo.


E

documentar o código-fonte por meio da inserção de comentários detalhados.

Aplicação de padrões como Aggregates e Value Objects, no domain-driven design, visa a desacoplar o domínio de negócio do modelo de domínio, permitindo que a lógica de negócio seja isolada em camadas técnicas.


C

Certo


E

Errado

A refatoração é o processo de modificar trechos de código com o objetivo de melhorar seu entendimento. Sobre as técnicas utilizadas para refatoração é correto afirmar que


A

“Extract method” e “Inline method” são técnicas que removem métodos existentes.


B

a técnica "Extract Method" renomeia um método, enquanto a "Inline Method" move um método para uma classe diferente.


C

a técnica "Extract Method" cria um método a partir de um trecho de código inline, enquanto a "Inline Method" remove um método e o substitui por um código inline.


D

a técnica "Extract Method" remove um método e o substitui por um código inline, enquanto a "Inline Method" cria um método a partir de um trecho de código inline.

Acerca de conceitos, frameworks e boas práticas no contexto de arquiteturas de sistemas, assinale a afirmativa correta.


A

Normalmente, conexões do tipo SOAP são mais rápidas e fáceis de usar do que as provenientes de APIs REST.


B

O Princípio da Substituição de Liskov afirma que os sistemas mais flexíveis são aqueles nos quais as dependências do código-fonte se referem apenas a abstrações.


C

O Entity Framework Core é o ORM da plataforma .NET, o qual elimina a necessidade da maioria do código de acesso a dados que os desenvolvedores geralmente precisam escrever.


D

O padrão Strangler permite que desenvolvedores criem e suportem um tipo de back-end por interface de usuário.


E

Usar códigos de retorno ao invés de exceções e não utilizar verbos como nomes para classes são boas práticas de design de software.

Dentre as atividades de desenvolvimento descritas abaixo, assinale a opção que apresenta uma atividade que NÃO é de refatoração de código:


A

Um trecho longo de código dentro de um método é transformado em um novo método, tornando o código original mais legível e fácil de entender.


B

Uma biblioteca utilizada pelo sistema é atualizada para uma nova versão, trazendo melhorias de performance, segurança ou novas funcionalidades.


C

Uma classe com muitas responsabilidades é dividida em múltiplas classes menores e mais especializadas, melhorando a organização e coesão do código.


D

Uma expressão complexa é atribuída a uma nova variável com nome descritivo, melhorando a legibilidade do código.


E

Uma estrutura de código que usa tipos para diferenciar comportamento é substituída por subclasses, tornando o código mais flexível e fácil de estender.

O analista Joaquim implementou o código do sistema TRF1Web seguindo os princípios SOLID. O TRF1Web já se encontra em produção. A documentação do TRF1Web, escrita por Joaquim, estabelece que novas funcionalidades devem ser introduzidas no sistema por meio de plugins, sem modificar o código atual do sistema.


Essa maneira de introduzir novas funcionalidades no TRF1Web é resultado direto da aplicação do seguinte princípio SOLID:


A

aberto/fechado;


B

substituição de Liskov;


C

responsabilidade única;


D

segregação de interfaces;


E

inversão de dependência.

A prática de refactoring resulta em uma versão que altera o comportamento externo do código enquanto melhora aspectos como desempenho, legibilidade e manutenibilidade, promovendo uma melhoria substancial na eficiência do código.


C

Certo


E

Errado

Determinado desenvolvedor de softwares, com experiência em uma linguagem de programação específica, foi contratado por uma Software House de grande porte para trabalhar com a mesma linguagem de programação do seu domínio. Durante o processo de onboarding, o profissional recebeu diversas orientações sobre os produtos da empresa, as necessidades e também os desafios de cada um dos projetos; na parte técnica, o profissional foi instruído inúmeras vezes que na organização existem diversos códigos legados, que foram produzidos no início desses projetos por desenvolvedores que já não fazem mais parte da organização e que, por norma de um acordo interno, todas as intervenções nesses códigos necessitam passar por um processo de refatoração e adequação de boas práticas de programação. Como material de apoio, o desenvolvedor recebeu toda a documentação interna da empresa onde constam os padrões de código, baseados em técnicas de Clean Code, que devem ser seguidos nas implementações, além de uma indicação de leitura e estudo de livros relacionados a esse tema. Diante do exposto, assinale a afirmativa INCORRETA.


A

É importante aplicar o princípio da responsabilidade exclusiva que afirma que uma classe deve ter um, e apenas um, motivo para mudar.


B

Para confirmar se uma função faz apenas uma “única coisa”, pode-se verificar se todas as instruções internas estão no mesmo nível de abstração.


C

É recomendável a criação de funções com finalidade específica, pequenas e devidamente aninhadas, facilitando o processo de leitura e compreensão.


D

É aconselhável a utilização de nomes de variáveis passíveis de busca, que não possuam apenas uma letra ou números, pois são de difícil localização em um texto longo.

Relacione adequadamente cada conceito de Arquitetura de Software à sua respectiva descrição.


1. Padrões de projeto (GoF, de criação, estruturais, comportamentais).

2. Clean Code.

3. Tecnologias de integração (Web services, RESTful, SOAP e GraphQL, Mensageria).

4. Design de software.


( ) Conjunto de diretrizes para escrever código claro, conciso e fácil de manter.

( ) Abordagens para integrar sistemas distribuídos e garantir a comunicação entre aplicativos.

( ) Soluções reutilizáveis para problemas comuns de design de software, definidas por um grupo de especialistas.

( ) Processo de criar uma estrutura organizacional e funcional para o software que atenda aos requisitos do usuário e aos objetivos de negócios.


A sequência está correta em


A

2, 3, 1, 4.


B

4, 1, 2, 3.


C

2, 1, 3, 4.


D

2, 3, 4, 1.

A analista Raquel foi designada para refatorar o código de um sistema à luz da Arquitetura Limpa. Raquel iniciou a tarefa assimilando os princípios de design utilizados pela arquitetura. A analista seguiu determinando a camada apropriada da Arquitetura Limpa para cada módulo do sistema. Logo após, Raquel revisou a implementação dos módulos A e B, que encapsulam regras de negócio específicas à aplicação. A analista removeu as referências diretas aos módulos A e B no código da camada interior adjacente, aplicando o princípio de design que garante a não violação da Regra da Dependência ao longo das camadas, durante o fluxo de controle.


Raquel removeu as referências diretas aos módulos A e B da camada de:


A

entidades, aplicando a segregação de interface;


B

entidades, aplicando a inversão de dependência;


C

casos de uso, aplicando a segregação de interface;


D

adaptadores, aplicando a segregação de interface;


E

adaptadores, aplicando a inversão de dependência.

Refactorings são modificações realizadas em um software, preservando seu comportamento e visando exclusivamente à melhoria de seu código ou projeto.


É exemplo de refactoring:


A

Corrigir erros no código reportados por usuários.


B

Renomear um método ou variável.


C

Incluir uma nova funcionalidade no sistema.


D

Migrar o sistema para uma versão nova da linguagem.

Acerca dos equipamentos de rede de computadores, o padrão IEEE 802.3af descreve a tecnologia popularmente conhecida como PoE, a qual


A

permite a transmissão de dados wireless protegida por uma tecnologia de criptografia de chave assimétrica.


B

permite a conversão direta de cabos de fibra óptica em sinais gigabit Ethernet para a transmissão em host-post.


C

permite a utilização de bridge em redes hibridas, com cabeamento gigabit nos padrões Cat5 e Cat6.


D

permite, juntamente com os dados, o transporte de energia elétrica para alimentação dos dispositivos utilizando o próprio cabo de par trançado.

 
 
Gerar simulado