Junior Flashcards

1
Q

Explique e dê um exemplo do que é O(1) - Constant Time Complexity

A

É um algoritmo que é executado em constant time/space independente do tamanho do input.

Exemplo: Acessar qualquer elemento de uma array pelo seu index.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Explique e dê exemplo do que é O(log n) - Logarithmic Time Complexity

A

Descreve um algoritmo que enquanto o input dobra de tamanho o tempo de execução aumenta pouco.

Exemplo: Binary search numa array em ordem. O input vai ser sempre dividido ao meio, não importando o tamanho da array, sendo mais eficiente que percorrer toda a array várias vezes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Explique e dê exemplo do que é O(n) - Linear Time Complexity

A

A complexidade do algoritmo cresce linearmente com o tamanho do input dado.

Exemplo: Percorrer uma array item por item.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Explique e dê exemplo do que é O(n log n) - Linear algorithmic Time Complexity

A

É um algoritmo que mistura o crescimento linear com o crescimento logaritmico.

Exemplo: Merge Sort. Onde se é divido a array em metades O(n) e depois vão se juntando as metades recursivamente (n log n) colocando elas em ordem.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Explique e dê exemplo do que é O(n^2) - Quadratic Time Complexity

A

É um algoritmo que aumenta de complexidade ao quadrado do tamanho do input.

Exemplo: Nested loops.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Explique e dê exemplo do que é O(n!) - Factorial Time Complexity

A

A complexidade do algoritmo cresce fatorialmente com o tamanho do input.

Exemplo: Brute force para descobrir todas as possibilidades de permuta e combinações de uma array.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Por que linguagens interpretadas são “mais lentas” que as compiladas?

A
  • Linguagens compiladas passam pelo compilador que fazem a leitura do código na íntegra onde o compilador pode fazer otimizações mais agressivas;
  • Linguagens interpretadas passam pelo interpretador que lê o código linha por linha e não consegue fazer a melhor otimização porque ele não sabe o que vem a seguir;
  • Resumindo: Linguagens compiladas sofrem uma otimização bytewise (eficiente) e as interpretadas não.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

O que significa CRUD?

A

Create
Read
Update
Delete

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

O que é uma API? Dê um exemplo prático ou use um paralelo.

A

Application Program Interface
API é um mensageiro que pega uma requisição do usuário, diz ao sistema o que o usuário requisitou e leva a resposta.

Ex: Um garçom.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

O que é o ambiente REST?

A

REpresentation State Transfer

  • Mudanças no código do lado do Client não afetam o lado do Servidor e vice-versa;
  • Usa o URL como ponto de acesso ao Servidor. E.g: http://www.example.com/users/1. O users é o resource acessado no id 1;
  • URL mais legível visto que existe uma hierarquia a ser seguida.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Quais os métodos HTTP correspondem ao CRUD no ambiente REST?

A

Create = Post (Status code: 201 CREATED) Create a new Resource;
Read = Get (Status code: 200 OK) Gets the resource;
Update = Put (Status code: 200 OK) Update a resource;
Delete = Delete (Status code: 204 NO CONTENT) Delete a resource.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Quais são os pontos negativos e positivos de se adotar a implementação de uma API REST

A

API REST (Positivos):
- Padrão HTTP;
- Stateless = Cada request é isolado e independentes;
- Cache = Facilita a utilização;
- Dados transferidos via JSON ou XML;
- Maturidade = Quase todos os frameworks tem capacidade de criar uma API REST;
- Dev pool = Por ser de +- 2000, muitos devs sabem ou pelo menos tem conhecimento dela;
- Custo inicial baixo.

API REST (Negativos):
- Over fetching = Não se ter um retorno de uma request específica sem trazer todo o JSON de onde a informação está. Ex: request{nome, foto}, fetch JSON {nome, foto, email, telefone,…);
- Múltiplas chamadas, principalmente se estiverem usando serviços diferentes pra cada um.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

O que é Cache?

A

Armazenamento de dados frequentes em memória local por um período determinado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Por que usar Cache?

A

Porque o usuário não precisa fazer uma requisição pro Server side toda vez que precisar acessar determinado dado recorrente novamente. Mais rápido, diminuição de tráfego e uso de banda.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

O que significa CDN?

A

Content Delivery Network

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Por que a CDN existe?

A
  • Melhor escalabilidade dos sites;
  • Melhora significativamente a latência usando Cache;
  • Resolve o problema de transferência de dados intercontinentais;
  • Lida muito bem com grandes volumes de tráfego repentino;
  • Melhora a segurança contra DDoS etc;
  • Distribui tráfego através de múltiplos servers prevenindo sobrecarga;
  • Data centers com recursos limitados.
17
Q

O que é o Redis?

A

Plataforma de armazenamento de dados em memória (cache).

18
Q

Quais os pontos positivos do Redis?

A
  • Acesso rápido aos dados. Ex: Aplicações em tempo real ou cache;
  • Versatilidade em armazenar dados como: strings, lists, sets, hashes;
  • Open Source;
  • Acesso a um volume muito grande de dados por ser NoSQL.
19
Q

Quais são as 3 responsabilidades da autenticação?

A

1 - Gerenciar a comunicação entre humano - máquina ou user-computer;
2 - Verificar a identidade do usuário;
3 - Aprovar ou não a autenticação para que o sistema possa dar prosseguimento.

20
Q

Cite 3 fatores de autenticação.

A
  • Fator de conhecimento: username, senha, número pin;
  • Fator posse: One-time password, Identidade ou tokens físicos;
  • Fator herança: digital e reconhecimento facial.
21
Q

O que é SSO e qual sua utilidade?

A

Single Sign On é vastamente utilizado para múltiplos logins de diferentes serviços de uma mesma empresa, por exemplo o Google, onde uma vez logado, o usuário tem acesso a todos os seus serviços.

22
Q

O que é JWT?

A

Json Web Token

É um meio compacto e seguro se transmitir informações entre as parte via JSON Object.

23
Q

Quando você deve usar JWT?

A

Autorizações - Cada subsequente requisição já irá conter o JWT. Ex: Google;

Troca de informações - Quando JWT é usado em chaves public/private onde quem fez a requisição já é conhecido.

24
Q

Por que usar JWT?

A
  • Compacto comparado a Simple Web Tokens (SWT) e Security Assertion Markup Language Tokens (SAML);
  • Utiliza o próprio JWT desde o POST (user/password) para fazer a autenticação no server. Ex: POST > User JWT > Browser > Request with JWT > Verify JWT > Send Response;
  • Sessão do JWT salva no server side, abrindo possibilidades de usar SSO.
25
Q

O que é Token Authentication?

A

É um protocolo de segurança que verifica a identidade do usuário e em troca o usuário recebe um token único para acessar os serviços enquanto o token for válido.

26
Q

Por que usar Token Authentication?

A
  • Acesso temporário;
  • Acesso granular - O usuário não tem acesso ao todo, somente ao que ele requisitou.
27
Q

O que é o OAuth 2.0?

A

Open Authorization

É um padrão aberto de autorização para que serviços de terceiros possam acessar os dados de usuário e a partir disso acessar dados de outros serviços utilizando um token. Ex: Logar com as credenciais do Facebook no Spotify.