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

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

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

Канал в реестре РКН:
https://rknn.link/su
Download Telegram
Какое значение НЕ соответствует CSS свойству display?
Anonymous Quiz
2%
none
4%
inline
60%
list-item
33%
static
1%
block
Какие преимущества и недостатки в использовании Ajax?

Преимущества
Повышение интерактивности. Новые данные с сервера могут быть добавлены динамически без перезагрузки всей страницы.

Сокращение количества подключений к серверу, поскольку скрипты и таблицы стилей нужно запрашивать только один раз.

Состояние может быть сохранено на странице. Переменные JavaScript и состояние DOM сохраняется, поскольку главная страница контейнера не перезагружается.

Недостатки
Сложнее реализовать добавление динамической веб-страницы в закладки.

Не работает, если в браузере отключен JavaScript.

Некоторые поисковые роботы не выполняют JavaScript и не видят данные, загружаемые при помощи JavaScript.
Объясните, как работает JSONP (и почему это не совсем AJAX)

JSONP (JSON с набивкой) - это способ, часто используемый для обхода политики ограничения домена в браузерах, потому что Ajax-запросы с текущей страницы к серверу, находящемуся в другом домене, запрещены.
JSONP работает, отправляя запрос к серверу в другом домене через тег <noscript> и обычно с параметром запроса callback, например: https://example.com?callback=printData. Затем сервер обернет данные внутри функции с именем printData и вернет их клиенту.
HTML:
 <noscript>
function printData(data) {
console.log(`My name is ${data.name}!`);
}
</noscript>
<noscript src="https://example.com?callback=printData"></noscript>
JS:
 // Файл загружен с https://example.com?callback=printData
printData({ name: 'Yang Shun' });
У клиента должна быть функция printData в своей глобальной области видимости, и эта функция будет выполнена клиентом, когда будет получен ответ с сервера из другого домена.
JSONP может быть небезопасным и иметь повышенный риск. Поскольку JSONP - это действительно JavaScript, и он может делать все остальное, что может делать JavaScript, то вы должны быть уверены в надежности поставщика данных JSONP.

В наши дни, CORS является рекомендуемым подходом и JSONP является способом для его обхода.
В чем разница между "атрибутом" (attribute) и "свойством" (property)?

Атрибуты определены в разметке HTML, а свойства определены в DOM. Чтобы проиллюстрировать разницу, представьте, что у нас есть это текстовое поле в HTML: <input type="text" value="Hello">.

 const input = document.querySelector('input');
console.log(input.getAttribute('value')); // Hello
console.log(input.value); // Hello

Но после того, как вы измените значение текстового поля, добавив к нему "World!", будет:
console.log(input.getAttribute('value')); // Hello
console.log(input.value); // Hello World!
Человеческий фактор. Успешные проекты и команды

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

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

Вам дан массив из чисел. Они идут в порядке возрастания, кроме одного числа, которая разрушает этот порядок. Найдите это число.

Примеры:
 [1,2,3,4,17,5,6,7,8] => 17 is the only breaker.
[19,27,33,34,112,578,116,170,800] => 578 is the only breaker.
Алгоритмы. Построение и анализ

В книге описаны самые разнообразные алгоритмы, сочетается широкий диапазон тем с глубиной и полнотой изложения; при этом изложение доступно для читателей самого разного уровня подготовки. Каждая глава книги относительно самодостаточна и может использоваться в качестве отдельной темы для изучения. Алгоритмы в книге "Алгоритмы. Построение и анализ" описаны простым человеческим языком и с применением псевдокода, который понятен любому, кто хоть в небольшой степени знаком с программированием, а пояснения принципов их работы даны без излишней математической строгости и требуют лишь элементарных знаний.
Что такое TypeScript? Для чего он нужен и какие проблемы решает?

Typenoscript — это скриптовый язык, компилируемый в JavaScript. Разработка Microsoft, которая, на сегодняшний день, успела завоевать и фанатов и недоброжелателей.

В TypeScript типизация статическая, что избавляет от множества проблем. Есть числовой тип, строковый, логический и другие. Возможно описывать и свои типы данных, например, с помощью enum

И в JS, и в TS есть поддержка объектно-ориентированного программирования: классы, объекты, наследование. Однако TypeScript шагнул чуть дальше и использует больше возможностей ОПП. В том числе, например, интерфейсы:
 interface IPost {
id: number;
text: string;
}

class Message implements IPost {
id: number;
text: string;
senderId: number;
recieverId: number;
}
Другой большой плюс — модификаторы доступа. Их в TypeScript три: public, private и protected.
class User {
//Приватные члены класса, которые недоступны извне
private id: number;
private login: number;
}

Также есть и другие возможности:
- определение полей в конструкторе;
- преобразование типов;
- абстрактные классы;
- обобщение и так далее.
Рассказать про следующие виды типизации, их особенности, плюсы и минусы:

слабая / сильная
Сильная типизация выделяется тем, что язык не позволяет смешивать в выражениях различные типы и не выполняет автоматические неявные преобразования, например нельзя вычесть из строки множество. Языки со слабой типизацией выполняют множество неявных преобразований автоматически, даже если может произойти потеря точности или преобразование неоднозначно.

статическая / динамическая
Статическая определяется тем, что конечные типы переменных и функций устанавливаются на этапе компиляции. Т.е. уже компилятор на 100% уверен, какой тип где находится. В динамической типизации все типы выясняются уже во время выполнения программы.

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

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

Создайте функцию, которая уберет дублирующие элементы в массиве и вернет этот массив.

Примеры:
distinct([1]) => [1]
distinct([1,2]) => [1, 2]
distinct([1,1,2]) => [1, 2]