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
Расскажите про переменную, содержащую значение null. В чем её отличие от undefined-переменной?

Переменная, содержащая значение null, должна быть явным образом установлена в это значение. Она символизирует отсутствие значения и отличается от undefined-переменной тем, что значение, находящееся в ней, было ей явным образом назначено. Для того чтобы проверить значение на null, достаточно воспользоваться оператором строгого равенства. Для проверки на null, как и в случае с проверкой на undefined, не следует пользоваться оператором нестрогого равенства, считающим равными значения null и undefined.

 var foo = null;
console.log(foo === null); // true
console.log(typeof foo === 'object'); // true

console.log(foo == undefined); // true Не используйте такую конструкцию для проверки на null!

Я стараюсь никогда не оставлять переменные в необъявленном состоянии, или в состоянии, когда они объявлены, но им явным образом не назначено никакого значения.
Расскажите о шаблоне проектирования «Открытый модуль»

Шаблон «Открытый модуль» (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