1
1
Fork 0
java-interview/web.md

36 KiB
Raw Permalink Blame History

Вопросы для собеседования

Основы Web

Что такое WWW?

WWW, World Wide Web (Всемирная паутина) — распределённая система, предоставляющая доступ к связанным между собой документам, расположенным на различных компьютерах, подключённых к Интернету. Для обозначения этого термина также используют слово web.

к оглавлению

Что такое W3C?

W3C, World Wide Web Consortium (Консорциум Всемирной паутины) — организация, разрабатывающая и внедряющая технологические стандарты для WWW.

W3C разрабатывает для Интернета единые принципы и стандарты, называемые «рекомендациями» (W3C Recommendations), которые затем внедряются производителями программ и оборудования. Таким образом достигается совместимость между программными продуктами и аппаратурой различных компаний.

к оглавлению

Какие существуют уровни модели OSI?

# Уровень (layer) Тип данных (PDU) Функции Примеры
7 Прикладной (application) - Доступ к сетевым службам HTTP, FTP
6 Представительский (представления) (presentation) - Представление и шифрование данных ASCII, JPEG
5 Сеансовый (session) - Управление сеансом связи RPC, PAP
4 Транспортный (transport) Сегменты(segment) / Дейтаграммы(datagram) Прямая связь между конечными пунктами и надежность TCP, UDP
3 Сетевой (network) Пакеты (packet) Определение маршрута и логическая адресация IP, AppleTalk
2 Канальный (data link) Биты (bit) / Кадры (frame) Физическая адресация Ethernet, IEEE 802.2, L2TP
1 Физический (physical) Биты (bit) Работа со средой передачи, сигналами и двоичными данными USB, витая пара

к оглавлению

Что такое TCP/IP?

TCP/IP - это два основных сетевых протокола Internet. Часто это название используют и для обозначения сетей, работающих на их основе.

IP (Internet Protocol) - маршрутизируемый протокол, отвечающий за IP-адресацию, маршрутизацию, фрагментацию и восстановление пакетов. В его задачу входит продвижение пакета между сетями от одного маршрутизатора до другого и тех пор, пока пакет не попадет в сеть назначения. В отличие от протоколов прикладного и транспортного уровней, протокол IP разворачивается не только на хостах, но и на всех шлюзах (маршрутизаторах). Этот протокол работает без установления соединения и без гарантированной доставки.

В настоящее время используются следующие две версии протокола IP:

  • IPv6 — IP-адрес имеет разрядность 128 бит и записывается в виде восьми 16-битных полей, с использованием шестнадцатеричной системы счисления и с возможностью сокращения двух и более последовательных нулевых полей до ::, например: 2001:db8:42::1337:cafe
  • IPv4 — IP-адрес имеет разрядность 32 бита и записывается в виде четырех десятичных чисел в диапазоне 0255 через точку, например: 192.0.2.34.

TCP (Transfer Control Protocol) - протокол, обеспечивающий надежную, требующую логического соединения связь между двумя компьютерами. Отвечает за установление соединения, упорядочивание посылаемых пакетов и восстановление пакетов, потерянных в процессе передачи.

Стек протоколов TCP/IP включает в себя четыре уровня:

  1. канальный уровень (link layer) - например Ethernet, IEEE 802.11 Wireless Ethernet, физическая среда и принципы кодирования информации
  2. сетевой уровень (Internet layer) - например IP
  3. транспортный уровень (transport layer) - например TCP, UDP
  4. прикладной уровень (application layer) - например HTTP, FTP, DNS

TCP-соединение двух узлов начинается с handshake (рукопожатия):

  • Узел A посылает узлу B специальный пакет SYN — приглашение к соединению
  • B отвечает пакетом SYN-ACK — согласием об установлении соединения
  • A посылает пакет ACK — подтверждение, что согласие получено

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

В заголовке TCP/IP пакета указывается:

  • IP-адрес отправителя
  • IP-адрес получателя
  • Номер порта

к оглавлению

Что такое UDP?

UDP, User Datagram Protocol (Протокол пользовательских датаграмм) — протокол, который обеспечивает доставку без требований соединения с удаленным модулем UDP и обязательного подтверждения получения.

К заголовку IP-пакета UDP добавляет всего четыре поля по 2 байта каждое:

  1. поле порта источника (source port)
  2. поле порта пункта назначения (destination port)
  3. поле длины (length)
  4. поле контрольной суммы (checksum)

Поля «порт источника» и «контрольная сумма» не являются обязательными для использования в IPv4. В IPv6 необязательно только поле «порт отправителя».

UDP используется DNS, SNMP, DHCP и другими приложениями.

к оглавлению

Чем отличаются TCP и UDP?

TCP — ориентированный на соединение протокол, что означает необходимость «рукопожатия» для установки соединения между двумя хостами. Как только соединение установлено, пользователи могут отправлять данные в обоих направлениях.

  • Надёжность — TCP управляет подтверждением, повторной передачей и тайм-аутом сообщений. Производятся многочисленные попытки доставить сообщение. Если оно потеряется на пути, сервер вновь запросит потерянную часть. В TCP нет ни пропавших данных, ни (в случае многочисленных тайм-аутов) разорванных соединений.
  • Упорядоченность — если два сообщения последовательно отправлены, первое сообщение достигнет приложения-получателя первым. Если участки данных приходят в неверном порядке, TCP отправляет неупорядоченные данные в буфер до тех пор, пока все данные не могут быть упорядочены и переданы приложению.
  • Тяжеловесность — TCP необходимо три пакета для установки соединения перед тем, как отправить данные. TCP следит за надёжностью и перегрузками.
  • Потоковость — данные читаются как поток байтов, не передается никаких особых обозначений для границ сообщения или сегментов.

UDP — более простой, основанный на сообщениях протокол без установления соединения. Протоколы такого типа не устанавливают выделенного соединения между двумя хостами. Связь достигается путём передачи информации в одном направлении от источника к получателю без проверки готовности или состояния получателя.

  • Ненадёжность — когда сообщение посылается, неизвестно, достигнет ли оно своего назначения — оно может потеряться по пути. Нет таких понятий как подтверждение, повторная передача, тайм-аут.
  • Неупорядоченность — если два сообщения отправлены одному получателю, то порядок их достижения цели не может быть предугадан.
  • Легковесность — никакого упорядочивания сообщений, никакого отслеживания соединений и т. д. Это лишь транспортный уровень.
  • Датаграммы — пакеты посылаются по отдельности и проверяются на целостность только если они прибыли. Пакеты имеют определенные границы, которые соблюдаются после получения, то есть операция чтения на получателе выдаст сообщение таким, каким оно было изначально послано.
  • Отсутствие контроля перегрузок — для приложений с большой пропускной способностью существует шанс вызвать коллапс перегрузок, если только они не реализуют меры контроля на прикладном уровне.

к оглавлению

Что такое протокол передачи данных? Какие протоколы вы знаете?

Протокол передачи данных — набор соглашений интерфейса логического уровня, которые определяют обмен данными между различными программами. Эти соглашения задают единообразный способ передачи сообщений и обработки ошибок при взаимодействии программного обеспечения разнесённой в пространстве аппаратуры, соединённой тем или иным интерфейсом.

Наиболее известные протоколы передачи данных:

  • HTTP (Hyper Text Transfer Protocol)
  • FTP (File Transfer Protocol)
  • POP3 (Post Office Protocol)
  • SMTP (Simple Mail Transfer Protocol)
  • TELNET (TErminaL NETwork)

к оглавлению

Что такое HTTP и HTTPS? Чем они отличаются?

HTTP, HyperText Transfer Protocol (Протокол передачи гипертекста) — протокол прикладного уровня передачи данных.

Основой HTTP является технология «клиент-сервер»:

  • Потребители (клиенты), которые инициируют соединение и посылают запрос;
  • Поставщики (серверы), которые ожидают соединения для получения запроса, производят необходимые действия и возвращают обратно сообщение с результатом.

Для идентификации ресурсов HTTP использует глобальные URI.

HTTP не сохраняет своего состояния. Это означает отсутствие сохранения промежуточного состояния между парами «запрос-ответ».

Структура протокола:

  1. Стартовая строка (starting line) — определяет тип сообщения;
  2. Заголовки (headers) — характеризуют тело сообщения, параметры передачи и прочие сведения;
  3. Тело сообщения (message body) — непосредственно данные сообщения. Обязательно должно отделяться от заголовков пустой строкой.

Заголовки и тело сообщения могут отсутствовать, но стартовая строка является обязательным элементом, так как указывает на тип запроса/ответа.

HTTPS, HyperText Transfer Protocol Secure — расширение протокола HTTP, поддерживающее шифрование. Данные, передаваемые по протоколу HTTPS, «упаковываются» в криптографический протокол SSL или TLS, что обеспечивает защиту от атак, основанных на прослушивании сетевого соединения (при условии, что будут использоваться шифрующие средства и сертификат сервера проверен и ему доверяют).

Различия HTTP и HTTPS:

  • HTTPS является расширением HTTP.

  • HTTP использует не зашифрованное соединение. Соединение по HTTPS поддерживает шифрование.

  • Работа по HTTP быстрей и менее ресурсоёмко, т.к. шифрование HTTPS требует дополнительных затрат.

  • Порты по умолчанию: в случае HTTP это TCP-порт 80, для HTTPS - TCP-порт 443.

к оглавлению

Что такое FTP?

FTP, File Transfer Protocol (Протокол передачи файлов) — протокол передачи файлов между компьютерами в сети TCP. С его помощью можно подключаться к FTP-серверам, просматривать содержимое их каталогов и загружать файлы с сервера или на сервер. Протокол построен на архитектуре «клиент-сервер» и использует разные сетевые соединения для передачи команд и данных между клиентом и сервером.

По умолчанию использует TCP-порт 21.

к оглавлению

Чем отличаются методы GET и POST?

GET передает данные серверу, используя URL, тогда как POST передает данные, используя тело HTTP запроса. Длина URL ограничена 1024 символами, это и будет верхним ограничением для данных, которые можно отослать через GET. POST может отправлять гораздо большие объемы данных. Лимит устанавливается web-server и составляет обычно около 2 Mb.

Передача данных методом POST более безопасна, чем методом GET, так как секретные данные (например пароль) не отображаются напрямую в web-клиенте пользователя, в отличии от URL, который виден почти всегда. Иногда это преимущество превращается в недостаток - вы не сможете послать данные за кого-то другого.

к оглавлению

Что такое MIME тип?

MIME, Multipurpose Internet Mail Extension (Многоцелевые расширения Интернет-почты) — спецификация для передачи по сети файлов различного типа: изображений, музыки, текстов, видео, архивов и др. В HTML указание MIME-типа используется при передаче данных форм и вставки на страницу различных объектов.

к оглавлению

Что такое Web server?

Web server (Веб-сервер) — сервер, принимающий HTTP-запросы от клиентов и выдающий им HTTP-ответы. Так называют как программное обеспечение, выполняющее функции web-сервера, так и непосредственно компьютер, на котором это программное обеспечение работает.

Web-серверы могут иметь различные дополнительные функции, например:

  • автоматизация работы web-страниц;
  • ведение журнала обращений пользователей к ресурсам;
  • аутентификация и авторизация пользователей;
  • поддержка динамически генерируемых страниц;
  • поддержка HTTPS для защищённых соединений с клиентами.

Наиболее известные web-серверы:

  • Apache
  • Microsoft IIS
  • nginx

к оглавлению

Что такое Web application?

Web application (Веб-приложение) - клиент-серверное приложение, в котором клиентом выступает браузер, а сервером — web-сервер. Логика web application распределена между сервером и клиентом, хранение данных осуществляется, преимущественно, на сервере, а обмен информацией происходит по сети. Одним из преимуществ такого подхода является тот факт, что клиенты не зависят от конкретной операционной системы пользователя, поэтому web application является кроссплатформенным сервисом.

к оглавлению

Что такое Application server?

Application Server (Сервер приложений) — программа, представляющая собой сервер, который занимается системной поддержкой приложений и обеспечивает их жизненный цикл в соответствии с правилами, определёнными в спецификациях. Может работать как полноценный самостоятельный web-сервер или быть поставщиком страниц для другого web-сервера. Обеспечивает обмен данными между приложениями и клиентами, берёт на себя выполнение таких функций, как создание программной среды для функционирующего приложения, идентификацию и авторизацию клиентов, организацию сессии для каждого из них.

Наиболее известные серверы приложений Java:

  • Apache Tomcat
  • Jetty
  • JBoss
  • GlassFish
  • IBM WebSphere
  • Oracle Weblogic

к оглавлению

Чем отличаются Web server и Application server?

Понятие web server относится скорее к способу передачи данных (конкретно, по протоколу HTTP), в то время как понятие Application server относится к способу выполнения этих самых приложений (конкретно, удаленная обработка запросов клиентов при помощи каких-то программ, размещенных на сервере). Эти понятия нельзя ставить в один ряд. Они обозначают разные признаки программы. Какие-то программы удовлетворяют только одному признаку, какие-то - нескольким сразу.

Apache Tomcat умеет выполнять приложения? Да, значит он является application server. Apache Tomcat умеет отдавать данные по HTTP? - Да. Следовательно он является web server.

Возьмите какую-нибудь базу данных, в которой на хранимых процедурах описана сложная логика и можно в ответ на SQL-запросы отправлять даже sms. Такую базу данных можно назвать application server, но web server - уже нет, потому что все это не работает с клиентом по HTTP протоколу.

Возьмите чистый Apache, в котором не включены никакие модули для поддержки языков программирования. Он умеет отдавать только статичные файлы и картинки по протоколу HTTP. Это web server, но не application server. Включите модуль для поддержки PHP и разместите там программу на PHP, которая делает запросы к базе данных и динамически формирует страницы. Теперь Apache стал и application server.

к оглавлению

Что такое AJAX? Как принципиально устроена эта технология?

AJAX, Asynchronous Javascript and XML (Асинхронный Javascript и XML) — подход к построению интерактивных пользовательских интерфейсов web-приложений, заключающийся в «фоновом» обмене данными браузера и web-сервера. В результате, при обновлении данных web-страница не перезагружается полностью и web-приложения становятся быстрее и удобнее.

При использовании AJAX:

  1. Пользователь заходит на web-страницу и взаимодействует с каким-нибудь её элементом.
  2. Скрипт на языке JavaScript определяет, какая информация необходима для обновления страницы.
  3. Браузер отправляет соответствующий запрос на web-сервер.
  4. Web-сервер возвращает только ту часть документа, на которую пришёл запрос.
  5. Скрипт вносит изменения с учётом полученной информации (без полной перезагрузки страницы).

AJAX базируется на двух основных принципах:

  1. использование технологии динамического обращения к серверу «на лету» (без перезагрузки страницы полностью) через динамическое создание:
    • дочерних фреймов;
    • тега <script>;
    • тега <img>.
  2. использование DHTML для динамического изменения содержания страницы;

AJAX не является самостоятельной технологией, это концепция использования нескольких смежных технологий:

  • (X)HTML, CSS для подачи и стилизации информации;
  • DOM-модель, операции над которой производятся Javascript на стороне клиента, для обеспечения динамического отображения и взаимодействия с информацией;
  • XMLHttpRequest или другой транспорт (IFrame, SCRIPT-тег, ...) для асинхронного обмена данными с web-сервером;
  • JSON или любой другой подходящий формат (форматированный HTML, текст, XML, ...) для обмена данными.

к оглавлению

Что такое WebSocket?

WebSocket — протокол полнодуплексной связи поверх TCP-соединения, предназначенный для обмена сообщениями между браузером и web-сервером в режиме реального времени.

Протокол WebSocket определяет две URI схемы

  • ws: - нешифрованное соединение
  • wss: - шифрованное соединение

к оглавлению

Что такое JSON?

JSON, JavaScript Object Notation — текстовый формат обмена данными, основанный на JavaScript.

JSON представляет собой (в закодированном виде) одну из двух структур:

  • Набор пар «ключ:значение»;
  • Упорядоченный набор значений.

Ключом может быть только строка (регистрозависимая: имена с буквами в разных регистрах считаются разными).

В качестве значений могут быть использованы:

  • Объект — неупорядоченное множество пар «ключ:значение», заключённое в фигурные скобки { }. Ключ описывается строкой, между ним и значением стоит символ :. Пары ключ-значение отделяются друг от друга запятыми;
  • Массив (одномерный) — упорядоченное множество значений. Массив заключается в квадратные скобки [ ]. Значения разделяются запятыми.
  • Число;
  • Литералы true, false и null;
  • Строка — упорядоченное множество из нуля или более символов Unicode, заключенное в кавычки " ". Символы могут быть указаны с использованием escape-последовательностей, начинающихся с обратной косой черты \, или записаны шестнадцатеричным кодом в кодировке UTF-8 в виде \uFFFF.

к оглавлению

Что такое JSON схема?

JSON Schema — один из языков описания структуры JSON-документа, используя синтаксис JSON.

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

к оглавлению

Что такое cookies?

Сookies («куки») — небольшой фрагмент данных, отправленный web-сервером и хранимый на устройстве пользователя. Всякий раз при попытке открыть страницу сайта, web-клиент пересылает соответствующие этому сайту cookies web-серверу в составе HTTP-запроса. Применяется для сохранения данных на стороне пользователя и на практике обычно используется для:

  • аутентификации пользователя;
  • хранения персональных предпочтений и настроек пользователя;
  • отслеживания состояния сеанса доступа пользователя;
  • ведения разнообразной статистики.

к оглавлению

Что такое «сессия»?

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

к оглавлению

Что такое «авторизация» и «аутентификация»? Чем они отличаются?

Аутентификация - это проверка соответствия субъекта и того, за кого он пытается себя выдать, с помощью некой уникальной информации (отпечатки пальцев, цвет радужки, голос и тд.), в простейшем случае - с помощью имени входа и пароля.

Авторизация - это проверка и определение полномочий на выполнение некоторых действий (например, чтение файла) в соответствии с ранее выполненной аутентификацией.

Очевидно, что это разные понятия, но при этом без первого не может быть второго и наоборот. То есть имея разрешение на работу, вы не сможете оказаться на рабочем месте без предъявления пропуска, равно как и нет смысла в демонстрации пропуска, если вы не планируете работать. Именно тот факт, что одного не бывает без другого, и вызывает у людей заблуждение, что это одно и то же.

к оглавлению

Источники

Вопросы для собеседования