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

На этой неделе мы узнали об API и API Fetch.

Мы используем API для управления документами, загруженными в браузер. Самый очевидный пример — DOM (Document Object Model) API, который позволяет вам манипулировать HTML и CSS — создавать, удалять и изменять HTML, динамически применять новые стили к вашей странице и т. д. Каждый раз, когда вы видите всплывающее окно, на странице или в каком-то новом отображаемом контенте, например, это DOM в действии. Узнайте больше об этих типах API в разделе Работа с документами.

Fetch API предоставляет интерфейс JavaScript для доступа и управления частями конвейера HTTP, такими как запросы и ответы. Он также предоставляет глобальный метод fetch(), обеспечивающий простой и логичный способ асинхронного получения ресурсов по сети.

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

DOMContentLoaded — загружен весь документ (HTML). загрузить — весь документ и его ресурсы (например, изображения, фреймы, скрипты) загружены. Узнайте больше о MDN.

Событие загрузки возникает в конце процесса загрузки документа. На данный момент все объекты в документе находятся в DOM, а все изображения, скрипты, ссылки и подфреймы завершили загрузку. Чтобы выполнить что-либо после загрузки документа, мы запускаем эти события. DOMContentLoaded или загруженный jQuery — еще один вариант. Подробное обсуждение читайте здесь и здесь.

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

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

Плюсы:

Улучшенный пользовательский интерфейс: веб-страницы могут обновляться последовательно путем обмена небольшим объемом данных с сервером.

Увеличенная производительность пользователей. Библиотека AJAX предоставляет объектно-ориентированные вспомогательные функции, которые значительно повышают производительность и уменьшают разочарование.

Уменьшение использования полосы пропускания и повышение скорости. AJAX использует сценарии на стороне клиента для связи с веб-сервером и обмена данными с помощью JavaScript.

Повышенная совместимость. AJAX может быть совместим с ASP.NET, J2EE, PHP или любыми другими языками. Он почти поддерживает все популярные браузеры, такие как Internet Explorer 5 и выше, Mozilla Firefox 1.0 и выше, Apple Safari 1.2 и выше, Opera 7.6 и выше и RockMelt.

Минусы:

Несовместимость с браузерами. AJAX сильно зависит от JavaScript, который по-разному реализуется в разных браузерах.

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

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

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

JSONP (как в JSON с дополнением) — это метод, обычно используемый для обхода междоменных политик в веб-браузерах (вам не разрешено делать AJAX-запросы к веб-странице, которая воспринимается браузером как находящаяся на другом сервере). JSON и JSONP ведут себя по-разному как на клиенте, так и на сервере. Запросы JSONP не отправляются с использованием XMLHTTPRequest, вместо этого создается тег ‹script›, источником которого является целевой URL-адрес. Затем этот тег скрипта добавляется в DOM (обычно это ‹head›). Читать это, это и это для подробного ответа.

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

AJAX = Aсинхронный JavaScript Aи XML.

AJAX — это не язык программирования.

AJAX просто использует комбинацию:

  • Встроенный в браузер объект XMLHttpRequest (для запроса данных с веб-сервера).
  • JavaScript и HTML DOM (для отображения или использования данных)

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

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

Допустим, временная сложность алгоритма для 𝑛n входных данных равна 𝑂(𝑛2)O(n2). Это означает, что алгоритм должен полностью выполнить (𝑛2)(n2) инструкции от начала программы до конца.

Если 𝑂(𝑛2)O(n2) является мерой инструкций, то почему мы вообще называем это временной сложностью?

Хорошо, давайте рассмотрим сценарий. Допустим, вы написали алгоритм временной сложности 𝑂(𝑛2)O(n2) и реализовали его в компьютерной программе. Теперь вы запускаете эту программу на компьютере, который может выполнять 1 миллион инструкций в секунду. Допустим, вы ввели в эту программу 1000 входных данных. Таким образом, он должен выполнить (10002)(10002) инструкций, что составляет не что иное, как 1 миллион инструкций. Поскольку ваш компьютер может выполнять 1 миллион инструкций в секунду, эта программа будет выполнена за одну секунду.

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

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

Давайте рассмотрим каждый из этих законов более подробно и посмотрим, как он использовался в алгоритме listsum. Во-первых, базовый случай — это условие, позволяющее алгоритму прекратить рекурсию. Базовый случай обычно представляет собой проблему, которая достаточно мала, чтобы ее можно было решить напрямую. В алгоритме listsum базовым случаем является список длины 1.

Чтобы подчиняться второму закону, мы должны организовать изменение состояния, которое перемещает алгоритм в сторону базового случая. Изменение состояния означает, что некоторые данные, которые использует алгоритм, изменены. Обычно данные, которые представляют нашу проблему, каким-то образом становятся меньше. В алгоритме listsum нашей основной структурой данных является список, поэтому мы должны сосредоточить наши усилия по изменению состояния на списке. Так как базовый вариант представляет собой список длины 1, естественным продвижением к базовому варианту является сокращение списка. Именно это происходит в строке 5, когда мы вызываем listsum с более коротким списком.

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

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