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

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

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

Канал в реестре РКН:
https://rknn.link/su
Download Telegram
:focus-within

Псевдокласс :focus-within используется в двух случаях:

- если к этому элементу применяется псевдокласс :focus;
- если к потомку этого элемента применяется псевдокласс :focus.

Причём потомок не обязательно должен быть прямым. Например, в примере с формой все теги <input> были сначала вложены в <div> и только потом — в <form>. Несмотря на это, :focus-within применился к форме.

👉 @frontendInterview
3👍2
Разработка игр на языке JavaScript

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

👉 @frontendInterview
👍10👎1
Area or Perimeter

Вам даны два параметра - длина и ширина прямоугольника. Если этот прямоугольник является квадратом, то верните его площадь. В другом случае верните периметр.

Примеры:
6, 10 --> 32
3, 3 --> 9


👉 @frontendInterview
👎9👍8
Остался в РФ и думаешь о своем будущем? Посмотри на IT! Это отличный шанс для всех, ведь в 2022 году на рынке освободилось место для новых специалистов после оттока айтишников из страны.

Поступай в Kata Academy на Frontend-разработчика и плати за обучение только после гарантированного трудоустройства с зарплатой от 80 000₽.

Тебя ждут 9 месяцев интенсивного обучения: ты изучишь только нужный стек технологий и будешь полностью подготовлен к выходу на работу в Москве или Санкт-Петербурге, куда тебе предстоит переехать после выпуска по условиям договора со школой.

По окончании обучения школа продолжит поддерживать тебя и участвовать в развитии твоей карьеры в течение 2-х лет после выпуска.

Поступай в Kata Academy, чтобы стать Frontend-разработчиком уже в июле!
👎7👍3
Object.seal()

Метод Object.seal() запечатывает объект, предотвращая добавление новых свойств к объекту и делая все существующие свойства не настраиваемыми. Значения представленных свойств всё ещё могут изменяться, поскольку они остаются записываемыми.

По умолчанию, объекты являются расширяемыми (к ним могут добавляться новые свойства). Запечатывание объекта предотвращает добавление к нему новых свойств и делает все существующие свойства не настраиваемыми. Оно делает все свойства объекта фиксированными и неизменными.

Примеры
 var obj = {
prop: function() {},
foo: 'bar'
};

Новые свойства могу быть добавлены, существующие свойства могут быть изменены или удалены.
 obj.foo = 'baz';
obj.lumpy = 'woof';
delete obj.prop;

var o = Object.seal(obj);

assert(o === obj);
assert(Object.isSealed(obj) === true);

Изменение значений свойств на запечатанном объекте всё ещё работает.
 obj.foo = 'quux';

Но вы не можете преобразовать свойства данных в свойства доступа и наоборот.
Object.defineProperty(obj, 'foo', { get: function() { return 'g'; } }); // выбросит TypeError

👉 @frontendInterview
👍51
Какое значение примет result?
Anonymous Quiz
3%
6
24%
5
18%
SyntaxError
9%
undefined
46%
10
👍7👏4👎2🤔2
Мемоизация

Мемоизация — сохранение результатов выполнения функций для предотвращения повторных вычислений. Это один из способов оптимизации.

Функция с мемоизацией:
 const memoizedAdd = () => {
let cache = {};
return (n) => {
if (n in cache) {
console.log('Fetching from cache');
return cache[n];
}
else {
console.log('Calculating result');
let result = n + 10;
cache[n] = result;
return result;
}
}
}

Функция memoizeAdd возвращает другую функцию, которую мы можем вызвать тогда, когда нужно.
 const newAdd = memoizedAdd();
console.log(newAdd(9)); // вычислено
console.log(newAdd(9)); // взято из кэша

Переменная cache может хранить данные между вызовами функции, так как она определена в замыкании.

Важно то, что функция с мемоизацией — это чистая функция. Эта функция, в частности, возвращает одно и то же для одних и тех же переданных ей аргументов независимо от того, сколько раз до этого её вызывали.
👍32
Стилизация — неотъемлемая часть работы над любым веб-приложением.

Как сделать вёрстку корректной и понять, какие инструменты лучше подойдут для нового проекта или рефакторинга уже существующего приложения?

Обсудим это на бесплатном вебинаре «CSS: на чём писать в 2023» вместе с Артуром Стамбульцяном, Frontend Team Lead компании Ton. Разберём технологии PostCSS, Sass, Less, Styled Components, CSS Modules и Tailwind, сравним их друг с другом и выясним, есть ли среди них явный фаворит.

Встречаемся в следующий вторник, 15 ноября, в 19:00 (по Москве).

Регистрируйтесь по ссылке!
👍2
Участвуйте в Weekend Offer для фронтенд-разработчиков и станьте частью команды core mVK

Если вы хотите реализоваться в сфере IT и принимать участие в разработке сложных платформ и инструментов — пройдите оффер всего за одни выходные и получите возможность присоединиться к Команде ВКонтакте.

Вы можете помочь в модернизации приложения, которым пользуются более 40 миллионов человек в месяц. Присоединяйтесь к инфраструктурной команде core mVK или к продуктовым командам суперприложения, ленты и рекомендаций, контента, стикеров и подарков или VK Клипов и получите возможность реализовать свои идеи.

Переходите по ссылке, чтобы узнать больше о работе core mVK и проведении Weekend Offer.

👉 @frontendInterview
👍2😱1
Какое значение примет result?
Anonymous Quiz
11%
null
48%
undefined
24%
10
17%
0
👍51
Что такое каррирование?

Каррирование – это трансформация функций таким образом, чтобы они принимали аргументы не как f(a, b, c), а как f(a)(b)(c).
Оно не вызывает функцию. Оно просто трансформирует её.

Пример
function curry(f) {
return function(a) {
return function(b) {
return f(a, b);
};
};
}

// использование
function sum(a, b) {
return a + b;
}
let carriedSum = curry(sum);
alert( carriedSum(1)(2) ); // 3

Результат curry(func) – обёртка function(a).
Когда она вызывается как sum(1), аргумент сохраняется в лексическом окружении и возвращается новая обёртка function(b).
Далее уже эта обёртка вызывается с аргументом 2 и передаёт вызов к оригинальной функции sum.

👉 @frontendInterview
👍20
Устойчивый веб-дизайн

Без сомнения, "Устойчивый веб-дизайн" является обязательным чтением для веб-дизайнеров и front-end разработчиков во всем мире. Тут собрана история и философия веба. Раскрыты идеи веб-разработки.

👉 @frontendInterview
👍3👎21
Fix My Phone Numbers!

Номер телефона должен состоять из 11 цифр и всегда начинаться с 0.
Вам дана строка, где в номер телефона подмешаны различные символы. Очистите строку от лишних символов и верните номер.

👉 @frontendInterview
👍2
Псевдоэлементы

Псевдоэлементы — это элементы, которых не существует в HTML-разметке. Они создаются и позиционируются исключительно при помощи CSS. Чаще всего используются для создания различных декоративных элементов (которые не несут содержательного смысла).

Также псевдоэлементы приходят на помощь, когда нужно наложить поверх картинки так называемый оверлей (перекрывающий слой). На этом польза от псевдоэлементов не заканчивается.

Пример
Самый частый сценарий использования псевдоэлемента — наложение оверлея, полупрозрачной заливки поверх картинки. Чаще всего это требуется на первом экране, но этим способом можно наложить оверлей на любое изображение на сайте.
<header class="header">
<h1 class="header__noscript">Good evening, Clarice.</h1>
</header>

.header {
background: #999999
url("background.noscript")
no-repeat center / cover;
}

.header__noscript {
color: #ffffff;
font-size: 82px;
text-transform: uppercase;
text-align: center;
}

Два самых часто встречающихся псевдоэлемента. Они очень похожи. Единственная разница заключается в том, что ::before по умолчанию располагается перед содержимым элемента, для которого задаётся, а ::after — после.
Для input нельзя задать :before или :after

👉 @frontendInterview
👍6