Frontend Interview - собеседования по Javanoscript / Html / Css – Telegram
Frontend Interview - собеседования по Javanoscript / Html / Css
11.4K subscribers
2.1K photos
118 videos
319 files
530 links
Канал для подготовки к собеседованиям по фронтенду

Админ, сотрудничество, реклама: @seniorFrontPromo, @maria_seniorfront

Купить рекламу: https://telega.in/c/frontendinterview

Канал в реестре РКН:
https://rknn.link/su
Download Telegram
Расскажите о шаблоне проектирования «Открытый модуль»

Шаблон «Открытый модуль» (Revealing Module) является разновидностью шаблона «Модуль» (Module). Цель использования этого шаблона заключается в поддержке инкапсуляции и в открытии некоторых свойств и методов, возвращённых в объектном литерале. На картинке представлена реализация этого шаблона.

Очевидный недостаток этого шаблона заключается в том, что при его использовании нельзя обращаться к приватным методам.

👉 @frontendInterview
Какой цвет текста внутри элемента a?
Anonymous Quiz
38%
red
61%
blue
2%
black
Building Web Apps with WordPress (2019)

Если у вас есть базовый опыт работы с PHP, HTML, CSS и JavaScript, вы можете использовать WordPress для разработки быстрых, масштабируемых, безопасных и настраиваемых веб-приложений, мобильных приложений, веб-сервисов. Наряду с основными функциями WordPress вы узнаете, как создавать собственные плагины, темы и сервисы практически для любого веб-приложения или мобильного приложения.

👉 @frontendInterview
Найти делители!

Создайте функцию, которая принимает число и возвращает в виде массива его делители

Пример:
divisors(12); // should return [2,3,4,6]
divisors(25); // should return [5]


👉 @frontendInterview
HTML and CSS: Visual QuickStart Guide, 9th Edition (2020)

HTML и CSS остаются стержнем Интернета. Каждый начинающий веб-разработчик должен досконально разбираться в них, в том числе в последних достижениях в этих стандартах и новейших технологиях, основанных на них. На протяжении десятилетий будущие веб-профессионалы обращались к HTML и CSS: Visual QuickStart Guide. Это руководство было тщательно обновлено новым автором, обучившим тысячи начинающих веб-разработчиков. Данное издание содержит новые примеры и проекты, а также большое количество сопровождающего видеоконтента.

👉 @frontendInterview
В чём разница между объектами Map и WeakMap?

Эти объекты ведут себя по-разному в том случае, если переменная, содержащая ссылку на объект, являющийся ключом одной из пар ключ/значение, оказывается недоступной.

Вот пример:
 var map = new Map();
var weakmap = new WeakMap();

(function() {
var a = {
x: 12
};
var b = {
y: 12
};

map.set(a, 1);
weakmap.set(b, 2);
})()

После того, как завершается выполнение IIFE, у нас уже не будет доступа к объектам a и b. Поэтому сборщик мусора удаляет ключ b из weakmap и очищает память. А вот содержимое map остаётся при этом неизменным.

В результате оказывается, что объекты WeakMap позволяют сборщику мусора избавляться от тех своих записей, на ключи которых нет ссылок во внешних переменных

👉 @frontendInterview
Что из перечисленного НЕ является псевдо-элементом?
Anonymous Quiz
40%
::first-child
1%
::after
9%
::first-letter
1%
::before
11%
::first-line
39%
::selection
Как в JavaScript-функции передаются параметры: по ссылке или по значению?

Параметры всегда передаются по значению, но в переменные, представляющие объекты, записаны ссылки на объекты. Поэтому, когда в функцию передают объект и меняют свойство этого объекта, это изменение сохраняется в объекте и при выходе из функции. В результате возникает ощущение того, что параметры в функции передаются по ссылке. Но если изменить значение переменной, представляющей объект, это изменение не повлияет на объекты, находящиеся за пределами функции.

Вот пример:
 function changeStuff(a, b, c) {
a = a * 10;
b.item = "changed";
c = {item: "changed"};
}

var num = 10;
var obj1 = {item: "unchanged"};
var obj2 = {item: "unchanged"};

changeStuff(num, obj1, obj2);

console.log(num);
console.log(obj1.item);
console.log(obj2.item);

Вот что выведет этот код:
10
changed
unchanged


👉 @frontendInterview
Гомогенные массивы

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

Пример:
filterHomogenous([[1, 5, 4], ['a', 3, 5], ['b'], [], ['1', 2, 3]])
//[[1, 5, 4], ['b']].


👉 @frontendInterview
Чему равен вертикальный margin между элементами p и div?
Anonymous Quiz
49%
48px
31%
80px
8%
32px
12%
16px
Как организовать «глубокую заморозку» объекта?

Для того чтобы обеспечить «глубокую заморозку» объекта с использованием Object.freeze(), нужно создать рекурсивную функцию, которая «замораживает» свойства объекта, которые также являются объектами.

Вот — «глубокая заморозка»:
 function deepFreeze(object) {
let propNames = Object.getOwnPropertyNames(object);
for (let name of propNames) {
let value = object[name];
object[name] = value && typeof value === "object" ? deepFreeze(value) : value;
}
return Object.freeze(object);
}
let person = {
name: "Leonardo",
profession: {
name: "developer"
}
};
deepFreeze(person);
person.profession.name = "doctor"; // TypeError: Cannot assign to read only property 'name' of object

Сообщение об ошибке выводится лишь в строгом режиме. В обычном режиме значение не меняется без вывода сообщений об ошибках.

👉 @frontendInterview
Почему JavaScript-программисты испытывают проблемы при использовании ключевого слова this?

Самое важное, что нужно понять о this, заключается в том, что у функций нет фиксированного значения this. Это значение зависит от того, как именно вызывается функция. Если мы говорим о том, что функция вызывается с некоторым конкретным значением this, это значит, что это значение определяется не во время объявления функции, а во время её вызова. Вот некоторые особенности this:

1. Если функция вызывается в обычном виде (то есть, с использованием конструкции вида someFunc()), то this будет ссылаться на глобальный объект (в браузере это window). Если код выполняется в строгом режиме, то в this будет записано значение undefined.
Если функция вызывается как метод объекта, то ключевое слово this будет представлено объектом, которому принадлежит метод.

2. Если функцию вызывают с использованием call или apply, this будет представлено тем, что указано в качестве первого аргумента call или apply.

3. Если функция вызывается в виде обработчика события, то в this будет целевой элемент события.

4. Если функцию вызывают в виде конструктора, с использованием ключевого слова new, то в this будет новый объект, прототип которого установлен в качестве свойства prototype функции-конструктора.

5. Если функция создана с использованием метода bind, то ключевое слово this функции будет жёстко привязано к значению, переданному bind в качестве первого аргумента. Это — единственное исключение из правила, в соответствии с которым функции не имеют жёстко заданного значения this. Функции, созданные с использованием bind, имеют иммутабельное значение this.

👉 @frontendInterview