Repository: FedorovAlexander/Front-end-Job-Interview-Questions Branch: master Commit: ebee47c05f3b Files: 128 Total size: 99.0 KB Directory structure: gitextract_9rh0t374/ ├── CSS/ │ ├── 1.md │ ├── 10.md │ ├── 11.md │ ├── 12.md │ ├── 13.md │ ├── 14.md │ ├── 15.md │ ├── 16.md │ ├── 17.md │ ├── 18.md │ ├── 19.md │ ├── 2.md │ ├── 20.md │ ├── 21.md │ ├── 22.md │ ├── 23.md │ ├── 24.md │ ├── 25.md │ ├── 26.md │ ├── 27.md │ ├── 28.md │ ├── 3.md │ ├── 4.md │ ├── 5.md │ ├── 6.md │ ├── 7.md │ ├── 8.md │ ├── 9.md │ └── README.md ├── Coding/ │ └── README.md ├── General/ │ ├── 1.md │ ├── 10.md │ ├── 11.md │ ├── 12.md │ ├── 13.md │ ├── 14.md │ ├── 15.md │ ├── 16.md │ ├── 2.md │ ├── 3.md │ ├── 4.md │ ├── 5.md │ ├── 6.md │ ├── 7.md │ ├── 8.md │ ├── 9.md │ └── README.md ├── HTML/ │ ├── 1.md │ ├── 10.md │ ├── 11.md │ ├── 2.md │ ├── 3.md │ ├── 4.md │ ├── 5.md │ ├── 6.md │ ├── 7.md │ ├── 8.md │ ├── 9.md │ └── README.md ├── JavaScript/ │ ├── 1.md │ ├── 10.md │ ├── 11.md │ ├── 12.md │ ├── 13.md │ ├── 14.md │ ├── 15.md │ ├── 16.md │ ├── 17.md │ ├── 18.md │ ├── 19.md │ ├── 2.md │ ├── 20.md │ ├── 21.md │ ├── 22.md │ ├── 23.md │ ├── 24.md │ ├── 25.md │ ├── 26.md │ ├── 27.md │ ├── 28.md │ ├── 29.md │ ├── 3.md │ ├── 30.md │ ├── 31.md │ ├── 32.md │ ├── 33.md │ ├── 34.md │ ├── 35.md │ ├── 36.md │ ├── 37.md │ ├── 38.md │ ├── 39.md │ ├── 4.md │ ├── 40.md │ ├── 41.md │ ├── 42.md │ ├── 43.md │ ├── 44.md │ ├── 45.md │ ├── 46.md │ ├── 47.md │ ├── 48.md │ ├── 49.md │ ├── 5.md │ ├── 50.md │ ├── 51.md │ ├── 52.md │ ├── 6.md │ ├── 7.md │ ├── 8.md │ ├── 9.md │ └── README.md ├── Network/ │ ├── 1.md │ ├── 2.md │ ├── 3.md │ ├── 4.md │ ├── 5.md │ └── README.md ├── Performance/ │ ├── 1.md │ ├── 2.md │ ├── 3.md │ └── README.md ├── README.md ├── Testing/ │ ├── 1.md │ ├── 2.md │ ├── 3.md │ └── README.md └── _config.yml ================================================ FILE CONTENTS ================================================ ================================================ FILE: CSS/1.md ================================================ ### Что такое специфичность CSS-селекторов и как она работает? В следующем списке типы селекторов расположены по возрастанию специфичности: 0. Селекторы типов элементов (например, `h1`) и псевдоэлементов (например, `::before`) 1. Селекторы классов (например, `.example`), селекторы атрибутов (например, `[type="radio"]`) и псевдоклассов (например, `:hover`) 2. Селекторы идентификаторов (например, `#example`) Универсальный селектор (`*`), комбинаторы (`+`, `>`, `~`, `' '`) и отрицающий псевдокласс (`:not()`) не влияют на специфичность. (Однако селекторы, объявленные внутри `:not()`, влияют) Стили, объявленные в элементе (например, `style="font-weight:bold"`), всегда переопределяют любые правила из внешних файлов стилей и, таким образом, их специфичность можно считать наивысшей. **Расчёт специфичности** - Тег и псевдоэлемент имеют специфичность 0001 - Класс, псевдокласс, атрибут - 0010 - ID имеет специфичность 0100 - Инлайновый стиль имеет приоритет 1000 ---
================================================ FILE: CSS/10.md ================================================ ### Использовали ли вы систему сеток, и если да, то какую вы предпочитаете? Использовал сетку Bootstrap, Material UI, CSS grid, Tailwind, а также самодельные кастомные сетки. Предпочитаю Tailwind. --- ================================================ FILE: CSS/11.md ================================================ ### Приходилось ли вам использовать или реализовывать медиазапросы или вёрстку под мобильные устройства? Да, приходилось. Доля использования мобильных устройств при выходе в интернет увеличивается с каждым годом. В наше время сайт должен быть адаптивным. В своей работе для реализации адаптивности я использовал сетку Bootstrap, а также медиа выражения. --- ================================================ FILE: CSS/12.md ================================================ ### Вы знакомы со стилизацией SVG? Стилизация SVG отличается от стилизации HTML. SVG основан на XML и стилевые свойства отличаются по названию. Fill вместо background-color, stroke вместо border и т.д. Изображение в формате SVG можно стилизоввать в SVG-разметке, а также в CSS файлах. Если вы используете SVG-спрайты, то стилизовать svg можно только в разметке. Также не получится динамически изменить свойства SVG js-ом. --- ================================================ FILE: CSS/13.md ================================================ ### Можете ли вы привести пример свойства `@media`, отличного от screen? Медиа запросы поволяют адаптировать страницу для различных типов устройств, таких как: принтеры, речевые браузеры, устройства Брайля, телевизоры и так далее. 1. **all** - Подходит для всех устройств. 2. **print** - Для принтеров. 3. **screen** - Предназначен в первую очередь для цветных компьютерных экранов. 4. **speech** - Предназначен для синтезаторов речи. --- ================================================ FILE: CSS/14.md ================================================ ### На что нужно обратить внимание при написании эффективного CSS? Для написания эффективного CSS должна быть система. **БЭМ**, **RSCSS**, **OOCSS** - кому что больше подходит. Я использую БЭМ. У каждого элемента уникальный класс, все элементы имеют одинаковую специфичность. Код можно переиспользовать. --- ================================================ FILE: CSS/15.md ================================================ ### Какие преимущества/недостатки в использовании CSS препроцессоров? Опишите, что вам нравится и не нравится в CSS препроцессорах, которыми вы пользовались. **Преимущества:** - Вложенность. Удобно писать по БЭМу. - Переменные. - Миксины. **Недостатки:** - Можно увлечься и начать "программировать на CSS". Код становится сложно понять и поддерживать другим разработчикам. --- ================================================ FILE: CSS/16.md ================================================ ### Как вы реализуете макет, который использует нестандартные шрифты? Буду подключать шрифты с помощью `@font-face` для каждого `font-weight`. --- ================================================ FILE: CSS/17.md ================================================ ### Объясните, как браузер определяет, на какие элементы накладывать CSS стили? Браузер сравнивает селекторы справа налево. Браузер находит все элементы DOM, соответствующие ключевому (самому правому) селектору. Дальше проходит до его родителя и ищет соответствия. Чем короче цепь селекторов, тем быстрее браузер найдет элемент. --- ================================================ FILE: CSS/18.md ================================================ ### Объясните, что такое псевдоэлементы и для чего они нужны. Псевдоэлемент - это ключевое слово, добавляемое к селектору, которое позводяет стилизовать определенную часть выбранного элемента. Они могут использоваться для украшения (`:first-line`, `:first-letter`) или для добавления элементов к разметке (вместе c `content: ...`) без изменения HTML. --- ================================================ FILE: CSS/19.md ================================================ ### Объясните своими словами, что такое блочная модель. Блочная модель отвечает за определение того, сколько места займет блочный элемент, схлопнутся или нет border или margin, размеры блока. Правила блочной модели: - Размеры блочного элемента складываются из `width`, `height`, `padding`, `border`, and `margin`. - Если высота (height) блока не задана, то высота блока равна: высота контента этого блока + padding'и. - Если ширина блока не задана, то блоки, для которых не задано float, будут иметь ширину: ширина родителя - padding'и родителя. --- ================================================ FILE: CSS/2.md ================================================ ### В чем разница между «сбросом» и «нормализацией» CSS? Что бы вы выбрали и почему? **CSS Reset**: - Удаляет все встроенные стили браузера - Более агрессивный подход - Требует переопределения общих стилей - Примеры: Eric Meyer's Reset, Universal Reset **CSS Normalize**: - Сохраняет полезные стили по умолчанию - Исправляет баги и несоответствия между браузерами - Улучшает юзабилити - Более современный подход - Проще поддерживать Я бы выбрал Normalize.css, потому что: 1. Сохраняет полезные стили браузера по умолчанию 2. Обеспечивает лучшую кроссбраузерность 3. Требует меньше переопределений стилей 4. Активно поддерживается сообществом --- ================================================ FILE: CSS/20.md ================================================ ### Что делает `* { box-sizing: border-box; }`? В чём его преимущества? По умолчанию все элементы имеют box-sizing: content-box. Размеры блока рассчитываются из размеров контента. box-sizing: border-box меняет то, как расчитываются width и height. Border и padding включаются в расчёт. Высота будет состоять из: высота контента + вертикальные padding'и + ширина вертикальных border. Ширина будет состоять из: ширина контента + горизонтальные padding'и + ширина горизонтальных border. --- ================================================ FILE: CSS/21.md ================================================ ### Что означает свойство display и можете ли вы привести несколько примеров его использования? Многоцелевое свойство, которое определяет, как элемент должен быть показан в документе. `none`, `block`, `inline`, `inline-block`, `table`, `table-row`, `table-cell`, `list-item`, `flex`, `grid`. --- ================================================ FILE: CSS/22.md ================================================ ### В чём разница между строчным и блочно-строчным элементом? Для лучшего сравнения я добавил блочный элемент. **block** - Начинается с новой строки родительского элемента и занимает всю строку. - Можно задавать ширину и высоту. - Можно выровнять с помощью `vertical-align`. - Margins и paddings работают со всех сторон. **inline-block** - Размер зависит от контента. - Можно задавать ширину и высоту. - Можно выровнять с помощью `vertical-align`. - Margins и paddings работают со всех сторон. **inline** - Размер зависит от контента. - Ширину и высоту задавать нельзя. - Можно выровнять только по горизонтали. Место, которое занимает элемент по вертикали, зависит от line-height. - Ведёт себя как блочный элемент, если задать вертикальные margins и paddings. ### Какие преимущества в использовании препроцессоров CSS? Препроцессоры CSS добавляют некоторую дополнительную функциональность, которая улучшает CSS файлы и делает их более поддерживаемыми. Вот несколько преимуществ: - Переменные - Вложенность - Операторы - Миксины - Наследование - Функции --- ================================================ FILE: CSS/23.md ================================================ ### В чём разница между относительным, фиксированным, абсолютным и статически позиционированным элементом? - **static** - значение по умолчанию. Свойства top, right, bottom, left и z-index не применяются. - **relative** - элемент выстраивается относительно самому себе без изменения разметки. - **absolute** - элемент выдёргивается из потока и выстраивается относительно ближайшего элемента-предка с position: relative. Если его нет, то относительно body. Абсолютно спозиционированные элементы могут иметь margin и padding и не схлопываются с margin и padding других элементов. Никак не влияют на другие элементы. - **fixed** - элемент выдёргивается из потока и остаётся на позиции относительно окна документа и не меняет положение при скроле. - **sticky** - смесь relative и fixed. Элемент ведёт себя как относительно спозиционированный, пока не достигнет заданной позиции, после которой ведёт себя как fixed элемент. --- ================================================ FILE: CSS/24.md ================================================ ### Какими CSS-фреймворками вы пользовались? Что бы вы хотели в них изменить/улучшить? Использовал Bootstrap. CSS-фреймворки накладывают ограничения и добавляют работы по переопределению дефолтных свойств элементов. Если нет чётких требований использования фреймворков, стараюсь их избегать. --- ================================================ FILE: CSS/25.md ================================================ ### Пользовались ли вы Flexbox или Grid? Да. Использую flexbox, когда не нужно поддерживать Internet Explorer ниже 11 версии. У grid всё ещё не такая широкая поддержка браузеров. --- ================================================ FILE: CSS/26.md ================================================ ### Можете ли вы объяснить разницу между отзывчивым (responsive) сайтом и сайтом, сделанным по принципу mobile-first? Отзывчивая и mobile-first верстки служат для того, чтобы пользователь мог пользоваться сайтом с разных устройств. Верстка подстраивается под различные размеры экрана, разрешения, контекст использования, механизмы контроля и т.д. **Отзывчивая верстка** начинается с верстки десктопной версии сайта. Затем она адаптируется для меньших экранов. **Mobile-first** начинается с верстки версии сайта для мобильных устройств. --- ================================================ FILE: CSS/27.md ================================================ ### Вы имеете опыт работы с ретиновой графикой? Если да, то какие методы вы использовали? - Для иконок использовал SVG. --- ================================================ FILE: CSS/28.md ================================================ ### В каком случае вы предпочтёте использовать `translate()` вместо абсолютного позиционирования и наоборот? И почему? Для анимации лучше использовать CSS анимацию. Браузер хорошо ее оптимизирует. У translate() большая частота кадров за счет более быстрого рендеринга. Анимация с помощью абсолютного позиционирования для движения использует пиксельную сетку, поэтому могут наблюдаться скачки. Translate() же использует субпиксельную интерполяцию. --- ================================================ FILE: CSS/3.md ================================================ ### Объясните, что такое плавающие элементы (floats) и как они работают? Float - это свойство CSS, которое позволяет элементу "плавать" влево или вправо от своего контейнера, позволяя тексту и инлайновым элементам обтекать его. **Основные значения**: - `float: left` - элемент плавает влево - `float: right` - элемент плавает вправо - `float: none` - элемент не плавает (по умолчанию) **Очистка float**: 1. `clear: both/left/right` - на следующем элементе 2. Clearfix hack на родителе: ```css .clearfix::after { content: ''; display: table; clear: both; } ``` 3. `overflow: hidden/auto` на родителе **Современные альтернативы**: - Flexbox - Grid - Multi-column layout Рекомендуется использовать современные методы вёрстки (Flexbox/Grid) вместо float, кроме случаев, когда нужно именно обтекание текстом. --- ================================================ FILE: CSS/4.md ================================================ ### Опишите z-index и как формируется контекст наложения. Z-index управляет вертикальным положением элементов на странице (по оси Z). Работает только с позиционированными элементами (position: relative/absolute/fixed/sticky). **Контекст наложения**: - Корневой элемент (``) создает контекст наложения - Позиционированные элементы с z-index ≠ auto создают новый контекст - Элементы с opacity < 1 - Элементы с transform, filter, perspective, clip-path, mask - Элементы с will-change - Элементы с isolation: isolate **Правила наложения** (от нижнего к верхнему): 1. Корневой элемент 2. Позиционированные элементы с отрицательным z-index 3. Непозиционированные элементы 4. Позиционированные элементы с z-index: auto 5. Позиционированные элементы с положительным z-index Пример: ```css .parent { position: relative; z-index: 1; } .child { position: absolute; z-index: 2; /* Будет выше родителя только внутри его контекста */ } ``` **Важно помнить**: - Z-index работает только между элементами одного контекста наложения - Дочерние элементы не могут быть ниже фона родителя - Значение z-index может быть только целым числом --- ================================================ FILE: CSS/5.md ================================================ ### Объясните, что такое блочный контекст форматирования и как он работает. **Блочный контекст форматирования** — часть механизма отображения веб-страницы в CSS. Это регион страницы, в котором блоки размещаются в привычном для блоков порядке, и в котором плавающие элементы взаимодействуют с другими элементами. Блочный контекст форматирования может быть создан чем-либо из этого списка: - корневой элемент или что-то, что содержит его - плавающие элементы (элементы, у которых float не равно none) - абсолютно позиционированные элементы (элементы, значение position которых либо absolute, либо fixed) - «строчные блоки» (элементы с display: inline-block) - ячейки таблицы (элементы с display: table-cell, являющимся значением по умолчанию для ячеек таблицы в HTML) - заголовки таблицы (элементы с display: table-caption, являющимся значением по умолчанию для заголовков таблицы в HTML) - анонимные ячейки таблицы, неявно создаваемые элементами с display: table, table-row, table-row-group, table-header-group, table-footer-group (значения по умолчанию для таблиц, строк таблиц, «шапок», «подвалов» и тел таблиц в HTML соответственно) либо inline-table - элементы, у которых значение свойства overflow отличается от visible - флекс-элементы (непосредственные потомки элемента с display: flex или inline-flex) - грид-элементы (непосредственные потомки элемента с display: grid или inline-grid) многоколоночные контейнеры (элементы, у которых column-count или column-width не равно auto, включая элементы с column-count: 1) - column-span: all должно всегда создавать блочный контекст форматирования, даже если элемент с column-span: all не находится в многоколоночном контейнере (изменение в спецификации, баг Chrome). --- ================================================ FILE: CSS/6.md ================================================ ### Какие вы знаете методы запрета обтекания (clearing) и в каких случаях они применяются? **Clear** устанавливает, с какой стороны элемента запрещено его обтекание другими элементами. Если задано обтекание элемента с помощью свойства float, то clear отменяет его действие для указанных сторон. **Значения** **none** - отменяет действие свойства clear, при этом обтекание элемента происходит, как задано с помощью свойства float или других настроек. **both** - отменяет обтекание элемента одновременно с правого и левого края. Это значение рекомендуется устанавливать, когда требуется снять обтекание элемента, но неизвестно точно, с какой стороны. **left** - отменяет обтекание с левого края элемента. При этом все другие элементы на этой стороне будут опущены вниз, и располагаться под текущим элементом. **right** - отменяет обтекание с правой стороны элемента. **inherit** - устанавливает значение родителя. --- ================================================ FILE: CSS/7.md ================================================ ### Как вы решаете стилевые проблемы, связанные с особенностями браузеров? - Использую normalize или reset CSS - Использую autoprefixer --- ================================================ FILE: CSS/8.md ================================================ ### Как вы обеспечиваете отображение страниц в браузерах с ограниченными возможностями? Какие приёмы/процессы вы при этом используете? - Использую autoprefixer - [«Graceful degradation»](../General/5.md) - [«Progressive enhancement»](../General/5.md) --- ================================================ FILE: CSS/9.md ================================================ ### Какими способами можно визуально скрыть элемент (оставив его доступным только для скринридера)? - visibility: hidden - width: 0px; height: 0px; --- ================================================ FILE: CSS/README.md ================================================ ## Вопросы по CSS * [Что такое специфичность CSS-селекторов и как она работает?](1.md) * [В чем разница между «сбросом» и «нормализацией» CSS? Что бы вы выбрали и почему?](2.md) * [Объясните, что такое плавающие элементы (floats) и как они работают.](3.md) * [Объясните, что такое z-index и как формируется контекст наложения.](4.md) * [Объясните, что такое блочный контекст форматирования и как он работает.](5.md) * [Какие вы знаете методы запрета обтекания (clearing) и в каких случаях они применяются?](6.md) * [Как вы решаете стилевые проблемы, связанные с особенностями браузеров?](7.md) * [Как вы обеспечиваете отображение страниц в браузерах с ограниченными возможностями? Какие приёмы/процессы вы при этом используете?](8.md) * [Какими способами можно визуально скрыть элемент (оставив его доступным только для скринридера)?](9.md) * [Использовали ли вы систему сеток, и если да, то какую вы предпочитаете?](10.md) * [Приходилось ли вам использовать или реализовывать медиазапросы или вёрстку под мобильные устройства?](11.md) * [Вы знакомы со стилизацией SVG?](12.md) * [Можете ли вы привести пример свойства `@media`, отличного от screen?](13.md) * [На что нужно обратить внимание при написании эффективного CSS?](14.md) * [Какие преимущества/недостатки в использовании CSS препроцессоров? Опишите, что вам нравится и не нравится в CSS препроцессорах, которыми вы пользовались.](15.md) * [Как вы реализуете макет, который использует нестандартные шрифты?](16.md) * [Объясните, как браузер определяет, на какие элементы накладывать CSS стили?](17.md) * [Объясните, что такое псевдоэлементы и для чего они нужны.](18.md) * [Объясните своими словами, что такое блочная модель.](19.md) * [Что делает `* { box-sizing: border-box; }`? В чем его преимущества?](20.md) * [Что означает свойство display и можете ли вы привести несколько примеров его использования?](21.md) * [В чем разница между строчным и блочно-строчным элементом?](22.md) * [В чем разница между относительным, фиксированным, абсолютным и статически позиционированным элементом?](23.md) * [Какими CSS-фреймворками вы пользовались? Что бы вы хотели в них изменить/улучшить?](24.md) * [Пользовались ли вы Flexbox или Grid?](25.md) * [Можете ли вы объяснить разницу между отзывчивым (responsive) сайтом и сайтом, сделанным по принципу mobile-first»](26.md) * [Вы имеете опыт работы с ретиновой графикой? Если да, то какие методы вы использовали?](27.md) * [В каком случае вы предпочтёте использовать `translate()` вместо абсолютного позиционирования и наоборот? И почему»](28.md) ================================================ FILE: Coding/README.md ================================================ ## Примеры кода на JavaScript Вопрос: Какое значение будет у foo? ~~~~javascript var foo = 10 + '20'; ~~~~ Ответ: '1020'. Приведение типов преобразует 10 в строку и сложит 2 строки. Вопрос: Что будет выведено в консоль? ~~~~javascript console.log(0.1 + 0.2 == 0.3); ~~~~ Ответ: false. Из-за плавающей точки результатом вычисления будет 0.30000000000000004. Чтобы справится с этой проблемой нужно округлять числа до десятков. Вопрос: Как сделать так, чтобы приведенный ниже код работал? ~~~~javascript add(2, 5); // 7 add(2)(5); // 7 ~~~~ Ответ: ~~~~javascript function add(a, b) { return a && b ? a + b : function (c) { return a + c; }; } ~~~~ Вопрос: Какое значение будет возращено? ~~~~javascript "i'm a lasagna hog".split("").reverse().join(""); ~~~~ Ответ: `'goh angasal a m\'i'` Вопрос: Какое значение будет у window.foo? ~~~~javascript ( window.foo || ( window.foo = "bar" ) ); ~~~~ Ответ: 'bar' Вопрос: Какой будет результат приведенного ниже кода? ~~~~javascript var foo = "Hello"; (function() { var bar = " World"; alert(foo + bar); })(); alert(foo + bar); ~~~~ Ответ: 1. `Hello World` из функции. 2. `ReferenceError: bar is not defined` т.к переменная `bar` бар определена в области видимости функции и не видна за ее пределами. Вопрос: Чему равно foo.length? ~~~~javascript var foo = []; foo.push(1); foo.push(2); ~~~~ Ответ: 2; Вопрос: Чему равно foo.x? ~~~~javascript var foo = {n: 1}; var bar = foo; foo.x = foo = {n: 2}; ~~~~ Ответ: `undefined`. `foo.x = foo = {n: 2}` то же, что и `foo.x = (foo = {n: 2})`. `foo` на которую ссылается `foo.x` "устанавливается" перед тем, как `foo` изменится. `foo.x` ссылается на старое значение `foo`. Это значит, что в старом `foo` появится новое свойство `x` равное `{n: 2}`. А в новое `foo` запишется `{n: 2}`. Значение старого `foo` находится в `bar`. ~~~~javascript { n: 1, x: { n: 2 } } ~~~~ Так как при дальнейшем выводе `foo.x` наше `foo` ссылается на его новое значение, в котором отстутствует `x`, то `foo.x` будет неопределено. Вопрос: Что будет выведено в консоль? ~~~~javascript console.log('one'); setTimeout(function() { console.log('two'); }, 0); Promise.resolve().then(function() { console.log('three'); }) console.log('four'); ~~~~ Ответ: 'one', 'four', 'three', 'two'. `setTimeout` часть основной очереди (main task queue), тогда как `Promise` в miscro task queue, которая выполняется перед основной. Поэтому сначала выведентся 'three', а потом 'two'. ================================================ FILE: General/1.md ================================================ ### Какие методы для повышения производительности вы использовали при создании или обслуживании сайта? 1. async и defer **async** - для всех внешних скиптов, которым не нужно знать о HTML (google analytics, tracking scripts). Загружается вместе с html, после своей загрузки приостанавливает загрузку html, выполняется. Затем возобновляется загрузка html. **defer** - для внешних скриптов, которые не очень важны Загружается вместе с html, ждет пока html загрузится до конца. Потом выполняется. 2. Оптимизация изображений. 3. Конкатенация и углификация файлов. 4. Инлайновый CSS. Стили вставляются инлайном в HTML. --- ================================================ FILE: General/10.md ================================================ ### Опишите, как бы вы реализовали примитивное слайд-шоу. **HTML** ```html ``` **CSS** ```css html, body, .slide-page { width: 100%; height: 100%; } .slide-page { position: fixed; top: 0; left: 0; display: none; } .slide-page:first-child { display: block; } ``` **JS** ```javascript window.addEventListener('click', () => { document.querySelector('.slide-page').remove(); }); ``` --- ================================================ FILE: General/11.md ================================================ ### Если бы у вас была возможность освоить новую технологию в этом году, что бы это было? **Node.js** Потому что с Node.js можно разрабатывать серверные приложения на JavaScript. --- ================================================ FILE: General/12.md ================================================ ### Объясните важность стандартов и комитетов по стандартам. Использование стандартов автоматически делает страницу кроссбраузерной и кроссплатформенной. Благодаря стандартам сеть стабильна, несмотря на постоянное появление новых технологий. Сокращается время на отладку и устранение неполадок. --- ================================================ FILE: General/13.md ================================================ ### Что такое FOUC (Flash Of Unstyled Content)? Как его избежать? FOUC (Flash Of Unstyled Content) - это появление неоформленного контента при загрузке. Избежать его можно путём вставки критичного CSS в тег ``. Критичный CSS — это минимальный набор блокирующего CSS, требуемого для рендеринга первого экрана с контентом пользователю. --- ================================================ FILE: General/14.md ================================================ ### Объясните, что такое ARIA и скринридеры, а также как сделать сайт доступным. **WAI-ARIA** - технологический стандарт для предоставления возможности полноценного использования интернета людьми с ограниченными возможностями (нарушениями работы орагнов зрения и опорно-двигательного аппарата). **Скринридер** - программа позволяющая определять и интерпретировать (обычно в виде звуковых и/или голосовых) оповещений события происходящие на экране, например: 1. читать вслух текст который сейчас выбран пользователем 2. читать вслух название выбранной пользователем графической кнопки 3. зачитывать тексты "всплывающих окон" системных уведомлений **Способы сделать сайт доступным** - Масштабируемая верстка (изменение шрифта) - Контрастность цвета фона и текста - Возможность работы сервиса с клавиатуры **WAI-ARIA предоставляет разработчикам следующее:** - Роли для описания типа элемента управления, такие как menu, treeitem, slider[en], progressbar. - Роли для описания структуры веб-страницы (заголовки, секции, таблицы и т. д.). - Свойства для описания состояний элементов управления. - Свойства для обозначения блоков страницы, содержание которых может обновляться. - Свойства для перетаскивания объектов, обозначающие что нужно переместить и куда. - Возможность описания навигации по сайту при помощи клавиатуры. --- ================================================ FILE: General/15.md ================================================ ### Какие преимущества и недостатки у CSS и JavaScript анимаций? **CSS** **Плюсы** - Простота **Минусы** - Ограниченные возможности **JS** **Плюсы** - Позволяет полностью контролировать анимацию. Рекомендуется выбрать одну из множества JS-библиотек. **Минусы** - Сложность --- ================================================ FILE: General/16.md ================================================ ### Что означает CORS и какую проблему решает? **Cross-origin resource sharing (CORS)** предоставляет веб-серверам возможность контролировать междоменные запросы и позволяет производить безопасный обмен данными между разными доменами. --- ================================================ FILE: General/2.md ================================================ ### Можете ли вы описать некоторые методы SEO, которые вы использовали в последнее время? Можно рассказать про: - Уникальные теги `
`. Вот пример: `srcset="image.jpg 160w, image2.jpg 320w, image3.jpg 2x`.
---
================================================
FILE: HTML/11.md
================================================
### Приходилось ли вам работать с языками HTML-шаблонизации?
Да. Pug, Haml, Handlebars, Smarty.
### Что такое элемент output в HTML5?
Элемент `