Расскажите о шаблоне проектирования «Прототип»
Прототип (Prototype) — это порождающий шаблон проектирования. Он используется для создания объектов. Объекты, созданные с его помощью, содержат значения, скопированные из их прототипа (из объекта-образца). Этот шаблон ещё называют шаблоном Свойства (Properties).
Пример использования паттерна «прототип» — это инициализация неких объектов стандартными значениями, хранящимися в базе данных. Такие значения, записанные в прототип, копируются в новые объекты без обращения к базе данных.
Надо отметить, что этот паттерн редко используется в классических языках. В JavaScript применяется модель прототипного наследования. Данный паттерн применяется при конструировании новых объектов и их прототипов.
👉 @frontendInterview
Прототип (Prototype) — это порождающий шаблон проектирования. Он используется для создания объектов. Объекты, созданные с его помощью, содержат значения, скопированные из их прототипа (из объекта-образца). Этот шаблон ещё называют шаблоном Свойства (Properties).
Пример использования паттерна «прототип» — это инициализация неких объектов стандартными значениями, хранящимися в базе данных. Такие значения, записанные в прототип, копируются в новые объекты без обращения к базе данных.
Надо отметить, что этот паттерн редко используется в классических языках. В JavaScript применяется модель прототипного наследования. Данный паттерн применяется при конструировании новых объектов и их прототипов.
👉 @frontendInterview
Что такое «временная мёртвая зона» в ES6?
В ES6 выполняется подъём переменных и констант, объявленных с использованием ключевых слов let и const (выполняется и подъём сущностей, объявленных с использованием ключевых слов var, class и function). Однако в коде имеется зона, простирающаяся от входа в область видимости до объявления переменной или константы. При обращении к переменной или константе в этой зоне будет выдана ошибка. Это и есть «временная мёртвая зона» (Temporal Dead Zone, TDZ).
👉 @frontendInterview
В ES6 выполняется подъём переменных и констант, объявленных с использованием ключевых слов let и const (выполняется и подъём сущностей, объявленных с использованием ключевых слов var, class и function). Однако в коде имеется зона, простирающаяся от входа в область видимости до объявления переменной или константы. При обращении к переменной или константе в этой зоне будет выдана ошибка. Это и есть «временная мёртвая зона» (Temporal Dead Zone, TDZ).
//console.log(aLet) // выбросит ReferenceErrorВ данном примере TDZ заканчивается после объявления aLet, но не после присвоения aLet значения.
let aLet;
console.log(aLet); // undefined
aLet = 10;
console.log(aLet); // 10
👉 @frontendInterview
В чём разница между объектами Map и WeakMap?
Эти объекты ведут себя по-разному в том случае, если переменная, содержащая ссылку на объект, являющийся ключом одной из пар ключ/значение, оказывается недоступной. Вот пример:
В результате оказывается, что объекты WeakMap позволяют сборщику мусора избавляться от тех своих записей, на ключи которых нет ссылок во внешних переменных. Объекты map хранят пары ключ/значение вне зависимости от наличия или отсутствия внешних ссылок на ключи.
То же самое можно сказать и о реализации структуры данных Map с использованием обычных массивов. В WeakMap используются «слабые» ссылки на ключи.
Они не препятствуют работе сборщика мусора в том случае, если на объект, используемый в роли ключа, нет других ссылок.
👉 @frontendInterview
Эти объекты ведут себя по-разному в том случае, если переменная, содержащая ссылку на объект, являющийся ключом одной из пар ключ/значение, оказывается недоступной. Вот пример:
var map = new Map();После того, как завершается выполнение IIFE, у нас уже не будет доступа к объектам a и b. Поэтому сборщик мусора удаляет ключ b из weakmap и очищает память. А вот содержимое map остаётся при этом неизменным.
var weakmap = new WeakMap();
(function() {
var a = {
x: 12
};
var b = {
y: 12
};
map.set(a, 1);
weakmap.set(b, 2);
})()
В результате оказывается, что объекты WeakMap позволяют сборщику мусора избавляться от тех своих записей, на ключи которых нет ссылок во внешних переменных. Объекты map хранят пары ключ/значение вне зависимости от наличия или отсутствия внешних ссылок на ключи.
То же самое можно сказать и о реализации структуры данных Map с использованием обычных массивов. В WeakMap используются «слабые» ссылки на ключи.
Они не препятствуют работе сборщика мусора в том случае, если на объект, используемый в роли ключа, нет других ссылок.
👉 @frontendInterview
Алгоритмы — это основа программирования, определяющая, каким образом программное обеспечение будет использовать структуры данных.
Вы познакомитесь с базовыми аспектами построения алгоритмов, основными понятиями и определениями, структурами данных, затем перейдете к основным методам построения алгоритмов, неразрешимости и методам решения неразрешимых задач, и, наконец, изучите рандомизацию при проектировании алгоритмов.
👉 @frontendInterview
Вы познакомитесь с базовыми аспектами построения алгоритмов, основными понятиями и определениями, структурами данных, затем перейдете к основным методам построения алгоритмов, неразрешимости и методам решения неразрешимых задач, и, наконец, изучите рандомизацию при проектировании алгоритмов.
👉 @frontendInterview
Разница между максимальными длинами
Вам даны два массива строк. Вам нужно найти разницу между длинами самой длинной строки первого массива и самой длинной строки второго массива.
Пример:
Вам даны два массива строк. Вам нужно найти разницу между длинами самой длинной строки первого массива и самой длинной строки второго массива.
Пример:
a1 = ["hoqq", "bbllkw", "oox", "ejjuyyy", "plmiis", "xxxzgpsssa", "xxwwkktt", "znnnnfqknaz", "qqquuhii", "dvvvwz"]
a2 = ["cccooommaaqqoxii", "gggqaffhhh", "tttoowwwmmww"]
mxdiflg(a1, a2) --> 13Vue.js в действии
Vue.js – это популярная библиотека для создания пользовательских интерфейсов. В ней значительно переосмыслены реактивные идеи, впервые появившиеся в React.js.
Книга «Vue.js в действии» рассказывает о создании быстрых и эластичных пользовательских интерфейсов для Интернета. Освоив ее, вы напишете полноценное приложение для интернет-магазина, где будут присутствовать списки товаров, админка, а также организован полноценный процесс онлайнового заказа.
👉 @frontendInterview
Vue.js – это популярная библиотека для создания пользовательских интерфейсов. В ней значительно переосмыслены реактивные идеи, впервые появившиеся в React.js.
Книга «Vue.js в действии» рассказывает о создании быстрых и эластичных пользовательских интерфейсов для Интернета. Освоив ее, вы напишете полноценное приложение для интернет-магазина, где будут присутствовать списки товаров, админка, а также организован полноценный процесс онлайнового заказа.
👉 @frontendInterview
Объясните особенности проверки равенства значений в JavaScript
В JavaScript есть два оператора для проверки равенства величин. Первый — это так называемый оператор строгого равенства. Второй — оператор нестрогого равенства, при использовании которого может производиться преобразование типов проверяемых величин.
1. Оператор строгого равенства (===) проверяет значения на равенство, не выполняя при этом преобразования типов.
2. Оператор нестрогого равенства (==) проверяет значения на равенство, выполняя их приведение к общему типу.
1. Если любое из сравниваемых значений может быть значением true или false — постарайтесь избегать оператора ==. Используйте оператор ===.
2. Используйте оператор === в том случае, если работаете со следующими значениями: 0, «» или [] (пустой массив).
В JavaScript есть два оператора для проверки равенства величин. Первый — это так называемый оператор строгого равенства. Второй — оператор нестрогого равенства, при использовании которого может производиться преобразование типов проверяемых величин.
1. Оператор строгого равенства (===) проверяет значения на равенство, не выполняя при этом преобразования типов.
2. Оператор нестрогого равенства (==) проверяет значения на равенство, выполняя их приведение к общему типу.
var a = "42";Вот некоторые правила, касающиеся использования различных операторов проверки равенства в JavaScript:
var b = 42;
a == b; // true
a === b; // false
1. Если любое из сравниваемых значений может быть значением true или false — постарайтесь избегать оператора ==. Используйте оператор ===.
2. Используйте оператор === в том случае, если работаете со следующими значениями: 0, «» или [] (пустой массив).
Какая запись эквивалента записи flex: auto?
Anonymous Quiz
20%
flex: 1 0 auto
12%
flex: 0 1 auto
19%
flex: 0 0 0
25%
flex: 0 0 auto
24%
flex: 1 1 auto
Приведите примеры приведения к логическому типу значений, не относящихся к этому типу
Суть этого вопроса в том, чтобы выяснить, какие значения, в случае преобразования их к логическому типу, превращаются в false, а какие — в true.
Вот список значений, которые можно назвать «ложными» (falsy). Они, при преобразовании к логическому типу, превращаются в значение false:
1. «» (пустая строка).
2. 0, -0, NaN (не-число).
3. null, undefined.
«Ложным» является и логическое значение false.
Любое значение, которое не входит в этот список, при его преобразовании к логическому типу, превращается в true (такие значения называют «истинными» — truthy). Например:
1. «hello».
2. 42.
3. [ ], [ 1, «2», 3 ] (массивы).
4. { }, { a: 42 } (объекты).
5. function foo() { .. } (функции).
«Истинным» является и логическое значение true.
👉 @frontendInterview
Суть этого вопроса в том, чтобы выяснить, какие значения, в случае преобразования их к логическому типу, превращаются в false, а какие — в true.
Вот список значений, которые можно назвать «ложными» (falsy). Они, при преобразовании к логическому типу, превращаются в значение false:
1. «» (пустая строка).
2. 0, -0, NaN (не-число).
3. null, undefined.
«Ложным» является и логическое значение false.
Любое значение, которое не входит в этот список, при его преобразовании к логическому типу, превращается в true (такие значения называют «истинными» — truthy). Например:
1. «hello».
2. 42.
3. [ ], [ 1, «2», 3 ] (массивы).
4. { }, { a: 42 } (объекты).
5. function foo() { .. } (функции).
«Истинным» является и логическое значение true.
👉 @frontendInterview
This media is not supported in your browser
VIEW IN TELEGRAM
Современный фронтенд на нашем втором канале
17к фронтендеров уже читают его, подпишись и ты
👉 @seniorFront
17к фронтендеров уже читают его, подпишись и ты
👉 @seniorFront
Убрать первый и последний символ
Задача проста. Вам нужно написать функцию, которая принимает строку и убирает в ней первый и последний символ.
👉 @frontendInterview
Задача проста. Вам нужно написать функцию, которая принимает строку и убирает в ней первый и последний символ.
👉 @frontendInterview
Как задать стили к двум последним элементам li?
Anonymous Quiz
13%
li + li + li
55%
li:nth-child(n+2)
32%
li:nth-last-child(n+3)