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

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

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

Канал в реестре РКН:
https://rknn.link/su
Download Telegram
Человеческий фактор. Успешные проекты и команды

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

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

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

Примеры:
 [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]
Чему равна ширина элемента div?
Anonymous Quiz
41%
70px
22%
74px
13%
80px
24%
84px
Что такое Type Assertions в TypeScript?

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

Есть две формы приведения. Первая форма заключается в использовании угловых скобок:

 let someAnyValue: any = "hello world!";
let strLength: number = (<string>someAnyValue).length;
console.log(strLength); // 12

 let someUnionValue: string | number = "hello work";
strLength = (<string>someUnionValue).length;
console.log(strLength); // 10

Вторая форма заключается в применении оператора as:
 let someAnyValue: any = "hello world!";
let strLength: number = (someAnyValue as string).length;
console.log(strLength); // 12

let someUnionValue: string | number = "hello work";
strLength = (someUnionValue as string).length;
console.log(strLength); // 10
🔥 Новости из Лектрума 🔥

16 февраля пройдёт открытый урок из интенсива «Профессиональный курс React + Redux с современными frontend-методиками».

Участие бесплатное, а для тех, кто хочет получить больше плюшек и профит 😎 есть тариф «Расширенный».

Открытый урок — отличная возможность познакомиться с библиотекой React, научиться работать с JSX, освоить технику создания новых компонентов с помощью React, познакомиться с организацией курса, преподавателем, позадавать свои вопросы и если всё понравится, то продолжить обучение.

Зачем откладывать получение нового навыка?! Время — деньги!

Для кого:

🔸 Начинающие разработчики, которые уже выучили JavaScript.

🔸 Разработчики, которые переходят на MERN-стек.

🔸 Фронтенд разработчики, которые работали или учили React на классах, а теперь нужно освоить новую версию.

Не теряйте время и проходите регистрацию через сайт ивента ⬇️

Ждём всех в онлайне!
Для чего предназначены интерфейсы в TypeScript?

Интерфейс определяет свойства и методы, которые объект должен реализовать. Интерфейсы определяются с помощью ключевого слова interface. Для начала определим простенький интерфейс:

 interface IUser {
id: number;
name: string;
}

Интерфейс в фигурных скобках определяет два свойства: id, которое имеет тип number, и name, которая представляет строку. Теперь используем его в программе:
 let employee: IUser = {
id: 1,
name: "Tom"
}
console.log("id: " + employee.id);
console.log("name: " + employee.name);
По сути employee - обычный объект за тем исключением, что он имеет тип IUser. Если правильнее говорить, то employee реализует интерфейс IUser. Причем эта реализация накладывает на employee некоторые ограничения. Так, employee должен реализовать все свойства и методы интерфейса IUser, поэтому при определении employee данный объект обязательно должен включать в себя свойства id и name.
Какой из перечисленных псевдоклассов не может быть использован для стилизации ссылки?
Anonymous Quiz
5%
:hover
17%
:link
67%
:checked
5%
:active
7%
:visited
Расскажите про тип Unknown в TypeScript.

Иногда в TypeScript хочется описать тип, не подходящий ни к чему. Это бывает полезно для API, который хочет просигнализировать: «здесь может быть любое значение, поэтому вы должны произвести некоторую проверку перед тем, как его использовать». И пользователи вынуждены анализировать возвращаемые значения в целях безопасности.

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

Если в приведенном выше примере подставить unknown вместо any, все случаи использования объекта foo приведут к ошибке: