Глупые вопросы на собеседовании по Javascript

Dec 11 2022
Я не против технических вопросов напрямую. Я думаю, что это один из способов получить некоторое представление о технических навыках кандидата.

Я не против технических вопросов напрямую. Я думаю, что это один из способов получить некоторое представление о технических навыках кандидата. Я предпочитаю техническую дискуссию строгому техническому интервью. Но позвольте мне объяснить один из худших вопросов о Javascript сегодня и почему.

Односвязный список

Прежде чем я начну излагать свою точку зрения, давайте немного углубимся в историю Javascript.

Это был 1995 год , разработан Netscape (Брендан Эйх), позже Mozilla продолжила улучшать и развивать javascript. Идея javascript заключалась в том, чтобы создать некую динамику при просмотре онлайн-мира. Он использовался для некоторых предупреждений или очень простых анимаций. Javascript был разработан, чтобы иметь внешний вид Java, но с ним было проще работать непрограммистам. В то время не было даже AJAX -> Javascript не использовался для запросов и тому подобного.

Примерно в 1997 году Javascript стал частью стандартов ECMA.

В 2005 году у нас был первый официальный выпуск AJAX -> с этого момента началась сегодняшняя веб-разработка. Больше не нужно было обновлять страницу, чтобы иметь возможность перезагрузить данные. Представьте, что вы вдруг смогли создать какое-то веб-приложение. Но вопрос в том, был ли Javascript готов к этому? Ну не совсем. Разработчики быстро привыкли к таким вещам, как 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 был в основном с сегодняшней точки зрения хакерским решением для создания сложного приложения с большим количеством файлов .js . Нам нужно было такое решение, потому что в противном случае у нас был бы конфликт в именовании переменных , функций и т. д ., поскольку Javascript был строго функциональным языком без классов.

VAR и Hoisting -> Hoisting — это перемещение объявлений наверх. А в javascript переменная может использоваться до ее объявления. Это допустимый сценарий:

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

В этом примере переменная myVariable была перемещена вверх и одновременно инициализирована, поэтому в строке 3 переменная уже хранит строку.

И таких вещей и проблем было намного больше. Не забывайте о странных частях javascript, которые вы можете найти здесь:https://hackernoon.com/the-weird-parts-of-javascript-zxo34i8

Но что-то изменилось с Javascript с версии es6

Если мы вернемся к нашему примеру с подъемом с новым подходом:

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

Javascript по-прежнему размещает объявление переменной вверху, но не инициализацию. Так что наша консоль будет писать неопределенную переменную вместо строки.

Кроме того, с версией es6 у нас есть:

  • Стрелочные функции
  • Классы
  • Модули
  • Обещания
  • Генераторы
  • let и const объявления для переменных
  • Операторы распространения и отдыха
  • Литералы шаблонов
  • Разрушение
  • И многое другое

Какие тогда неправильные вопросы интервью?

Необходимо было показать хотя бы некоторые из этих примеров, прежде чем я мог начать излагать свою точку зрения.

Представьте, что вы новый разработчик и начинаете изучать Javascript. Вам действительно не обязательно понимать:

  • Вар
  • IIFEE
  • Закрытия
  • Обещания и их использование (но полезно знать об этом)

Но совершенно не обязательно проверять знание старой версии Javascript. Старый Javascript был создан для другой цели, чем он используется сегодня.

В заключение можно сказать, что: Конечно, у Javascript есть еще свои слабые стороны. Но если вы знаете, как его использовать, вы будете писать ванильный Javascript только для небольших веб-сайтов Html или небольших приложений. В противном случае каждый здравомыслящий разработчик будет использовать Typescript.