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.