Web (HTML, CSS, сети) Flashcards
Разница между протоколами TCP и UDP?
TCP гарантирует доставку данных, но медленнее чем UDP. UDP может применяться, например, в потоковом аудио и видео.
Методы простой оптимизации загрузки сайтов и JS приложений (производительность)
- Использование
async
иdefer
. - Оптимизация изображений - использование svg, сжатие и сам размер изображений.
- Конкатенация и углификация файлов.
- Инлайн стили (например критический CSS)
Анализ производительности (какие есть метрики)
- Скоростные метрики:
TTFB - время до получения первого байта (вычисления на сервере + сеть)
FCP - время до того как на экране появится хоть что-нибудь
LCP - время до того, как на экране появится полезный контент
- Полный вес сайта
- Пользовательские метрики:
Показатель отказов - процент покинувших сайт со страницы входа или посмотревших не более 1 страницы.
Конверсия - полезное действие.
XSS - как провести атаку, как защититься
Атака:
Исполнение вредоносного JS-кода на сайте не предусмотренным способом. Например через ввод каких-то данных, которые отображаются на сайте: строка поиска, комментарий, параметры поиска в адресной строке. Получение таким способом конфиденциальных данных, например токены авторизации, авторизационные куки, логин-пароли.
Защита:
Экранирование полученный от пользователя данных, валидация ввода, httponly cookies.
GraphQL (знать, что это)
Язык запросов. Позволяет получать данные по конкретному запросу, как в SQL, а не целыми “пластами”, ограничиваясь только предоставленными нам эндпоинтами, как в REST.
Git Flow
Методика работы с гит. В ней создаётся отдельная ветка для разработки, а от неё создаются ветки для фич. После того как фича готова делается запрос на слияние. Код перед слиянием проходит ревью.
Что такое кросс-браузерность?
Какие инструменты используются для этого?
Одинаковая работа сайта (и его визуальная составляющая) во всех браузерах (в том числе мобильных).
Инструменты:
* префиксы
* обнуление или нормализация
* полифилы
Из чего состоит запрос HTTP?
- Стартовая строка: метод, URN и версия протокола.
- Заголовки: параметры запроса. Тут же указывается заголовок
Host
. - Тело запроса: состав сообщения, которое отправляется.
Какие методы есть в HTTP?
Основные: GET (получение), POST (отправка), PUT (замена, обновление), DELETE (удаление), PATCH (частичное обновление)
Чем HTTP отличается от HTTPS?
HTTPS - с шифрованием. В нём участвуют сертификаты, которые должны быть подтверждены центром сертификации и обмен ключами по принципу “рукопожатия” (handshake, TSL, SSL).
Что такое SSL и TLS? Зачем они используются в веб-разработке?
Это протоколы шифрования. Используются для:
- защита передаваемых данных от несанкционированного доступа
- аутентификация сервера сертификатом - позволяет предотвратить подмену сервера
- предотвращает подделку данных
Как работает DNS?
Есть дерево серверов, где каждый отвечает за свою зону. При поиске адреса через DNS сначала идёт обращение к корневому серверу, который переадресует запрос далее, например в ru регион, тот далее, например к серверу yandex.
В целом есть два типа серверов. Те кто перенаправляют тебя к тому кто знает ответ и те, кто сами получают ответ и затем возвращаются с ним.
Что такое REST?
Архитектурный подход для создания API
.
API
, полностью соответствующий правилам будет RESTful
.
- Клиент-сервер
- Отсутствие состояния
- Кэширование
- Единообразие интерфейса
- Основан на ресурсах
- Манипуляция над ресурсами через представления (клиент представляет как должно выглядеть, сервер решает)
- Само-документируемые сообщения (в ответах и запросах есть вся необходимая информация)
- Гипермедиа как средство изменения состояния приложения (в ответах есть URI ресурсов, которыми можно воспользоваться)
- Слои
- [опционально] Код по требованию
Структура URL?
URI - https://domain.com/some/url?q=foo&bar=baz
URL - https://domain.com
URN - some/url
URI = URL + URN
Что могут в себе содержать заголовки и Cookies?
Популярные заголовки:
* Host
* User-Agent
описание клиента - браузер, ос итд
* Accept
указывается формат в котором клиент принимает ответ, “любое” указывается как “/”
* Authorization
* Cookie
Cookie
хранятся в виде пар ключ-значение. Небольшие фрагменты данных, которые могут выступать в виде идентификатора пользователя или, например хранить в себе предпочтения пользователя.
Какие типы кодов ответов HTTP есть?
100 - информационные
200 - успешное выполнение запроса
300 - переадресация
400 - ошибка клиента
500 - ошибка сервера
Что такое прогрессивная отрисовка? Какие технологии используются?
Кусочки HTML генерируются на сервере и отсылаются браузеру в порядке приоритетности (например <header>
генерируется и отсылается в первую очередь).
В прогрессивной отрисовке используются техники ленивой загрузки и приоритизации контента (например не загружать изначально все CSS-стили в <head>
, а только важные, остальные загрузить в конце <body>
).
Для чего предназначены линтеры (code style linting tool)?
Для проверки кода на стилистические и программные ошибки.
Опишите весь процесс, начиная с ввода адреса сайта в адресную строку до окончания его загрузки на экране.
- Ввод адреса
- Поиск адреса в кеше DNS
- Если его нет, то запрос на сервер DNS
- Установка TCP соединения
- HTTP запрос от браузера
- Сервер получает запрос, готовит и отправляет ответ
- Браузер получает и отображает контент
Что такое History API в браузере?
Даёт доступ к управлению историей браузера в рамках текущей сессии. Новая сессия - новая вкладка или окно.
Можно двигаться по истории с помощью объекта window.history
, можно двигаться вперёд и управлять содержимым.
Объясните разницу между cookie
, sessionStorage
и localStorage
(web storage).
Механизмы хранения ключ-значения. Могут хранить только строки.
sessionStorage
- используется через JS, доступен только в рамках вкладки и до её закрытия
localStorage
- используется через JS, доступен в рамках всего сайта для всех вкладок и после закрытия вкладок
cookie
- может задаваться сервером или через JS, срок хранения настраивается, отправляется на сервер при каждом запросе
Ключевые отличия:
- данные из storage не отправляются на сервер при каждом обращении
- сервер не может изменять данные в storage, только на фронте через JS
Что такое безопасные cookies (Secure cookies)? Что такое HttpOnly cookies?
Безопасные cookies - только по HTTPS.
HttpOnly - нельзя работать через JS с cookies.
Что такое IndexedDB в браузере? Преимущества IndexedDB?
Это база данных в браузере. Позволяет хранить больше данных, чем localStorage и более сложная в работе с ней, но и больше контроля.
Механизм установки сеанса между клиентом и сервером?
Клиент отправляет запрос на сервер, сервер получает запрос, обрабатывает и создаёт уникальный ID сессии. В ответе отправляет в куках этот ID. Затем клиент будет делать новый запрос уже с полученным ID.
Что Такое API?
Aplication Programming Interface - программный интерфейс приложения.
Служит для возможности взаимодействия с программой на уровне языков программирования. Набор методов через которые интерфейс может взаимодействовать с базой данных. Обычно используются CRUD операции
Что такое CDN?
Content Delivery Network - сеть доставки контента.
Служит для ускорения передачи контента клиенту за счёт того что серверов много и выбирается ближайший с наивысшей скоростью.
Что такое IP-адрес?
Уникальный сетевой адрес.
Разница между host и domain?
Host - тот кто содержит на себе сервер или сайт.
Domain - доменное имя, уникальное имя адреса, которое сопоставляется с ip-адресом.
Почему очищать кэш важно? Как это можно сделать?
Когда сайт обновляется, если в кеше будут старые файлы, то возможна ситуация в которой приложение может сломаться из-за ссылки на более несуществующий объект (изменённое имя) или что-то подобное.
Делается это путём присваивания файлу другого имя.
Разница между идентификацией, аутентификацией, авторизацией?
Идентификация - процедура установления личности или сущности (кто это?).
Аутентификация - это подтверждение личности, например вводом логина и пароля (действительно ли это?).
Авторизация - предоставление прав (что может делать?)
Виды аутентификации?
Токен - предоставляется токен, последующие запросы происходят с ним.
Другие виды: авторизация через социальные сети, двухфакторная, биометрическая, с использованием сертификата, одноразовый пароль на телефон.
Какие меры безопасности следует принять при работе с cookie на стороне клиента?
Флаг Secure (только HTTPS)
Флаг HttpOnly (запрет на работу с cookie через JS)
Атрибут SameSite:strict
- полностью блокирует отправку кук на другие сайтыlax
- разрешает отправку при переходе с одного на другойnone
- разрешает отправку всегда, но обязательно должен быть Secure
Срок годности cookie
Что такое прогрессивный SSR?
Server Side Rendering - прогрессивный рендеринг на стороне сервера.
Страница разбивается на части, эти части управляются отдельными скриптами. Части передаются последовательно.
Представьте HTML5 как открытую веб-платформу. Из каких блоков состоит HTML5?
- Новые семантические элементы
- Мультимедиа - поддержка аудио и видео
- Графика - стало возможно делать игры и диаграммы
- API для веб-приложений - геолокация, хранение в браузере и другие.
- Поддержка устройств - совместимость независимо от самого устройства.
Можете ли вы описать некоторые методы SEO?
существует множество методов для улучшения поисковых метрик, вот несколько:
- повышение производительности и скорости ответа
- семантическая вёрстка с правильной структурой и микроразметкой, альт-атрибуты и метатеги
- настройка robots.txt (там можно указать какие страницы индексировать, какие нет, а так же указать карту сайта)
Как можно оптимизировать загрузку внешних ресурсов на странице?
Можно использовать кеширование, ленивую загрузку (lazy-loading), поддомены. Если используется HTTP/1.1, для HTTP/2 это неактуально.
Можно оптимизировать сборку JS-кода, минифицировать скрипты, использовать CDN, gzip-сжатие, css- и svg-спрайты, настроить кеширование.
Сколько ресурсов браузер может одновременно загружать с одного домена?
Для http/1.1 было ограничение в 6 соединений. На http/2 ограничений нет.
Почему лучше загружать ресурсы для сайта с нескольких доменов?
Актуально только для HTTP/1.1, так как в нём ограничение на количество соединений с одним доменом.
В чём различия между Long-Polling, Websockets и Server-Sent Events?
Long-Polling - клиент делает запрос, сервер отвечает как только есть новая информация, клиент тут же делает новый запрос.
Websokets - двухсторонняя постоянная связь по протоколу websoket
Server-Sent Events - тоже постоянная связь, но односторонняя в сторону клиента от сервера.
Что такое Веб-компоненты?
Технология, которая позволяет создавать самодостаточные компоненты без использования сторонних библиотек.
Что означает CORS и какую проблему решает?
В целях безопасности браузер ограничивает запросы на домен, отличный от того, с которого загружен сайт.
CORS (Cross-Origin Resource Sharing) - механизм, который позволяет браузеру загружать ресурсы с домена, отличного от того, что используется в данный момент. Работает посредством установки дополнительных HTTP заголовков со стороны сервера.
Сервер говорит браузеру откуда можно брать данные.
Что такое Content Security Policy (CSP)?
HTTP-хедер, который предназначен для настройки того, откуда и какой контент может запускаться в браузере.
Защищает от XSS.
Какие основные угрозы безопасности могут возникать на веб-страницах?
- Межсайтовый скриптинг (XSS) - внедрение кода на страницу (например комментарий), который выполняется на странице пользователя.
- Межсайтовая подделка запроса (CSRF) - атака при которой запросы отправляются от имени аутентифицированного пользователя без его ведома.
- Инъекции кода (Injections) - вредоносный код внедряется в sql запросы или операции ОС.
- Утечка информации - неправильная конфиругация прав и отсутствие наименьших привелегий.
- Неправильная конфигурация безопасности.
- Уязвимости браузера и его расширений - утаревшие версии браузеров и расширений могут содержать неисправленные уязвимости.
Что такое принцип наименьших привилегий (POLP)?
Принцип по которому каждая роль должна иметь только минимально необходимый набор прав. Такой подход сокращает количество возможных случайных ошибок и проблем.
Назовите критические этапы рендеринга?
Последовательность шагов которые выполняет браузер, когда HTML, CSS и JS преобразуются в пиксели, которые видны на экране.
- Document Object Model - трансформирование HTML в DOM-дерево.
- CSS Object Model - если HTML документ содержит стили, то при парсинге они запрашиваются и участвуют в построении CSS OM.
- JavaScript - если HTML документ содержит тег
<script>
, то происходит либо исполнение этого скрипта, либо запрос и исполнение сторонних подключенных скриптов. - Accessibility Tree - при парсинге HTML анализируются атрибуты role и ARIA. В результате чего происходит построение дерева доступности.
- Render Tree - на данном этапе происходит объединение DOM и CSS OM. Для построения дерева рендера браузер проверяет каждый узел дом, начиная от корневого и определяет какие CSS правила нужно присоединить к этому узлу.
- Layout/Reflow - после того как дерево рендера построено, определяется где и как на странице будут спозиционированы элементы. На основании размеров элемента определяется его положение.
- Painting/Repaint - когда дерево рендера создано, компоновка произошла происходит покраска веб-страницы, согласно заданным стилям.
- Compositing - отрисовка слоёв в правильном порядке (правильное наложение и т.д.). Элементы выстраиваются друг относительно друга по уровням или потокам.
Объясните разницу между раскладкой (layout), painting и композитингом (compositing).
- Layout: расчёт места для объекта на основе правил.
- Paint: рисовка пикселей для отображения визуальных элементов.
- Compositing: рисовка слоёв в правильном порядке (правильное наложение и т.д.).
Что такое HTML и для чего он используется?
HyperText Markup Language - язык гипертекстовой разметки. Нужен для размещения на странице элементов: текст, картинки, таблицы, видео. Браузер умеет его интерпретировать.
Что такое атрибуты в HTML? Как они используются в элементах?
Атрибут - это модификатор HTML элемента. Изменяет существующий функционал или предоставляет новый. Меняет или уточняет статус.
Какие глобальные атрибуты есть в HTML?
Глобальные атрибуты - те, которые можно применить почти к любому элементу.
Например
- class
- hidden
- data-
- contenteditable
- tabindex
Опишите базовую структуру HTML-страницы?
<!doctype html> // обязательное указание типа документа <html> // корневая обёртка страницы <head> // подключение шрифтов, стилей, seo итд <meta charset=”UTF-8”> <title>Document</title> </head> <body> // основная разметка <h1>Hello world</h1> </body> </html>
Что такое валидация? И какие типы проверок HTML документа вы знаете?
Валидация - проверка документа программой-валидатором на соответствие спецификациям.
Валидатор проверяет:
- dtd - document type definition. Документ должен содердать доктайп и в соответствии с типом документа будет применяться соответствующие правила.
- проверка синтаксиса
- проверка вложенности
- проверка на наличие посторонних элементов
Какой тэг использовать для того, что бы сверстать кнопку?
Просто кнопка - <button>...
Подтверждение формы - <button type="submit">...
или <input type="submit" value="button">
Ссылка - <a href="#">...
Что такое инлайновый стиль? Можно ли его переопределить?
Инлайновый стиль - стиль, указанный в HTML через атрибут style
. Переопределить можно только с помощью important
в CSS.
Объясните, как браузер определяет, на какие элементы накладывать CSS стили?
Браузер отсеивает элементы по селекторам, но ключевая разница в том что он это делает справа налево.
Объясните, что такое блочный контекст форматирования и как он работает.
Это часть механизма отображения веб страницы в CSS. Регион в котором блоки размещаются в привычном для себя порядке.
Те, кто могут его создать:
- корневой элемент
<html>
-
float
≠none
-
position: absolute
илиfixed
- части таблиц
- и другие
Что такое FOUC (Flash Of Unstyled Content)? Как его избежать?
FOUC (Flash Of Unstyled Content) - это появление неоформленного контента при загрузке.
Вставить в <head>
критичный CSS (минимальный набор стилей для первого экрана) или скрыть контент, пока он не загрузится.
Что такое ARIA атрибуты? Для чего они.
ARIA атрибуты - это группа дополнительных атрибутов, которые нужны для указания семантики тегов и их состояний. Основные типы это
role
- можно задать роль тега, например роль navigation
сделает из тега <nav>
aria-свойство
- состояние или свойство, которое начинается с aria-
, указывает на текущее состояние элемента, например состояние aria-hidden
Что такое микроразметка и для чего она нужна?
Это семантическая разметка для ботов и поисковых систем.
Одна из самых популярных - schema.org.
Реализуется через добавление дополнительных атрибутов для HTML тегов.
Объясните разницу между<script>
<script async>
<script defer>
script
- отрисовка HTML блокируется, скрипт выполняется немедленно, после этого возобновляется отрисовка
async
- скрипт будет получен и выполнен параллельно с отрисовкой HTML (подходит для скриптов аналитики или рекламы)
defer
- скрипт будет получен параллельно с отрисовкой HTML, но выполнен после того как загрузится вся страница
Чем отличаются размеры px, em, rem, vw, vh?
px
- базовая, абсолютная
em
- относительно шрифта
%
- относительно размеров родителя
rem
- относительно шрифта <html>
vw
- 1% ширины окна браузера.
vh
- 1% высоты окна браузера.
vmin
- 1% меньшего размера окна браузера по высоте или ширине.
vmax
- 1% большего размера окна браузера по высоте или ширине.
Объясните, что такое z-index
и как формируется контекст наложения.
Он нужен для позиционирования элементов по условной оси Z (глубина).
Не действует на position: static
.
Самый базовый контекст наложения это тег <html>
. Так же есть ряд условий при которых формируется новый контекст внутри предыдущего. Вот самые важные из них:
- position: absolute
и relative
с значением z-index !== auto
- флекс-элемент с значением z-index !== auto
- элемент с opacity
меньше 1
- элемент с transform
не none
Какими способами можно визуально скрыть элемент (оставив его доступным только для скринридера)?
visibility: hidden
(в отличии от display: none
оставляет доступность для читалки и поисковых роботов)
height
и width: 0px
opacity: 0