Dataprev: Desenvolvimento de Software (FGV)
Conceitos fundamentais de desenvolvimento de software cobrados em concursos da FGV para a Dataprev.
Cartões · 35
- Princípio da Responsabilidade Única (SRP)
- Uma classe deve ter apenas um motivo para mudar, focando em uma única responsabilidade no sistema.
- Princípio Aberto/Fechado (OCP)
- Entidades de software devem estar abertas para extensão, mas fechadas para modificação.
- Princípio da Substituição de Liskov (LSP)
- Objetos de uma superclasse devem poder ser substituídos por objetos de suas subclasses sem quebrar o sistema.
- Princípio da Segregação de Interfaces (ISP)
- Clientes não devem ser forçados a depender de interfaces que não utilizam; prefira interfaces específicas.
- Princípio da Inversão de Dependência (DIP)
- Módulos de alto nível não devem depender de módulos de baixo nível; ambos devem depender de abstrações.
- Padrão Singleton
- Garante a existência de apenas uma instância de uma classe no sistema e provê um ponto de acesso global a ela.
- Padrão Factory Method
- Define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar.
- Padrão Strategy
- Define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis em tempo de execução.
- Padrão Observer
- Define uma dependência um-para-muitos entre objetos, notificando todos os dependentes quando o estado muda.
- Padrão Adapter
- Converte a interface de uma classe em outra interface esperada pelos clientes, permitindo interoperabilidade.
- Padrão Decorator
- Adiciona responsabilidades adicionais a um objeto dinamicamente, sem alterar sua estrutura básica.
- Propriedade ACID: Atomicidade
- Garante que todas as operações da transação sejam executadas com sucesso ou nenhuma delas seja aplicada.
- Propriedade ACID: Consistência
- Assegura que a transação leve o banco de um estado válido a outro, respeitando todas as regras e restrições.
- Propriedade ACID: Isolamento
- Garante que a execução concorrente de transações resulte em um estado equivalente à execução sequencial.
- Propriedade ACID: Durabilidade
- Garante que o resultado de uma transação confirmada seja gravado de forma permanente, mesmo com falhas.
- Teorema CAP
- Sistemas distribuídos podem garantir simultaneamente no máximo duas de três propriedades: Consistência, Disponibilidade e Tolerância a Partições.
- Idempotência em APIs REST
- Propriedade de uma operação cujo resultado e efeito colateral são idênticos, independentemente do número de execuções (ex.: GET, PUT, DELETE).
- Método HTTP POST
- Utilizado para criar novos recursos no servidor; não é uma operação idempotente por padrão.
- Método HTTP PUT vs PATCH
- PUT substitui integralmente o recurso existente, enquanto PATCH aplica modificações parciais a ele.
- Modelo de Maturidade de Richardson: Nível 2
- Uso correto dos verbos e métodos HTTP (GET, POST, etc.) combinados com códigos de status apropriados.
- Modelo de Maturidade de Richardson: Nível 3
- Introdução de controles hipermídia como motor do estado da aplicação, conhecido como HATEOAS.
- Git: Rebase vs Merge
- Merge preserva o histórico exato criando um commit de junção; Rebase reaplica commits linearmente na branch base.
- Git: Cherry-pick
- Comando que aplica as alterações introduzidas por commits específicos de outra branch na branch atual.
- Integração Contínua (CI)
- Prática de integrar código frequentemente em um repositório compartilhado, validado por builds e testes automáticos.
- Implantação Contínua (CD)
- Processo automatizado onde qualquer alteração aprovada em pipeline é liberada diretamente em produção sem intervenção manual.
- Estratégia Blue-Green Deployment
- Técnica que mantém dois ambientes idênticos de produção para alternar o tráfego instantaneamente e reduzir downtime.
- Estratégia Canary Deployment
- Liberação gradual de uma nova versão para um pequeno subconjunto de usuários antes de disponibilizar para todos.
- Clean Architecture: Regra de Dependência
- As dependências do código-fonte devem apontar sempre para dentro, em direção às políticas de mais alto nível.
- Scrum: Papel do Product Owner
- Responsável por maximizar o valor do produto e gerenciar o Product Backlog de forma clara e priorizada.
- Scrum: Time-box da Sprint
- Período fixo de duração pré-determinada (geralmente de 1 a 4 semanas) no qual um incremento utilizável é criado.
- Test-Driven Development (TDD)
- Ciclo de desenvolvimento Red-Green-Refactor, no qual o teste unitário é escrito antes da implementação do código.
- Injeção de Dependência
- Técnica onde um objeto recebe suas dependências de uma fonte externa em vez de instanciá-las internamente.
- OAuth 2.0
- Framework de autorização que permite que aplicações terceiras acessem recursos protegidos via tokens de acesso.
- JSON Web Token (JWT)
- Padrão aberto compacto e autocontido (RFC 7519) para transmitir informações seguras entre partes como um objeto JSON.
- SQL: Índice B-Tree
- Estrutura de dados balanceada em árvore que otimiza operações de busca por igualdade e intervalo em bancos de dados.