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

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

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

Канал в реестре РКН:
https://rknn.link/su
Download Telegram
Расчеты символьных кодов

Вам дана строка символов. Переведите каждый символ в ASCII код, затем объедините полученные коды в число
'ABC' --> 'A' = 65, 'B' = 66, 'C' = 67 --> 656667
//назовем полученное число total1

Замените все встречающиеся числа 7 на числа 1
//назовем полученное число total2
total1 = 656667
^
total2 = 656661

Верните разницу между total1 и total2
(6 + 5 + 6 + 6 + 6 + 7)
- (6 + 5 + 6 + 6 + 6 + 1)
-------------------------
6
Программист-прагматик

Издание полно как технических, так и профессиональных практических советов, которые помогли мне во многих проектах, а также помогли мне стать лучше как разработчику.

Книга очень актуальна даже в 2020 году, особенно последнее издание. Здесь автор анализирует, что значит быть современным разработчиком, исследуются различные темы: от личной ответственности и карьерного роста до архитектурных приемов.

Прочитав книгу, вы поймете, что такое непрерывное обучение и насколько оно важно; изучите, как писать гибкий, адаптируемый и динамический код, как решать проблемы конкурентности, как стоять на страже безопасности, как тестировать “безжалостно и эффективно”, и многое другое.
Что такое объектная обертка (Wrapper Objects)?

Примитивы строка, число и boolean имеют свойства и методы, несмотря на то, что они не являются объектами:

 let name = 'marko'

console.log(typeof name) // string
console.log(name.toUpperCase()) // MARKO

Name — это строка (примитивный тип), у которого нет свойств и методов, но когда мы вызываем метод toUpperCase(), это приводит не к ошибке, а к «MARKO».

Причина такого поведения заключается в том, что name временно преобразуется в объект. У каждого примитива, кроме null и undefined, есть объект-обертка. Такими объектами являются String, Number, Boolean, Symbol и BigInt. В нашем случае код принимает следующий вид:

 console.log(new String(name).toUpperCase()) // MARKO

Временный объект отбрасывается по завершении работы со свойством или методом.
Javanoscript - наш кормилец

Пошаговый план чтобы стать Фулстеком и получать от 80тр, прогая только на JS:

👉 Учим верстку и JS до продвинутого уровня

👉 Учим особенности Node.js

👉 Выбираем фреймворк (React / Angular / Vue)

👉 Пробегаемся по общими штукам (Git / Photoshop / Figma / Английский для IT)

💵 Трудоустраиваемся

Курс Fullstack-разработчик на JavaScript всё это включает, и пройти его можно со скидкой 60%
Какое значение примет result?
Anonymous Quiz
64%
false
22%
true
14%
undefined
В чем разница между явным и неявным преобразованием или приведением к типу (Implicit and Explicit Coercion)?

Неявное преобразование — это способ приведения значения к другому типу без нашего ведома (участия).

Предположим, у нас есть следующее:

 console.log(1 + '6')
console.log(false + true)
console.log(6 * '2')

Результатом первого console.log будет 16. В других языках это привело бы к ошибке, но в JS 1 конвертируется в строку и конкатенируется (присоединяется) c 6. Мы ничего не делали, преобразование произошло автоматически.

Результатом второго console.log будет 1. False было преобразовано в 0, true — в 1. 0 + 1 = 1.

Результатом третьего console.log будет 12. Строка 2 была преобразована в число перед умножением на 6.

Явное преобразование предполагает наше участие в приведении значения к другому типу:

 console.log(1 + parseInt('6'))

В этом примере мы используем parseInt для приведения строки 6 к числу, затем складываем два числа и получаем 7.
Создание номера

Вам дан массив из 10 целых чисел (от 0 до 9). Напишите функцию, которая вернет строку из этих чисел в формате номера телефона.

Пример:
createPhoneNumber([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]) // => returns "(123) 456-7890"
Какое изначальное значение у CSS свойства vertical-align?
Anonymous Quiz
34%
normal
9%
middle
36%
baseline
4%
bottom
17%
top
Что такое NaN? Как проверить, является ли значение NaN?

NaN или Not A Number (не число) — это значение, получаемое в результате выполнения числовой операции над нечисловым значением:

 let a

console.log(parseInt('abc'))
console.log(parseInt(null))
console.log(parseInt(undefined))
console.log(parseInt(++a))
console.log(parseInt({} * 10))
console.log(parseInt('abc' - 2))
console.log(parseInt(0 / 0))
console.log(parseInt('10a' * 10))

В JS есть встроенный метод isNaN, позволяющий проверять, является ли значение NaN, но он ведет себя довольно странно:

 console.log(isNaN()) // true
console.log(isNaN(undefined)) // true
console.log(isNaN({})) // true
console.log(isNaN(String('a'))) // true
console.log(isNaN(() => { })) // true

Результатом всех console.log является true, несмотря на то, что ни одно из значений не является NaN.

ES6 для проверки, является ли значение NaN, рекомендует использовать метод Number.isNaN. Мы также можем написать вспомогательную функцию для решения проблемы «неравенства NaN самому себе»:

function checkIsNan(value){
return value !== value
}
Как проверить, является ли значение массивом?

Для этого следует использовать метод Array.isArray:

 console.log(Array.isArray(5)) // false
console.log(Array.isArray('')) // false
console.log(Array.isArray()) // false
console.log(Array.isArray(null)) // false
console.log(Array.isArray( {length: 5 })) // false
console.log(Array.isArray([])) // true

Если среда, в которой Вы работаете, не поддерживает данный метод, можете использовать такой полифил:

function isArray(value){
return Object.prototype.toString.call(value) === '[object Array]'
}
Каково значение свойства height у элемента div?
Anonymous Quiz
60%
100px
23%
200px
17%
100% viewport
Почему в представленном коде переменная b становится глобальной при вызове функции?

function myFunc(){
let a = b = 0
}
myFunc()

Так происходит, потому что оператор присваивания ("=") имеет правостороннюю ассоциативность, т.е. присваивает значения справа налево. Поэтому код принимает следующий вид:
 myFunc(){
let a = (b = 0)
}
myFunc()

Сначала значение 0 присваивается переменной «b», которая не объявлена. Движок JS делает ее глобальной. Возвращаемое выражением b = 0 значение (0) затем присваивается локальной переменной «a».

Эту проблему можно решить сначала объявив локальные переменные, а затем присвоив им значения:

function myFunc(){
let a, b
a = b = 0
}
myFunc()
Какое значение примет result?
Anonymous Quiz
13%
false
19%
262
27%
true
41%
2009
Программирование приложений на JavaScript

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