Junior Flashcards
Explique e dê um exemplo do que é O(1) - Constant Time Complexity
É um algoritmo que é executado em constant time/space independente do tamanho do input.
Exemplo: Acessar qualquer elemento de uma array pelo seu index.
Explique e dê exemplo do que é O(log n) - Logarithmic Time Complexity
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.
Explique e dê exemplo do que é O(n) - Linear Time Complexity
A complexidade do algoritmo cresce linearmente com o tamanho do input dado.
Exemplo: Percorrer uma array item por item.
Explique e dê exemplo do que é O(n log n) - Linear algorithmic Time Complexity
É 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.
Explique e dê exemplo do que é O(n^2) - Quadratic Time Complexity
É um algoritmo que aumenta de complexidade ao quadrado do tamanho do input.
Exemplo: Nested loops.
Explique e dê exemplo do que é O(n!) - Factorial Time Complexity
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.
Por que linguagens interpretadas são “mais lentas” que as compiladas?
- 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.
O que significa CRUD?
Create
Read
Update
Delete
O que é uma API? Dê um exemplo prático ou use um paralelo.
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.
O que é o ambiente REST?
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.
Quais os métodos HTTP correspondem ao CRUD no ambiente REST?
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.
Quais são os pontos negativos e positivos de se adotar a implementação de uma API REST
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.
O que é Cache?
Armazenamento de dados frequentes em memória local por um período determinado.
Por que usar Cache?
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.
O que significa CDN?
Content Delivery Network