Perguntas estúpidas da entrevista em Javascript

Dec 11 2022
Não sou contra questões técnicas diretamente. Eu acho que é uma das maneiras de ter uma ideia sobre as habilidades tecnológicas do candidato.

Não sou contra questões técnicas diretamente. Eu acho que é uma das maneiras de ter uma ideia sobre as habilidades tecnológicas do candidato. Prefiro uma discussão técnica a uma entrevista estritamente técnica. Mas deixe-me explicar uma das piores questões de Javascript hoje e por quê.

Lista encadeada individualmente

Antes de começar a descrever meu ponto, vamos cavar um pouco na história do Javascript

Era o ano de 1995 , desenvolvido pela Netscape (Brendan Eich), mais tarde a Mozilla continuou aprimorando e desenvolvendo o javascript. A ideia por trás do javascript era criar algum tipo de dinâmica ao navegar no mundo online. Foi usado para alguns alertas ou animações muito básicas. Javascript foi projetado para ter a aparência de Java, mas para ser mais fácil para os não programadores trabalharem. Naquela época não existia nem AJAX -> Javascript não era usado para requisições e tal.

Por volta de 1997, o Javascript tornou-se parte dos padrões ECMA.

Em 2005 tivemos o primeiro lançamento oficial do AJAX -> este é o ponto onde o desenvolvimento web de hoje começou. Não era mais necessário atualizar a página para poder recarregar os dados. Imagine que de repente você conseguiu criar algum tipo de aplicativo da web. Mas a pergunta é: o Javascript estava pronto para isso? Bem, na verdade não. Os desenvolvedores rapidamente se acostumaram a usar coisas como IIFEE :

(function() {
// Code that runs in your function
var name = 'John Doe'
}
)()
console.log(name) // error as the name is not defined in this scope

IIFEE era basicamente do ponto de vista de hoje uma solução hacky para poder criar um aplicativo complexo com mais arquivos .js . Precisávamos desse tipo de solução porque senão teríamos um conflito na nomenclatura de variáveis , funções , etc, já que o Javascript era uma linguagem estritamente funcional sem classes.

VAR e o Hoisting -> Hoisting é um comportamento de mover as declarações para o topo. E em javascript, a variável pode ser usada antes de ser declarada. Este é um cenário válido:

myVariable = ‘is this shit possible?’
var myVariable;
console.log(myVariable); // is this shit possible?

Neste exemplo a variável myVariable foi movida para cima e inicializada ao mesmo tempo, este é o motivo, porque na linha 3, a variável já armazena a string.

E havia muito mais coisas e problemas como esse. Sem esquecer as partes estranhas do javascript, que você pode encontrar aqui:https://hackernoon.com/the-weird-parts-of-javascript-zxo34i8

Mas algo mudou com o Javascript da versão es6

Se voltarmos ao nosso exemplo de elevação com a nova abordagem:

myVariable = ‘is this shit possible?’
let myVariable;
console.log(myVariable); // undefined

O Javascript ainda está colocando a declaração da variável no topo, mas não a inicialização. Portanto, nosso console escreverá uma variável indefinida em vez da string.

Além da versão es6 temos:

  • Funções de seta
  • Aulas
  • Módulos
  • Promessas
  • Geradores
  • declarações let e const para variáveis
  • Operadores de propagação e descanso
  • Modelo Literais
  • desestruturando
  • E muito mais

Quais são então as perguntas erradas da entrevista?

Era necessário mostrar pelo menos alguns desses exemplos antes que eu pudesse começar a desenhar meu ponto.

Imagine que você é um novo desenvolvedor e está começando a aprender Javascript. Realmente não é necessário que você entenda:

  • var
  • IIFEE
  • fechamentos
  • Promessas e seu uso (mas é bom saber sobre isso)

Mas não é absolutamente necessário verificar o conhecimento da versão mais antiga do Javascript. O antigo Javascript foi construído para um propósito diferente do que é usado hoje.

Em conclusão , podemos dizer que: Claro, o Javascript ainda tem seus pontos fracos. Mas se você souber como usá-lo, escreverá Javascript simples apenas para pequenos sites Html ou aplicativos menores. Caso contrário, cada desenvolvedor são estaria usando o Typescript.