Lições valiosas: aprendizados no meio do caminho
Published: 2023-04-14 22:37:04

Durante algumas entrevistas de emprego, decidi fazer anotações das perguntas que me foram feitas para resumir meu conhecimento e identificar minhas lacunas de conhecimento, a fim de revisá-las posteriormente. 

Com isso em mente, surgiu a ideia de compartilhar essas perguntas em um artigo para ajudar outras pessoas que estejam se preparando para entrevistas de emprego. 

Embora eu não tenha sido capaz de explicar algumas das perguntas detalhadamente na hora, revisei o conteúdo posteriormente para fortalecer minha compreensão.

Portanto, neste artigo, compartilharei algumas dessas perguntas e respostas, com o objetivo de ajudar outras pessoas a se prepararem melhor para entrevistas de emprego.

**O que é CORS?**
 O CORS, ou Cross-Origin Resource Sharing, é uma política de segurança que impede que scripts em uma página da web acessem recursos em outra origem sem permissão explícita. Quando digitamos um site, uma série de processos acontecem nos bastidores, incluindo a resolução do nome de domínio, a solicitação e o recebimento de recursos do servidor e a renderização da página.

**O que é POST, GET, PUT e PATCH?**

O POST e o GET são métodos HTTP usados para enviar e receber dados de um servidor, enquanto o PUT é usado para atualizar recursos existentes. 

O método PATCH é um método usado para atualizar parcialmente um recurso em um servidor. É semelhante ao método PUT, que é usado para atualizar um recurso completo, mas, em vez disso, o método PATCH é usado quando apenas uma parte do recurso precisa ser atualizada.

Ao contrário do método PUT, que envia todo o recurso atualizado para o servidor, o método PATCH envia apenas as alterações necessárias no formato de um objeto JSON. O servidor, em seguida, aplica essas alterações ao recurso existente, mantendo o restante do recurso intacto.

O método PATCH é usado em situações em que a atualização completa do recurso não é necessária ou em que é importante minimizar a quantidade de dados enviados pela rede. Por exemplo, pode ser usado para atualizar apenas uma propriedade de um usuário em um banco de dados, como seu nome ou endereço de e-mail, sem precisar enviar novamente todo o objeto do usuário.

**Qual a diferença de LocalStorage, SessionStorage e Cookies?**

O localStorage, sessionStorage e cookies são recursos usados para armazenar dados no navegador, mas cada um tem diferenças importantes em relação ao escopo, tempo de vida e segurança.

O localStorage e o sessionStorage são objetos que permitem armazenar dados no navegador. O localStorage armazena os dados permanentemente, mesmo após o navegador ser fechado, enquanto o sessionStorage armazena os dados apenas durante a sessão atual do navegador. Ambos são armazenados localmente no navegador e têm um limite de cerca de 5-10 MB de armazenamento. Esses dados são acessíveis apenas para a mesma origem que os criou e podem ser acessados via JavaScript.

Já os cookies são pequenos arquivos de texto que são armazenados no navegador e contêm informações, como preferências de usuário e informações de login. Os cookies têm um tempo de vida determinado, definido pelo desenvolvedor, e podem ser acessados ​​pelo servidor e pelo navegador do usuário. Os cookies podem ser usados para fins de rastreamento e publicidade, mas também podem ser usados para salvar informações importantes para o usuário, como informações de login e preferências de idioma.

Em resumo, a principal diferença entre o localStorage e o sessionStorage é o tempo de vida dos dados armazenados, enquanto os cookies são mais versáteis e podem ser usados para armazenar informações no lado do servidor e do cliente. É importante lembrar que os dados armazenados nesses recursos podem ser acessíveis por meio de scripts maliciosos e devem ser usados com cuidado para proteger a privacidade e a segurança do usuário.

**O que é um SPA?**

SPA (Single Page Application) é um tipo de aplicação web que funciona em uma única página, em que todo o conteúdo é carregado dinamicamente sem a necessidade de recarregar a página. Em uma SPA, a navegação entre as diferentes seções do site é realizada por meio de chamadas AJAX (Asynchronous JavaScript and XML), que atualizam apenas as partes necessárias da página, sem recarregar a página inteira.

**Quais as formas de iterar um array? E objetos?**

Para iterar um array, existem várias formas, incluindo o uso de loops for e for...of e os métodos forEach, map e filter. Para iterar objetos, a função Object.keys pode ser usada para obter as chaves do objeto.

**O que é programação funcional?**

A programação funcional é um paradigma de programação que enfatiza o uso de funções puras, que não têm efeitos colaterais, para criar programas mais claros e fáceis de entender. Funções puras são aquelas que não alteram nenhum estado externo e produzem resultados exclusivamente com base em seus argumentos, enquanto funções impuras podem ter efeitos colaterais e/ou dependem de estados externos para produzir seus resultados.

Função pura: 

`function soma(a, b) {
  return a + b;
}`

Função impura: 

`let contador = 0;
function incrementa() {
  contador++;
  console.log(contador);
}`

Esta é uma função impura porque ela tem um efeito colateral: ela altera a variável contador a cada vez que é chamada. Além disso, ela depende da variável contador para produzir o resultado. Ou seja, o resultado depende do estado da variável contador no momento em que a função é chamada e, portanto, pode ser diferente a cada vez que a função é chamada.

**Diferença dos operadores == e === ?**

O operador "==" compara valores, enquanto o operador "===" compara valores e tipos de dados.


**Quais são true e quais são false?**

`const a = 3
const b = new Number(3)
const c = 3
`

Das constantes dadas, "a" e "c" são iguais a 3 e, portanto, verdadeiros, enquanto "b" é um objeto Number e, portanto, falso.

**O que é Promise?**

As Promises são usadas para lidar com operações assíncronas em JavaScript, enquanto o async/await é uma maneira mais fácil de lidar com as Promises. O try/catch é usado para manipular erros em um bloco de código.

**Quais métodos de debugar uma aplicação?**

Os modos de debugar uma aplicação incluem o uso de ferramentas do navegador, como o console e o debugger, bem como o uso de ferramentas de desenvolvimento externas. 

**O que é High Order Function? Dê um exemplo.**
Uma High Order Function é uma função que recebe outra função como argumento ou retorna uma função. 

Como o método filter em JavaScript, pois recebe uma função como argumento. Essa função é usada para definir um critério de filtragem para os elementos de um array.

`const numeros = [1, 2, 3, 4, 5];

const numerosPares = numeros.filter(function(numero) {
  return numero % 2 === 0;
});

console.log(numerosPares); // [2, 4]`

**O que são pseudo-classes e pseudo-elementos?**

As pseudo-classes e pseudo-elementos em CSS são seletores especiais usados para estilizar elementos em diferentes estados e contextos.

Uma pseudo-classe é um seletor CSS que seleciona elementos com base em um estado ou condição especial, em vez de apenas em seu nome ou atributos.

Um pseudo-elemento é um seletor CSS que permite estilizar partes específicas de um elemento, em vez do elemento inteiro.

Pseudo-classe 

`a:hover {
  color: red;
}`

Pseudo-elemento 

`p::first-letter {
  font-size: 2em;
  font-weight: bold;
}`

Espero ter conseguido ajudar a fortalecer o conhecimento de vocês também! Caso tenham ficado com alguma dúvida ou queiram aprofundar ainda mais nesses conceitos, não hesitem em buscar mais informações e praticar. Agradeço por lerem este artigo e até a próxima!