WorksheetsQuiz de Revisão para Avaliação I - Desenvolvimento de SaaS
Total questions: 50
Worksheet time: 25mins
No modelo de computação em nuvem conhecido como SaaS (Software as a Service), qual é a principal característica que o diferencia dos demais modelos como IaaS e PaaS?
Permite que os usuários instalem e personalizem o sistema operacional em seus próprios servidores locais.
Oferece acesso a ferramentas de virtualização para que desenvolvedores configurem manualmente o ambiente de execução de aplicações.
Fornece uma plataforma para desenvolvimento de aplicações com controle total sobre o ambiente de execução.
Entrega softwares prontos para uso pela internet, eliminando a necessidade de instalação, manutenção e infraestrutura local por parte do usuário.
Exige que os usuários criem e mantenham containers e imagens personalizadas para executar seus aplicativos na nuvem.
Qual NÃO é uma vantagem do modelo SaaS?
Atualizações automáticas
Funcionamento offline completo
Redução de custos iniciais
Escalabilidade sob demanda
Acesso multiplataforma
No padrão arquitetural MVC (Model-View-Controller), é essencial separar as responsabilidades entre os componentes para garantir organização, reutilização e testabilidade do código. Suponha que uma equipe esteja desenvolvendo uma aplicação web com Spring MVC, onde é necessário aplicar regras como "um pedido só pode ser finalizado se houver pelo menos um item" e "o desconto só pode ser aplicado se o valor total for superior a R$ 100,00".
View – pois é responsável por capturar os dados do usuário e aplicar as validações visuais.
Controller – pois manipula diretamente a lógica de negócio para responder às requisições HTTP.
Model – pois encapsula os dados e a lógica de negócio, sendo a camada responsável por garantir o funcionamento correto das regras do sistema.
Repository – pois acessa os dados no banco e define a forma como a lógica de negócio será executada.
Service – pois representa a camada de apresentação que exibe mensagens de erro e feedback ao usuário final.
Qual é a principal função do Controller no MVC?
Armazenar dados persistentes
Renderizar a interface do usuário
Mediar a comunicação entre View e Model
Executar queries no banco de dados
Estilizar elementos visuais
Qual anotação do Spring marca uma classe como Controller?
@Service
@Controller
@Component
@Bean
@WebServlet
Qual interface do Spring Data JPA fornece métodos CRUD básicos?
ListCrudRepository
JpaRepository
PagingAndSortingRepository
EntityManager
CrudService
Qual anotação JPA transforma uma classe em entidade?
@Table
@Entity
@Column
@Id
@Repository
Qual anotação define a chave primária em uma entidade JPA?
@GeneratedValue
@Id
@PrimaryKey
@Column
@Key
Qual é o princípio da Inversão de Controle (IoC)?
O desenvolvedor gerencia manualmente todas as dependências
O framework controla o ciclo de vida dos objetos
As classes devem criar suas próprias dependências
Banco de dados gerencia as transações
Interface gráfica gerencia o fluxo
Qual anotação do Spring é usada para Injeção de Dependência?
@Component
@Autowired
@Entity
@Repository
@Inject
Qual método de injeção de dependência é considerado melhor prática no Spring?
Injeção por setter
Injeção direta no campo
Injeção por construtor
Injeção por método estático
Injeção por herança
Qual verbo HTTP é usado para recuperar um recurso?
POST
GET
PUT
DELETE
PATCH
Qual código HTTP indica que um recurso foi criado com sucesso?
200
201
400
404
500
Qual verbo HTTP é usado para substituir completamente um recurso?
POST
GET
PUT
DELETE
PATCH
Qual verbo HTTP é usado para atualizações parciais?
POST
GET
PUT
DELETE
PATCH
Qual código HTTP indica que a requisição foi malformada?
200
201
400
404
500
Qual anotação personaliza o nome da tabela no banco de dados?
@Entity
@Table
@Column
@Id
@Repository
Qual anotação personaliza o mapeamento de um atributo para coluna?
@Entity
@Table
@Column
@Id
@Field
Qual é a função da anotação @GeneratedValue?
Validar valores de campos
Gerar valores automáticos para chaves primárias
Criar índices no banco de dados
Definir valores padrão
Mapear relacionamentos
Como definir um método de consulta personalizado em um Repository?
Implementando a interface
Usando SQL puro no método
Anotando com @Query e JPQL
Criando uma classe separada
Usando @FindBy
Qual é o padrão de nomenclatura para métodos de consulta derivada?
findBy[Propriedade]
getBy[Propriedade]
queryBy[Propriedade]
searchBy[Propriedade]
selectBy[Propriedade]
Qual anotação marca uma classe como componente Spring?
@Bean
@Component
@Service
@Repository
@Controller
Qual starter do Spring Boot inclui o Spring MVC?
spring-boot-starter-data-jpa
spring-boot-starter-web
spring-boot-starter-thymeleaf
spring-boot-starter-test
spring-boot-starter
Qual arquivo é usado para configurações no Spring Boot?
pom.xml
application.properties
web.xml
config.json
settings.gradle
Qual anotação combina @Configuration, @EnableAutoConfiguration e @ComponentScan?
@SpringApplication
@SpringBootApplication
@MainApplication
@BootConfiguration
@SpringConfig
Qual template engine é comumente usado com Spring Boot?
JSP
Thymeleaf
Angular
React
Freemarker
Qual anotação define um método como handler de requisições HTTP?
@RequestMapping
@HttpHandler
@RestController
@Endpoint
@WebMethod
Qual é a diferença entre @Controller e @RestController?
@Controller retorna JSON, @RestController retorna views
@Controller é para MVC, @RestController é para APIs REST
@Controller não existe, é apenas @RestController
Não há diferença
@RestController é para SOAP
Qual é o papel do DispatcherServlet no Spring MVC?
Processar templates Thymeleaf
Gerenciar transações JPA
Atuar como front controller
Implementar segurança
Configurar o DataSource
Qual método do JpaRepository retorna todos os registros?
getAll()
findAll()
listAll()
retrieveAll()
loadAll()
Qual método do JpaRepository salva uma entidade?
add()
create()
save()
persist()
insert()
No contexto de aplicações SaaS, qual das alternativas abaixo melhor define uma arquitetura monolítica?
Uma aplicação composta por múltiplos serviços pequenos e independentes.
Uma estrutura onde cada componente da aplicação funciona como função isolada na nuvem.
Um único aplicativo unificado onde todas as funcionalidades estão acopladas em um único processo.
Um modelo onde o código é executado em resposta a eventos, sem provisionamento de servidor.
Qual das opções é uma característica típica de uma arquitetura de microsserviços?
Atualização da aplicação requer a reinstalação de todo o sistema.
Baixa escalabilidade devido à integração de componentes.
Execução automática de funções baseadas em eventos, com cobrança por execução.
Divisão da aplicação em serviços independentes que podem ser escalados separadamente.
Em uma arquitetura Serverless para SaaS, qual das opções representa uma vantagem significativa?
Maior controle sobre o sistema operacional do servidor.
Necessidade de gerenciamento manual da escalabilidade.
Execução contínua de código, mesmo quando não está sendo usado.
Redução de custos com base no uso, sem necessidade de provisionamento de recursos.
Qual das seguintes arquiteturas permite que cada serviço possa ser desenvolvido, testado e implantado independentemente, favorecendo equipes multidisciplinares?
Monolítica
Cliente-Servidor
Microsserviços
Serverless
Em relação às arquiteturas SaaS, qual alternativa apresenta uma desvantagem comum das arquiteturas monolíticas?
A complexidade de gerenciar e manter um único grande código-fonte.
Maior modularidade e isolamento de falhas.
Adoção nativa de eventos para execução sob demanda.
Facilidade de escalar funcionalidades específicas.
O que melhor define o conceito de Serverless em uma arquitetura SaaS?
Um modelo onde o código-fonte não precisa ser escrito, apenas configurado.
Uma abordagem que exige o uso de hardware dedicado.
Uma arquitetura baseada em microsserviços com camadas intermediárias.
Uma forma de executar código sob demanda, sem gerenciamento de servidores.
Em relação às decisões arquiteturais em projetos SaaS, qual afirmação está mais alinhada com as boas práticas para projetos em fase inicial?
Microsserviços devem ser sempre preferidos, mesmo em projetos pequenos, pela sua escalabilidade.
Serverless é a única opção viável para SaaS, pois elimina totalmente os custos técnicos.
Microsserviços reduzem drasticamente a complexidade de desenvolvimento em projetos novos.
A arquitetura monolítica é mais indicada no início de um projeto, pois tem menor custo técnico e é mais simples de desenvolver e implantar.
Qual é a principal função da Injeção de Dependência (DI) no Spring Boot?
O controle direto do desenvolvedor sobre o ciclo de vida dos objetos.
A delegação da criação e gerenciamento de dependências ao framework.
A substituição do banco de dados relacional por um banco NoSQL.
A separação total entre frontend e backend.
Qual é a principal função da Injeção de Dependência (DI) no Spring Boot?
Compilar o código em tempo real.
Substituir servidores web tradicionais.
Permitir que componentes dependam uns dos outros sem acoplamento rígido, facilitando testes e manutenção.
Criar automaticamente interfaces gráficas para o usuário.
Em uma arquitetura SaaS com Spring Boot, qual é o benefício direto do uso do padrão de Injeção de Dependência?
Permite que todas as dependências sejam instanciadas manualmente, garantindo maior controle sobre o código.
Centraliza toda a lógica da aplicação em uma única classe, facilitando o entendimento do sistema.
Reduz o acoplamento entre componentes, tornando a aplicação mais flexível e fácil de testar.
Garante que os objetos sejam criados em tempo de execução apenas quando houver chamadas REST.
Considerando um cenário de SaaS multitenant com Spring Boot, como a IoC pode contribuir para a escalabilidade da aplicação?
Permitindo que os usuários acessem o código-fonte da aplicação.
Forçando o uso de uma única instância para todos os tenants.
Facilitando a configuração e instanciamento dinâmico de serviços específicos por cliente.
Impedindo o uso de banco de dados distintos.
No contexto do Spring Boot, o que acontece quando anotamos uma classe com @Service, @Component ou @Repository?
O Spring ignora essas classes na inicialização.
Elas são compiladas em tempo de execução.
Elas são registradas no container de IoC e ficam disponíveis para injeção em outras partes da aplicação.
Elas são automaticamente exportadas como APIs REST.
Qual das alternativas melhor representa o papel do Spring Boot em aplicações SaaS modernas?
Um framework que exige configuração manual detalhada para funcionar.
Um toolkit para substituir bancos de dados relacionais.
Uma plataforma que simplifica o desenvolvimento, configuração e deploy de aplicações SaaS com base em boas práticas.
Um substituto para servidores de aplicação como Tomcat ou Jetty.
No contexto de APIs RESTful, o que significa dizer que uma aplicação é stateless?
O servidor REST mantém os dados de sessão do cliente entre as requisições para garantir segurança.
O cliente precisa enviar um token em cada requisição para que o servidor recupere o estado da sessão anterior.
Cada requisição enviada ao servidor deve conter todas as informações necessárias para ser processada, sem dependência de estado anterior.
O cliente e o servidor compartilham uma memória de contexto para otimizar a troca de mensagens.
Em uma arquitetura RESTful, quais informações são essenciais para que uma requisição HTTP seja corretamente interpretada e processada pelo servidor?
Apenas o corpo da requisição com os dados em JSON.
Apenas o endereço IP e porta do cliente solicitante.
O método HTTP, a URI, os cabeçalhos e, se aplicável, o corpo da requisição.
O nome do controller Java responsável pelo recurso.
Em uma aplicação Spring Boot com APIs REST, como ocorre a conversão dos dados JSON recebidos em requisições POST e PUT para objetos Java, e vice-versa?
Por meio de classes de utilitários específicas do Spring que fazem o mapeamento manual.
Utilizando bibliotecas externas instaladas manualmente para cada tipo de objeto.
Por meio da anotação @Entity combinada com o motor de persistência JPA.
Automaticamente, pelo mecanismo de serialização e desserialização da biblioteca Jackson integrada ao Spring Boot.
No contexto de testes de APIs REST com o Postman, qual das alternativas descreve corretamente uma funcionalidade essencial dessa ferramenta?
O Postman é usado exclusivamente para gerar código-fonte de controladores REST em Java.
O Postman permite criar e testar requisições HTTP, inspecionando respostas, status e headers, além de automatizar testes com scripts.
O Postman funciona como um ambiente de execução para projetos Spring Boot, substituindo o servidor embutido.
O Postman permite testar apenas endpoints com método GET, exigindo outra ferramenta para POST, PUT e DELETE.
No contexto do Spring Boot e da arquitetura em camadas, qual é a principal função de uma classe anotada com @Service?
Executar diretamente as requisições HTTP recebidas pela aplicação, tratando headers, parâmetros e corpo da requisição.
Realizar mapeamento objeto-relacional (ORM) entre entidades Java e tabelas do banco de dados, sendo usada para persistência.
Implementar regras e operações da lógica de negócios da aplicação, sendo automaticamente gerenciada pelo container IoC do Spring.
Armazenar configurações externas da aplicação, como URLs e variáveis de ambiente, acessíveis via @Value ou @ConfigurationProperties.
Em uma aplicação Spring Boot que expõe tanto uma interface web via Thymeleaf quanto uma API REST para consumo externo, um desenvolvedor define um serviço ClienteService que injeta um repositório ClienteRepository (interface que estende JpaRepository). Esse serviço é então injetado em dois controladores: um @Controller para páginas HTML e um @RestController para a API REST. Considerando os conceitos de injeção de dependência, mapeamento objeto-relacional e boas práticas arquiteturais, qual das alternativas descreve corretamente esse cenário?
O uso compartilhado de ClienteService por múltiplos controladores viola o princípio da responsabilidade única, pois um serviço não pode atender simultaneamente interfaces diferentes.
A injeção de ClienteRepository diretamente nos controladores seria mais apropriada para promover coesão e reduzir a quantidade de beans na aplicação.
A reutilização de um serviço entre diferentes tipos de controladores é adequada, desde que o serviço concentre apenas a lógica de negócios e não dependa de detalhes da apresentação.
A utilização de @RestController impede a injeção de componentes de serviço como @Service, sendo necessário criar serviços separados para APIs REST.
