932 просмотра
От 16 февраля

Вопросы для собеседования JavaScript-разработчика

1. Что такое ECMAScript?

ECMAScript — это спецификация, стандарт скриптовых языков программирования, он является основой JS, поэтому любые изменения ECMAScript отражаются на JS. ECMAScript сам по себе - это не язык программирования. А вот JavaScript - это язык программирования, реализующий стандарт ECMAScript. Чем отличаются JavaScript и ECMAScript? ECMAScript 2015, 2016, 2017, 2018, 2019, 2020, 2021

2. Какие различия между ES5 и ES6?

ECMAScript 5 (ES5) — 5-е издание ECMAScript, выпущенное в 2009 году. Поддерживается современными браузерами практически полностью. ECMAScript 6 (ECMAScript 2016, ES6) — 6-е издание ECMAScript, выпущенное в 2015 году. Частично поддерживается большинством современных браузеров. Несколько ключевых отличий двух стандартов: 1. Стрелочные функции и интерполяция в строках // В новом стандарте можно сделать так: const greetings = (name) => { return `hello ${name}`; } // и даже так: const greetings = name => `hello ${name}` 2. Ключевое слово const Константы в JavaScript отличаются от констант в других языках программирования. Они сохраняют неизменной только ссылку на значение. Таким образом, вы можете добавлять, удалять и изменять свойства объявленного константным объекта, но не можете перезаписать текущую переменную, в которой лежит этот объект. const NAMES = []; NAMES.push("Jim"); console.log(NAMES.length === 1); // true NAMES = ["Steve", "John"]; // error 3. Блочная видимость Переменные, объявленные с помощью новых ключевых слов let и const имеют блочную область видимости, то есть недоступны за пределами {}-блоков. Кроме того, они не поднимаются, как var-переменные. 4. Параметры по умолчанию Теперь функцию можно инициализировать с дефолтным значением параметров. Оно будет использовано, если параметр не будет передан при вызове. function multiply (a, b = 2) { return a * b; } multiply(5); // 10 5. Классы и наследование Новый стандарт ввел в язык поддержку привычного синтаксиса классов (class), конструкторы (constructor) и ключевое слово extend для оформления наследования. 6. Оператор for-of для перебора итерируемых объектов в цикле 7. spread и rest операторы const obj1 = { a: 1, b: 2 } const obj2 = { a: 2, c: 3, d: 4} const obj3 = {...obj1, ...obj2} 8. Обещания (Promises) Механизм для обработки результатов и ошибок асинхронных операций. По сути, это то же самое, что и коллбэки, но гораздо удобнее. Например, промисы можно чейнить (объединять в цепочки). const isGreater = (a, b) => { return new Promise ((resolve, reject) => { if(a > b) { resolve(true) } else { reject(false) } }) } isGreater(1, 2) .then(result => { console.log('greater') }) .catch(result => { console.log('smaller') }) 9. Модули Способ разбития кода на отдельные модули, которые можно импортировать при необходимости. import myModule from './myModule'; Синтаксис экспорта позволяет выделить функциональность модуля: const myModule = { x: 1, y: () => { console.log('This is ES5') } } export default myModule;

3. Что такое операторы spread и rest?

Spread оператор (оператор расширения) "берет" каждый отдельный элемент итерируемого объекта (массив) и "распаковывает" его в другой итерируемый объект (массив). К итерируемым объектам можно отнести все, что можно перебрать с помощью цикла for..of. Большая часть задач, где приходится использовать оператор spread, касается массивов и строк. Так будет выглядеть создание одного общего массива с помощью оператора spread: const tvSeriesOne = ['Ozark', 'Fargo', 'Dexter']; const tvSeriesTwo = ['Mr. Robot', 'Barry', 'Suits']; const tvSeries = [...tvSeriesOne, ...tvSeriesTwo]; console.log(tvSeries); // [ "Ozark", "Fargo", "Dexter", "Mr. Robot", "Barry", "Suits" ] Оператор rest (три точки) похож на оператор spread, но выполняет противоположную функцию. Spread забирает каждый элемент из массива и распаковывает в новый массив. Оператор rest забирает каждый элемент из массива и создает из них новый массив. Есть 2 типа задач, где оператор rest используется чаще всего – в функциях и в процессе деструктуризации. function buyPizza(price, ...rest) { console.log(price); // 500 console.log(rest); // Array(4) [ 3, 10, 6, 20 ] } buyPizza(500, 3, 10, 6, 20); const pizza = ['Pepperoni', 2222, 5, 6, 10, 30, 1]; const [name, id, ...rest] = pizza; console.log(name); // Pepperoni console.log(id); // 2222 console.log(rest); // [ 5, 6, 10, 30, 1 ] 7 трюков с Rest и Spread операторами при работе c JS объектами

4. Что такое деструктуризация?

Деструктуризация в JavaScript позволяет извлечь данные из массива или свойства объекта и присвоить их отдельным переменным. Деструктуризация удобна тем, что позволяет не писать лишний код для доступа к данным внутри объектов/массивов по индексам или ключам. Деструктуризация массива: let array = [1, 2, 3]; let [x, y, z] = array; console.log(x); // 1 console.log(y); // 2 console.log(z); // 3 Деструктуризация объекта: let user = { name: "Василий", lastname: "Пупкин", age: 30 }; let {name, lastname, age} = user; console.log(name); // "Василий" console.log(lastname); // "Пупкин" console.log(age); // 30 Вы не знаете деструктуризацию, пока

5. Перечислите типы данных JavaScript

6. Что такое Map?

Map – это коллекция ключ/значение наподобие Object, но с более удобным и декларативным API и некоторыми функциональными особенностями. Например, Map позволяет использовать ключи любого типа. Методы и свойства: new Map() – создаёт коллекцию. Map.prototype.set(key, value) – записывает по ключу key значение value. Map.prototype.get(key) – возвращает значение по ключу или undefined, если ключ key отсутствует. Map.prototype.has(key) – возвращает true, если ключ key присутствует в коллекции, иначе false. Map.prototype.delete(key) – удаляет элемент (пару «ключ/значение») по ключу key. Map.prototype.clear() – очищает коллекцию от всех элементов. Map.prototype.size – возвращает текущее количество элементов. let map = new Map(); map.set("1", "str1"); // строка в качестве ключа map.set(1, "num1"); // цифра как ключ map.set(true, "bool1"); // булево значение как ключ // помните, обычный объект Object приводит ключи к строкам? // Map сохраняет тип ключей, так что в этом случае сохранится 2 разных значения: alert(map.get(1)); // "num1" alert(map.get("1")); // "str1" alert(map.size); // 3 Для перебора коллекции Map есть 3 метода: Map.prototype.keys() – возвращает итерируемый объект по ключам, Map.prototype.values() – возвращает итерируемый объект по значениям, Map.prototype.entries() – возвращает итерируемый объект по парам вида [ключ, значение], этот вариант используется по умолчанию в for..of. В отличие от обычных объектов, в Map перебор происходит в том же порядке, в каком происходило добавление элементов.

7. Что такое Set?

Поддержи проект и получи доступ ко всему контенту всего за 290

8. Что такое цикл событий?

Поддержи проект и получи доступ ко всему контенту всего за 290

9. Что такое область видимости?

Поддержи проект и получи доступ ко всему контенту всего за 290

10. Какое значение у "this"?

Поддержи проект и получи доступ ко всему контенту всего за 290

11. Что такое замыкание?

Поддержи проект и получи доступ ко всему контенту всего за 290

12. Что такое DOM?

Поддержи проект и получи доступ ко всему контенту всего за 290

13. Что такое Shadow DOM?

Поддержи проект и получи доступ ко всему контенту всего за 290

14. Что такое Event Propagation?

Поддержи проект и получи доступ ко всему контенту всего за 290

15. Что такое всплытие события?

Поддержи проект и получи доступ ко всему контенту всего за 290

16. Что такое погружение события?

Поддержи проект и получи доступ ко всему контенту всего за 290

17. Зачем нужны e.preventDefault() и e.stopPropagation()?

Поддержи проект и получи доступ ко всему контенту всего за 290

18. Что такое делегирование событий?

Поддержи проект и получи доступ ко всему контенту всего за 290

19. Что такое строгий режим ("use strict")?

Поддержи проект и получи доступ ко всему контенту всего за 290

20. Различия между «var», «let» и «const»

Поддержи проект и получи доступ ко всему контенту всего за 290

21. Что такое приведение типов?

Поддержи проект и получи доступ ко всему контенту всего за 290

22. В чем разница между "==" и "==="?

Поддержи проект и получи доступ ко всему контенту всего за 290

23. Почему "typeof null" возвращает "object"?

Поддержи проект и получи доступ ко всему контенту всего за 290

24. В чем разница между "null" и "undefined"?

Поддержи проект и получи доступ ко всему контенту всего за 290

25. Зачем нужен тип данных Symbol?

Поддержи проект и получи доступ ко всему контенту всего за 290

26. Можно ли сравнить объекты оператором сравнения?

Поддержи проект и получи доступ ко всему контенту всего за 290

27. Как выполняется клонирование объекта?

Поддержи проект и получи доступ ко всему контенту всего за 290

28. Что такое поднятие переменных (Hoisting)?

Поддержи проект и получи доступ ко всему контенту всего за 290

29. В чем разница между обычной функцией и функциональным выражением?

Поддержи проект и получи доступ ко всему контенту всего за 290

30. Что такое прототип объекта?

Поддержи проект и получи доступ ко всему контенту всего за 290

31. Как создать объект без прототипа?

Поддержи проект и получи доступ ко всему контенту всего за 290

32. Как проверить наличие свойства в объекте?

Поддержи проект и получи доступ ко всему контенту всего за 290

33. Что такое объектная обертка (Wrapper Objects)?

Поддержи проект и получи доступ ко всему контенту всего за 290

34. Что такое классы?

Поддержи проект и получи доступ ко всему контенту всего за 290

35. Для чего используется ключевое слово «new»?

Поддержи проект и получи доступ ко всему контенту всего за 290

36. Что такое Function.prototype.apply?

Поддержи проект и получи доступ ко всему контенту всего за 290

37. Что такое Function.prototype.call?

Поддержи проект и получи доступ ко всему контенту всего за 290

38. Что такое Function.prototype.bind?

Поддержи проект и получи доступ ко всему контенту всего за 290

39. Что такое объект arguments?

Поддержи проект и получи доступ ко всему контенту всего за 290

40. Что такое IIFE?

Поддержи проект и получи доступ ко всему контенту всего за 290

41. Что такое стрелочные функции?

Поддержи проект и получи доступ ко всему контенту всего за 290

42. Что такое Promise (Обещания)?

Поддержи проект и получи доступ ко всему контенту всего за 290

43. Перечислите методы Promise.*

Поддержи проект и получи доступ ко всему контенту всего за 290

44. Что такое async/await?

Поддержи проект и получи доступ ко всему контенту всего за 290

45. Как проверить, является ли объект массивом?

Поддержи проект и получи доступ ко всему контенту всего за 290

46. Какие есть способы перебора массива?

Поддержи проект и получи доступ ко всему контенту всего за 290

47. Как очистить массив?

Поддержи проект и получи доступ ко всему контенту всего за 290

48. Перечислите методы Array.prototype.*

Поддержи проект и получи доступ ко всему контенту всего за 290

49. Что такое шаблонные литералы?

Поддержи проект и получи доступ ко всему контенту всего за 290

50. Что такое модули?

Поддержи проект и получи доступ ко всему контенту всего за 290

51. Что такое функция обратного вызова (Callback Function)?

Поддержи проект и получи доступ ко всему контенту всего за 290

52. Что такое полифиллы и шимы (shim)?

Поддержи проект и получи доступ ко всему контенту всего за 290

53. Что такое транспиляция?

Поддержи проект и получи доступ ко всему контенту всего за 290

54. Почему 0.1 + 0.2 === 0.3 — это false?

Поддержи проект и получи доступ ко всему контенту всего за 290

55. Что такое генераторы?

Поддержи проект и получи доступ ко всему контенту всего за 290

56. Какие существуют методы для хранения данных в браузере?

Поддержи проект и получи доступ ко всему контенту всего за 290

57. В чем разница между sessionStorage и localStorage?

Поддержи проект и получи доступ ко всему контенту всего за 290

58. В чем разница между WeakSet, WeakMap и обычными Set и Map?

Поддержи проект и получи доступ ко всему контенту всего за 290
Хочешь стать частью сообщества Девстанции?
Вступай в наш чат в Telegram

Также в этой категории

Задачник
  33 задачи

30 алгоритмических задач по JavaScript

Задачи с собеседований на JavaScript с решением

1971 просмотр
От 16 февраля
Викторина
  21 вопрос

Промисы, async/await и Event Loop

Вопросы про Promise API, async/await и цикл событий

189 просмотров
От 7 февраля
Викторина
  33 вопроса

Подковыристые основы JavaScript

Типичные и не очень вопросы с собеседования по JavaScript

164 просмотра
От 7 февраля
Викторина
  19 вопросов

Про прототипы: __proto__, prototype

Викторина по вопросам о прототипах в JavaScript

58 просмотров
От 9 октября 2023
Викторина
  21 вопрос

Вопросы от пьяного интервьюера

Викторина с самыми странными вопросами

108 просмотров
От 9 октября 2023

Вам может быть интересно

Викторина
  17 вопросов

Вопросы по основам HTML

Вопросы для собеседования на знание HTML

125 просмотров
От 9 октября 2023
Шпаргалка
  15 вопросов

Шпаргалка по вопросам о Vue.js

Вопросы для собеседования Vue.js-разработчика

283 просмотра
От 19 июня 2023
Шпаргалка
  19 вопросов

Шпаргалка по вопросам о CSS

Вопросы про CSS на собеседовании

275 просмотров
От 4 октября 2023
Шпаргалка
  25 вопросов

Шпаргалка по вопросам о React.js

Вопросы для собеседования React.js-разработчика

440 просмотров
От 30 мая 2023
Викторина
  15 вопросов

Самая типизированная викторина

Викторина по вопросам о TypeScript

82 просмотра
От 9 октября 2023
Викторина
  32 вопроса

Большой тест по CSS

Большая викторина по вопросам о CSS

40 просмотров
От 2 июня 2023

Топ тредов

Gravatar for 9tokio
Tokio:
то что раньше было бесплатным теперь платное - вот это я понимаю

Последнее сообщение:
Логотип Девстанции
Девстанция:
Спасибо за поддержку проекта :) Повышение качества контента - один из важнейших приоритетов. Этому м...
3 сообщения
213 просмотров

Логотип Девстанции
Девстанция:
Поиск людей для совместной разработки IT-стартапов

Последнее сообщение:
В этом треде пока нет сообщений
0 сообщений
108 просмотров

Логотип Девстанции
Девстанция:
Какой язык программирования выбрать в качестве первого?

Последнее сообщение:
Gravatar for 2kokke
Kokke:
Python или JS - универсально. Но по уму надо бы с чего-то строгого начинать и достаточно низкоуровне...
1 сообщение
140 просмотров

Все категории