Prova Eduzz

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 22

Backend

[Back Junior]

Quais linguagens você programa?


● Mais Comuns nos clientes que atuamos
○ Javascript
○ Node
○ .Net
○ Java
○ Python
○ PHP
● Menos comuns nos clientes que atuamos
○ Ruby
○ C
○ C++
○ Go
○ Rust

Qual foi a coisa mais legal que você fez?


Acredito que o objetivo aqui é saber se o desenvolvedor é curioso, ousado, criativo e determinado,
baseado naquilo que ele contar que ele já fez por conta própria.

Quais os principais conceitos de OOP?

● Abstração - geração de objetos únicos. Para isso precisa de identidade (única),


propriedades e métodos
● Encapsulamento - esconde o que não precisa (xarope da coca)
● Herança - herdar características de todos os objetos acima dele, seus “ancestrais”
● Polimorfismo - são como animais que são capazes de alterar sua forma conforme a
necessidade. Convive com a herança. Mesmo método, diferentes implementações

Quem vinha antes da OOP? ​Programação Estruturada ou Programação macarronica

Qual a diferença de classe abstrata e interface?


Uma ​interface​ não pode conter qualquer tipo de código, muito menos código padrão.
Uma ​classe abstrata​ pode fornecer código completo, código padrão ou ter apenas a
declaração de seu esqueleto para ser posteriormente sobrescrita.
Quais boas práticas, em geral, você conhece?
● Alta Coesão
● Baixo Acoplamento
● Inversão de controle
● Injeção de dependência
● Reutilização de código

Quais frameworks você já trabalhou?


Framework é um conjunto de conceitos usado para resolver um problema de um domínio específico,
também responsável pela Inversão de Controle.

Front-end
● Angular;
● Vue;
● Ember.js;
● React (é considerado um framework dentro de um ecossistema de React).

Back-end
● Express;
● AdonisJs.

Frameworks de PHP​
● Laravel;​
● CodeIgniter;
● Symfony;
● CakePHP.

Frameworks de Java
● Spring;

Frameworks de Phython
● Django.

Frameworks de Ruby
● RubyOnRails.
Sabe alguma coisa de DevOps/Infraestrutura? o que você já fez?

1. Codificação - desenvolvimento e revisão de código, ferramentas de gerenciamento de


código-fonte, fusão (merge) de código
2. Compilação - ferramentas de integração contínua, estado de compilação
3. Teste - ferramentas de teste contínuo que fornecem feedback sobre riscos do negócio
4. Pacote - repositório de artefato, etapa de pré-implantação de aplicação
5. Liberação - gerenciamento de mudança, aprovações de liberação, automação de
liberação
6. Configuração - configuração e gerenciamento de infraestrutura, ferramentas de
Infraestrutura como Código
7. Monitoramento - monitoramento de desempenho de aplicações, experiência do usuário
final

Quais versionadores de código você conhece?


● G​it
● SVN S​ubversion
● M​ercurial
● S​ource safe

Gerenciadores
● Bitbucket
● TFS
● Google Code
● GitHub
● Tortoise SVN
O que querem dizer com alta coesão e baixo acoplamento?
No design de software, ​alta coesão​ significa que a classe deve fazer uma coisa e uma
coisa muito bem, princípio da responsabilidade única .

Um ​baixo acoplamento​ sugere que a classe deve ter menos dependências possíveis.

classe A
E1
E2
E3
E4
E5

Interface 1
Classe AE2
Classe AE3
Classe AE4
Classe AE5

GravarInformacoes
SE Classe AE1 OK ENTAO
SE Classe AE2 OK ENTAO
SE Classe AE3 OK ENT
Classe AE4
Classe AE5

Baixo Acoplamento = USB


Alto Acomplamento = Acessorios da Apple

Por que a literatura diz que é preferível utilizar composição em vez de


herança?
Composição e Herança são dois mecanismos para reutilizar funcionalidades.

Composição é considerada muito superior à herança na maioria dos casos pois:


● permite mudar a associação entre classes em tempo de execução
● os objetos podem assumir mais de um comportamento
● os projetos são mais simples e reutilizáveis
● é possivel descartar os problemas envolvendo a herança como o acoplamento
O que é uma função pura?
Dado um parâmetro input sempre vão retornar o mesmo output sem causar efeitos
colaterais side effects.

Pode exemplificar os verbos http?


Mais usados
GET
POST
PUT
DELETE

Menos Usados
HEAD = GET sem corpo da resposta
CONNECT - estabelece um túnel para o servidor destino
OPTIONS - descrever as opções de comunicação com o recurso de destino.
TRACE - executa um teste de chamada loop-back
PATCH - modificações parciais em um recurso

O que são status codes 2xx, 3xx, 4xx e 5xx?


● 2xx success
● 3xx redirection
● 4xx client errors
● 5xx server errors

Quais bancos de dados você já trabalhou?


● Oracle
● SQL Server
● MySQL
● PostgreSQL
● DB2
● NoSQL
● MongoDB
● Redis

Já fez integração com APIs? quais?


São "plugues de tomada". Apis mais conhecidas:
● Clima
● Meios de pagamento
● CEP
● Maps
● Login com rede social
Quais são os últimos livros que você leu?
1 - Working effectively with legacy code
2 – Design Patterns. ...
3 – Clean Code. ...
4 – Java Concurrency in Practice. ...
5 – Domain Driven Design. ...
6 – JavaScript. ...
7 – Patterns of Enterprise Application Architecture. ...
8 – Code complete.
[Back Pleno]

O que é injeção de dependência


Serve para manter baixo o nível de acoplamento.
Dependências não são definidas programaticamente, mas sim pela configuração de uma
infraestrutura de software como um framework

Já usou design patterns? quais?


Criado pela Gof:
The "Gang of Four":
Erich Gamma
Richard Helm
Ralph Johnson
John Vlissides

Criacional

● Singleton​: assegura que somente um objeto de uma determinada classe seja


criado em todo o projeto;
● Abstract Factory​: permite que um cliente crie famílias de objetos sem especificar
suas classes concretas;
● Builder​: encapsular a construção de um produto e permitir que ele seja construído
em etapas;
● Prototype​: permite você criar novas instancias simplesmente copiando instancias
existentes;
● Factory Mathod​: as subclasses decidem quais classes concretas serão criadas.
● text​: text
● text​: text

Estruturais

● Decorator​: envelopa um objeto para fornecer novos comportamentos;


● Proxy​: envelopa um objeto para controlar o acesso a ele;
● FlyWeigth​: uma instancia de uma classe pode ser usada para fornecer muitas
“instancias virtuais”;
● Facade​: simplifica a interface de um conjunto de classes;
● Composite​: Os clientes tratam as coleções de objetos e os objetos individuais de
maneira uniforme;
● Bridge​: permite criar uma ponte para variar não apenas a sua implementação,
como também as suas abstrações;
● Adapter​: envelopa um objeto e fornece a ele uma interface diferente;

Comportamental

● Template Method​: As subclasses decidem como implementar os passos de um


algoritimo;
● Visitor​: permite acrescentar novos recursos a um composto de objetos e o
encapsulamento não é importante;
● Command​: encapsula uma solicitação como um objeto;
● Strategy​: encapsula comportamentos intercambiáveis e usa a delegação para
decidir qual deles será usado;
● Chair of Responsability​: permite dar a mais de um objeto a oportunidade de
processar uma solicitação;
● Iterator​: fornece uma maneira de acessar seqüencialmente uma coleção de
objetos sem expor a sua implementação;
● Mediator​: centraliza operações complexas de comunicação e controle entre
objetos relacionados;
● Memento​: permite restaurar um objeto a um dos seus estados prévios, por
exemplo, quando o usuário seleciona um “desfazer”;
● Interpreter​: permite construir um intérprete para uma linguagem;
● State​: encapsula comportamentos baseados em estados e usa a delegação para
alternar comportamentos;
● Observer​: permite notificar outros objetos quando ocorre uma mudança de
estado.

Os padrões freqüentemente são classificados com base num segundo atributo, se lidam
ou não com classes ou objetos.

Padrões de classe

Descrevem como as relações entre classes são definidas através da hereditariedade. As


relações, nos padrões de classe, são estabelecidas no momento da compilação.

● Factory Method;
● Adapter;
● Template Method;
● Interpreter.

Padrões de objetos

Descrevem os relacionamentos entre objetos e são definidos primariamente por


composição. Os relacionamentos nos padrões de objetos normalmente são criados
durante a execução e são muito mais dinâmicos e flexíveis.

● Template Method;
● Mediator;
● Iterator;
● Visitor;
● Memento;
● Interpreter;
● Strategy;
● Command;
● Chair of Responsability;
● Observer;
● State
Quais são os princípios SOLID?

Termos criado por Robert C. Martin em 2000 com o nome "Postulados de Projeto e Padrões de
Projeto":
● Princípio de única responsabilidade - "uma classe deve ter apenas uma única
responsabilidade
● Princípio de aberto/fechado- entidades de software devem ser abertas para extensão, mas
fechadas para modificação.
● Princípio da substituição de Liskok - objetos em um programa devem ser substituíveis por
instâncias de seus subtipos, sem alterar a funcionalidade do programa.
● Princípio da segregação de Interface - muitas interfaces de clientes específicas, são
melhores do que uma para todos propósitos.
● Princípio da inversão de dependência - deve-se depender de abstrações, não de objetos
concretos.
Em qual camada da aplicação deve ficar a lógica de negócio?

Quais padrões de arquitetura você está familiarizado?


● MVC
● MVP
● MVVM

O que é uma entidade anêmica?


É quando sua entidade é "magrinha", ela mal faz nada, só representa um Objeto, nada mais. Daí a
expressão "Anêmica".
O correto seria torná-la rica: faça a Pessoa manipular seus atributos e não outras classes. A
Pessoa deve ser a única a conhecer de seus atributos e seu comportamento.

Quais as principais mudanças no HTTP2?


Ganhos na parte de desempenho:
● Compressão de cabeçalho
● Priorização e negociação de protocolo
● Uso mais eficiente dos recursos de rede ao permitir diversas trocas simultâneas na mesma
conexão
● Percepção reduzida da latência

O que é um proxy reverso?


Um proxy reverso é um servidor de rede geralmente instalado para ficar na frente de um servidor
Web
● Segurança
● Criptografia
● Balanceamento de carga
● Cache
● Compressão
● Colher de chá: A aplicação Web não precisa ficar esperando (e consumindo recursos do
servidor) porque o cliente apresenta restrições de capacidade para receber conteúdo
solicitado.

Já usou sistemas de fila?

● Apache Kafka
● RabiitMQ
● * MQ (Amazon, Google, Apache)
● Tibco

Qual a diferença entre Proxy e Decorator?


A diferença entre o Proxy e o Decorator de acordo com o GoF é que o Proxy ​restringe​ o
cliente. Decorador não.
Como funciona uma arquitetura de microsserviços?
[Back Senior]

Já participou da concepção de alguma arquitetura de sw? explique


Aqui é para o cara mostrar o que fez, que motivacões o levaram optar por um caminho a ou b

O back senior teria de responder todas as do Pleno


Front
* Básico

* O que Promise e diferença entre o async/await.

* Arrow Function. Bind This.


Sintaxe mais curta para uma função representada por 'seta' (=>).

O this tem o objetivo de passar o contexto de quem chama a função


* var, let e const. (+Hoisting)

* Referencia / Valor.
Referencia usado para objetivos
Valor é uma cópia e usado para tipos primitivos

* Typescript.
TypeScript é um superconjunto de JavaScript desenvolvido pela Microsoft que adiciona tipagem e
alguns outros recursos a linguagem.
* Avançado (+)

* Spread Operator e destructuring.


Eles facilitam o acesso a dados dentro de um a​ rray​ ou objeto e a criação de variáveis que
contenham esses dados.

Spread operator, aquele dos três pontinhos lista todos os elementos do array

* Prototype de array.
Array.prototype
Permite a adição de propriedades para todos os objetos array.

* Closure.
Tipo especial de objeto que combina duas coisas: a função e o ambiente onde a função foi criada

* Event Loop.
React
* Básico

* Componente de Função vs Classe (+Hooks).


xxx

* PureComponent / memo.
xxx

* Lifecycle/Ciclos de vida, useEffect.


xxx

* useCallback, useMemo e deps.


xxx

* Context API
xxx
* Avançado

* High-Order Component.
xxx

* Conceito de Imutabilidade.
xxx

* Redux: conceito e estrutura.


xxx

* RxJs: conceito.
xxx

Você também pode gostar