1. Напишите о том, что вы узнали на этой неделе.

API и обещания

2. Зачем вам использовать что-то вроде события загрузки? Есть ли у этого мероприятия недостатки? Знаете ли вы какие-либо альтернативы и зачем их использовать?

Событие load возникает в конце процесса загрузки документа. На данный момент все объекты в документе находятся в DOM, а все изображения, скрипты, ссылки и подфреймы завершили загрузку.

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

СДЕЛАТЬ.

использованная литература

3. Каковы преимущества и недостатки использования Ajax?

Преимущества

  • Лучшая интерактивность. Новый контент с сервера может динамически изменяться без необходимости перезагрузки всей страницы.
  • Сократите количество подключений к серверу, поскольку сценарии и таблицы стилей нужно запрашивать только один раз.
  • Состояние может поддерживаться на странице. Переменные JavaScript и состояние DOM сохранятся, поскольку главная страница контейнера не была перезагружена.
  • В основном большинство преимуществ СПА.

Недостатки

  • Динамические веб-страницы сложнее добавлять в закладки.
  • Не работает, если в браузере отключен JavaScript.
  • Некоторые веб-сканеры не выполняют JavaScript и не видят контент, загруженный с помощью JavaScript.
  • В основном большинство недостатков СПА.

4. Объясните, как работает JSONP (и почему на самом деле это не Ajax).

JSONP (JSON с заполнением) — это метод, который обычно используется для обхода междоменных политик в веб-браузерах, поскольку Ajax-запросы с текущей страницы на междоменный домен запрещены.

JSONP работает, делая запрос к домену с другим происхождением через тег <script> и обычно с параметром запроса callback, например: https://example.com?callback=printData. Затем сервер поместит данные в функцию с именем printData и вернет их клиенту.

<!-- https://mydomain.com -->
<script>
function printData(data) {
  console.log(`My name is ${data.name}!`);
}
</script>
<script src="https://example.com?callback=printData"></script>
// File loaded from https://example.com?callback=printData
printData({ name: 'Yang Shun' });

Клиент должен иметь функцию printData в своей глобальной области видимости, и эта функция будет выполняться клиентом при получении ответа от домена с несколькими источниками.

JSONP может быть небезопасным и имеет некоторые последствия для безопасности. Поскольку JSONP на самом деле является JavaScript, он может делать все остальное, что может делать JavaScript, поэтому вам нужно доверять поставщику данных JSONP.

В наши дни CORS является рекомендуемым подходом, а JSONP рассматривается как взлом.

использованная литература

5. Расскажите об Ajax как можно подробнее.

Ajax (асинхронный JavaScript и XML) — это набор методов веб-разработки, использующих множество веб-технологий на стороне клиента для создания асинхронных веб-приложений. С помощью Ajax веб-приложения могут отправлять данные на сервер и получать их с сервера асинхронно (в фоновом режиме), не мешая отображению и поведению существующей страницы. Отделив уровень обмена данными от уровня представления, Ajax позволяет веб-страницам и, соответственно, веб-приложениям динамически изменять содержимое без необходимости перезагрузки всей страницы. На практике современные реализации обычно заменяют использование JSON вместо XML из-за преимуществ того, что JSON является родным для JavaScript.

XMLHttpRequest API часто используется для асинхронной связи или в наши дни fetch API.

использованная литература

6. Что имеется в виду, когда мы говорим о временной сложности алгоритма?

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

7. Каковы три закона алгоритма рекурсии?

Как и роботы Азимова, все рекурсивные алгоритмы должны подчиняться трем важным законам:

  1. Рекурсивный алгоритм должен вызывать сам себя рекурсивно.
  2. Рекурсивный алгоритм должен иметь базовый случай.
  3. Рекурсивный алгоритм должен изменить свое состояние и перейти к базовому случаю.

Базовый случай — это условие, которое позволяет алгоритму прекратить рекурсию.

  • Базовый случай обычно представляет собой проблему, которая достаточно мала, чтобы ее можно было решить напрямую.
  • В алгоритме factorial базовым случаем является n=1.

Мы должны организовать изменение состояния, которое переместит алгоритм в сторону базового случая.

  • Изменение состояния означает, что некоторые данные, которые использует алгоритм, изменены.
  • Обычно данные, которые представляют нашу проблему, каким-то образом становятся меньше.
  • В factorial n уменьшается.

8. Каким вы видите свой рост как веб-разработчика?

Получение степени — это первый шаг, я занимаюсь внештатной веб-разработкой и продолжаю учиться, чтобы идти в ногу со временем.