Все мы знаем, что собеседования по JavaScript (особенно собеседования с FrontEnd) могут быть довольно сложными, потому что интервьюер может задавать вопросы из старого JS, нового ES6 JS, манипуляции с элементами DOM, старого макета CSS, нового макета FlexBox и CSS Grid, алгоритмов и полноты, небольшого кода проблема, ReactJS и методы его жизненного цикла.
Итак, интервью бывают разных типов, в зависимости от их характера и содержат разные типы вопросов. Эти раунды в основном проводятся малыми и средними компаниями и не применяются к технологическим гигантам (FB, Google, Flipkart и т. Д.). Они в целом классифицируются следующим образом.
* Первый раунд - обычно телефонный- Начните с расскажите мне о себе, основные старые вопросы JS о var, React и его методах жизненного цикла.
* Первый раунд - онлайн-вопрос на временной основе - Либо набор из 30 базовых вопросов JS, CSS за 1 час или 3 сложных вопроса за 1 час.
* Первый раунд: собеседование по Skype- Начнем с того, что расскажи мне о себе, после чего последуют старые вопросы JS и небольшой компонент или программа на ReactJS / JavaScript.
* Первый раунд - Небольшие стартапы- Дайте вам небольшое дополнение к быть готовым к их существующему веб-сайту.
* Второй раунд - Личное собеседование- Снова начинается с того, что расскажите мне о себе, после чего следует простой вопрос JS на бумаге / доске.
* Третий раунд - Лицом к лицу с архитектором - Очень сложные вопросы JavaScript или решение задачи на доске.
* Четвертый раунд - Клиентский раунд - Только для сервисной компании. В основном небольшие проблемы решаются в jsfiddle путем демонстрации экрана по скайпу.
* Пятый раунд - HR- В основном переговоры о заработной плате.
Эта серия основана на моем опыте проведения и интервью, а также на мнениях многих моих друзей-разработчиков FrontEnd. Также я привел пример из потрясающей серии интервью от techsith.
Начнем с вопросов по базовому JavaScript, которые обычно задают в первом, а иногда и во втором раунде.
Вопрос 1- В чем разница между ключевыми словами let, const и var?
Ответ- Переменная var была с начала JS, но переменные let и const были недавно введены в ES6.
var имеет область видимости функции, тогда как let и const имеют область видимости блока.
Сначала мы поймем разницу между var и let. Рассмотрим пример ниже. У него есть IIFE, а внутри него есть элемент if. Оператор if создает область видимости для переменной let, но у var нет области видимости блока, поэтому к ней можно получить доступ и за ее пределами.
(function(){ if(true){ var v = 10; let l =20; } console.log('v is ', v); console.log('l is ', l); })()
Если мы запустим следующее, мы получим значение var, но ошибку ссылки для let.
Теперь мы разберемся с константой. Он был создан для объявления постоянных переменных в JavaScript. Мы не можем присвоить новое значение переменной после первоначального объявления для примитивных типов, таких как целые числа и строки, но можем добавлять значения для непримитивных типов, таких как массивы и объекты.
Давайте посмотрим на это на примерах. Переназначение целочисленного константного значения дает ошибку ссылки.
(function(){ const c = 12; c = 14; console.log('c is ', c); })() /* Exception: TypeError: invalid assignment to const `c' @Scratchpad/1:3:3 @Scratchpad/1:1:2 */
Переназначение строкового значения const дает ошибку ссылки.
(function(){ const s = "coder"; s= "developer" console.log('s is ', s); })() /* Exception: TypeError: invalid assignment to const `s' @Scratchpad/1:9:3 @Scratchpad/1:7:2 */
Переназначение массива дает ошибку.
(function(){ const arr = [1, 2, 3]; arr = [3, 4, 5]; console.log('arr is ', arr); })() /* Exception: TypeError: invalid assignment to const `arr' @Scratchpad/1:15:16 @Scratchpad/1:13:2 */
Но можно добавить значение в массив.
(function(){ const arr = [1, 2, 3]; arr.push(4); console.log('arr is ', arr); })() //output - arr is [1, 2, 3, 4]
А также возможно добавление и изменение значений в объектах.
(function(){ const obj = {name: 'Nabendu', skill: 'JS'}; obj.skill = 'React'; obj.profession= 'Developer'; console.log('obj is ', obj); })() //output is obj is { name: "Nabendu", skill: "React", profession: "Developer" }
Вопрос 2- В чем разница между == и ===?
Ответ- Оба являются операторами сравнения в JavaScript. == выполняет преобразование типов перед сравнением, но === выполняет строгое сравнение и не выполняет преобразование типов.
Рассмотрим ниже для ==. Сравнение между строкой 1 и числовым значением 1 дает значение true, поскольку числовое значение 1 преобразуется в строку перед сравнением.
if('1' == 1) { console.log('They are equal') } //Output - They are equal
Теперь рассмотрим тот же пример для ===. Будет выдано false, потому что преобразование типа не выполняется.
if('1' === 1) { console.log('They are equal') } else { console.log('They are not equal') } //Output - They are not equal
Вопрос 3- В чем разница между null и undefined?
Ответ- Оба представляют собой пустые значения. Но разница в том, что вы определяете переменную и не присваиваете ей значение, которое JS присваивает undefined. null обычно назначается пользователями в тех случаях, когда они хотят очистить некоторые значения.
let a; console.log(a); //output - undefined
Другое отличие состоит в том, что typeof (undefined) не определен, но typeof (null) является объектом. Он должен быть нулевым, но это ошибка в JavaScript, которая возникла с первых дней.
Вопрос 3- Что такое прототипное наследование?
Ответ- Прототипное наследование означает создание новых возможностей с использованием прототипа. Рассмотрим пример ниже. Здесь мы создаем функцию-конструктор Car, а затем вызываем ее с новым ключевым словом. Теперь переменные nabsCar и shikhaCar имеют собственный экземпляр Car, но могут иметь общий прототип функции getModel ().
let Car = function(model) { this.model = model; } Car.prototype.getModel = function() { return this.model; } let nabsCar = new Car('maruti800'); console.log(nabsCar.getModel()); //Output - maruti800 let shikhaCar = new Car('hyndaiAccent'); console.log(shikhaCar.getModel()); //Output - hyndaiAccent
Примечание. У меня есть подробная серия статей об объектах и прототипах. Вы можете найти это здесь".
На этом завершается первая часть вопросов на собеседовании по основам JavaScript. Вы можете найти Часть-2 здесь.