Frontend Interview - собеседования по Javascript / Html / Css
10.4K subscribers
2.1K photos
118 videos
320 files
501 links
Канал для подготовки к собеседованиям по фронтенду

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

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

Канал в реестре РКН:
https://rknn.link/su
Download Telegram
Какое значение примет result?
Anonymous Quiz
56%
undefined
24%
2009
20%
null
​Пятница 13

Так как пятница 13 считается несчастливым днем, вам обязательно нужно к ним подготовиться.
Для этого напишите функцию, которая принимает текущий год и возвращает количество пятниц 13 в этом году

Примеры
 unluckyDays(2015) == 3
unluckyDays(1986) == 1
​Почему typeof null возвращает object? Как проверить, является ли значение null?

typeof null == 'object' всегда будет возвращать true по историческим причинам. Поступало предложение исправить эту ошибку, изменив typeof null = 'object' на typeof null = 'null', но оно было отклонено в интересах сохранения обратной совместимости (такое изменение повлекло бы за собой большое количество ошибок).

Для проверки, является ли значение null можно использовать оператор строгого равенства (===):
function isNull(value){
return value === null
}
Какое значение свойства font-size у элемента span?
Anonymous Quiz
9%
40px
10%
10px
78%
20px
2%
80px
​Что такое запоминание или мемоизация (Memoization)?

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

Пример:
function memoize(fn){
const cache = {}
return function(param){
if(cache[param]){
console.log('cached')
return cache[param]
} else{
let result = fn(param)
cache[param] = result
console.log('not cached')
return result
}
}
}

const toUpper = (str = '') => str.toUpperCase()

const toUpperMemoized = memoize(toUpper)

toUpperMemoized('abcdef')
toUpperMemoized('abcdef') // не выполнится
Какое значение примет result?
Anonymous Quiz
13%
SyntaxError
57%
true
30%
false
​В чем разница между обычной функцией и функциональным выражением?

Допустим, у нас есть следующее:
hoistedFunc()
notHoistedFunc()

function hoistedFunc(){
console.log('I am hoisted')
}

var notHoistedFunc = function(){
console.log('I will not be hoisted!')
}

Вызов notHoistedFunc приведет к ошибке, а вызов hoistedFunc нет, потому что hoistedFunc «всплывает», поднимается в глобальную область видимости, а notHoistedFunc нет.
Какое изначальное значение у CSS свойства list-style-type?
Anonymous Quiz
10%
decimal
6%
lower-roman
9%
square
29%
disc
2%
lower-greek
43%
circle
​В чем разница между оператором «in» и методом hasOwnProperty?

Отличие состоит в том, что оператор «in» проверяет наличие свойства не только в самом объекте, но и в его прототипах, а метод hasOwnProperty — только в объекте.

console.log('prop' in o) // true
console.log('toString' in o) // true

console.log(o.hasOwnProperty('prop')) // true
console.log(o.hasOwnProperty('toString')) // false
Какое значение нельзя задать свойству justify-content?
Anonymous Quiz
85%
justify
3%
space-between
5%
center
4%
space-around
2%
flex-start
1%
flex-end
Данная книга посвящена тому, как на языке JavaScript создавать хороший код для фронтенда (и не только). В книге последовательно затронуты все аспекты производства JavaScript-кода: от выбора архитектуры и конструирования кода до покрытия модульными тестами, отладки, интеграционного тестирования, сборки и непрерывной поставки вашего кода. Рассматриваются как общие моменты — постановка процесса разработки, событийно-ориентированная архитектура JavaScript-приложений, техника непрерывной интеграции, так и предельно конкретные вопросы — как и какие инструменты (фреймворки) использовать для той или иной задачи, что конкретное нужно делать в том или ином случае, какие ошибки встречаются. Попутно в книге рассмотрено применение большого количества инструментов. Существенное внимание уделено автоматизации на всех этапах создания и поставки JavaScript-кода.
​Пробелы

Напишите функцию, которая проверяет строку на правильность расставленных пробелов.
То есть между словами должен находиться пробел, а также не должно быть пробелов перед строкой и после неё.
Примеры:
'Hello world' = true
' Hello world' = false
'Hello world ' = false
'Hello world' = false
'Hello' = true
'Helloworld' = true
' ' = false
'' = true
В данной книге речь пойдет о том, как правильно изспользовать таблицы стилей при создании HTML- документа. Данная книга отлично подойдет для школьников и учеников гимназии. Так же ее будет интересно почитать тем, кто хочет расширить свои знания в HTML и CSS.
​Какие приемы работы с асинхронным кодом в JS Вы знаете?

1. Функции обратного вызова (Callbacks).
function loadScript(src, callback) {
let script = document.createElement('script');
script.src = src;
script.onload = () => callback(script);
document.head.append(script);
}
Смысл такой: вторым аргументом передаётся функция (обычно анонимная), которая выполняется по завершении действия.

2. Промисы (Promises).
const promise1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('foo');
}, 300);
});

promise1.then((value) => {
console.log(value);
// expected output: "foo"
});
Promise представляет собой обертку для значения, неизвестного на момент создания промиса. Он позволяет обрабатывать результаты асинхронных операций так, как если бы они были синхронными: вместо конечного результата асинхронного метода возвращается обещание (промис) получить результат в некоторый момент в будущем.

3. Async/await.
 function resolveAfter2Seconds(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x);
}, 2000);
});
}

async function add1(x) {
const a = await resolveAfter2Seconds(20);
const b = await resolveAfter2Seconds(30);
return x + a + b;
}
После вызова функция async возвращает Promise.
Функция async может содержать выражение await, которое приостанавливает выполнение функции async и ожидает ответа от переданного Promise, затем возобновляя выполнение функции async и возвращая полученное значение.
В чем разница между методами Object.freeze и Object.seal?

Object.freeze() замораживает объект: это значит, что он предотвращает добавление новых свойств к объекту, удаление старых свойств из объекта и изменение существующих свойств или значения их атрибутов перечисляемости, настраиваемости и записываемости.

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

Разница заключается в том, что при использовании метода Object.freeze мы не можем менять или редактировать свойства объекта, а при использовании Object.seal у нас такая возможность имеется.