Вы находитесь на странице: 1из 36

«Современные технологии программирования»

2020 (заочное, вечернее, ИИТ)

Оглавление
1 Дайте определение понятию «технология»? Что такое технологии
программирования? Для чего нужны технологии?......................................................1
2 Перечислите и кратко охарактеризуйте этапы разработки процесса ПО?.............1
3 Назовите известные Вам модели разработки процесса ПО?.................................2
4 Назовите и кратко охарактеризуйте известные Вам парадигмы
программирования?......................................................................................................4
5 Дайте характеристику императивной парадигме программирования? Приведите
примеры языков и технологий, основанных на данной парадигме?..........................4
6 Дайте характеристику декларативной парадигме программирования? Приведите
примеры языков и технологий, основанных на данной парадигме?..........................4
7 Назовите известные Вам методологии развёртывания ПО?..................................5
8 Модели облачных сервисов SaaS, PaaS, IaaS? Сравнительный анализ моделей?
........................................................................................................................................ 5
9 Характеристика облачной модели SaaS? Примеры сервисов, построенных на
основе данной модели?................................................................................................6
10 Характеристика облачной модели PaaS? Примеры сервисов, построенных на
основе данной модели?................................................................................................7
11 Характеристика облачной модели IaaS? Примеры сервисов, построенных на
основе данной модели?................................................................................................8
12 Дайте определение понятию «язык программирования»? Виды языков
программирования, основные тенденции в развитии языков программирования?..9
13 Классификация языков программирования: компилируемые, интепретируемые,
с промежуточным представлением?............................................................................9
14 Что такое платформа? Приведите примеры известных платформ?..................10
15 Дайте характеристику языку Python по следующим критериям: парадигмы
поддерживаемые языком, вида типизации, способа управление ресурсами.........10
16 Дайте краткую характеристику языку и платформе Java?...................................10
17 Что такое JVM? Что такое байт-код? Что такое «сборщик мусора»...................11
18 Проведите сравнительный анализ языков программирования С++, Java, Python,
Go?............................................................................................................................... 11
19 Дайте определение понятию «система контроля версий»? Виды систем
контроля версий и Виды систем контроля версий и их особенности?.....................12
20 Стандартный рабочий поток (Git workflow)? Основные команды Git: git init, git
add, git commit, git push, git pull, git clone?..................................................................13
21 Дайте определение понятиям «Интернет» и «Веб»? В чем разница?................14
22 Объясните, что такое модель OSI? Стек протоколов TCP/IP? Кратко поясните
процесс межпрограммного взаимодействия на основе данной модели?................14
23 Понятие гипертекста? Что такое URL и их каких частей он состоит?.................16
24 Дайте характеристику и приведите примеры применения различных моделей
взаимодействия распределенных систем: ведущий-ведомый (master-slave),
клиент-сервер (двух-, трех-уровневая, N-уровневая), одноранговая (peer-2-peer)?
...................................................................................................................................... 16
25 Протокол HTTP? Структура заголовков запроса и ответа по протоколу HTTP?
Особенности методов GET и POST протокола HTTP?.............................................17
26 Отличительные особенности протокола HTTP/2?................................................17
27 Отличительные особенности статических и динамических сайтов?..................19
28 Понятие электронного документа? Четыре аспекта электронного документа:
содержание, структура, стиль, поведение?...............................................................19
29 Понятие языка разметки HTML? Что такое тэг, элемент, 0-элемент? Атрибуты
id и class HTML-элементов?........................................................................................20
30 Блочные и встраиваемые элементы? Типовая структура HTML-документа?....20
31 Понятие кодировки текста? Особенности стандартов кодировки ASCII и
Unicode(для форматов кодирования UTF-8, UTF-16, UTF-32)?...............................21
32 Основные тэги раздела заголовка HTML-документа? Способы подключения
файлов стилей и скриптов, а также др. внешних зависимостей?............................23
33 Технология каскадных таблиц стилей CSS? Предпосылки появления? Типы
селекторов, понятие классов и псевдоклассов в СSS 3?.........................................23
34 Модель клиент-серверного взаимодействия с генерацией контента на стороне
сервера (серверной шаблонизацией) и на стороне клиента (клиентской
шаблонизацией)?........................................................................................................25
35 Технология AJAX? Предпосылки появления? Синхронная и асинхронная
модель передачи данных?..........................................................................................26
36 Форматы передачи данных между веб-сервисами: XML и JSON?......................26
37 Концепция SPA (Single Page Application)?............................................................28
38 Понятие Document Object Model (DOM)? Структура и уровни DOM?..................29
39 Задачи бизнес-анализа? Место бизнес-аналитика в процессе разработки ПО и
задачи бизнес-аналитика?..........................................................................................30
40 Язык UML? Определение? Области применения? Прямое и
обратноепроектирование?..........................................................................................30
41 Основные аспекты объектно-ориентированного анализа и проектирования?...32
42 Основные строительный виды UML диаграмм: перечислите и назовите области
применения?................................................................................................................ 33
1 Дайте определение понятию «технология»? Что такое технологии
программирования? Для чего нужны технологии?

Технология -- совокупность методов и средств


достижения поставленной цели.
Методы ( метод - от. греч. путь) -- отвечают на
вопрос как?
метод => методология => парадигма
Средства -- отвечают на вопрос: с помощью чего? С
помощью каких инструментов?

Технология программирования — это совокупность методов и средств для


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

2 Перечислите и кратко охарактеризуйте этапы разработки процесса


ПО?

Типовой проект включает в себя следующие этапы разработки программного


обеспечения: анализ требований к проекту; проектирование; реализация;
тестирование продукта; внедрение и поддержка.
Анализ требований к проекту На этом этапе формулируются цели и задачи
проекта, выделяются базовые сущности и взаимосвязи между ними. То есть,
создается основа для дальнейшего проектирования системы. В рамках данного
этапа не только фиксируются требования заказчика, но и проводится их
формирование – клиентам подбирается оптимальное решение их проблем,
определяется необходимая степень автоматизации, выявляются наиболее
актуальные для автоматизации бизнес-процессы. При анализе требований
определяются сроки и стоимость разработки ПО, формируется и подписывается
ТЗ на разработку программного обеспечения. Проектирование На основе
предыдущего этапа проводится проектирование системы. Эта методология
проектирования соединяет в себе объектную декомпозицию, приемы
представления физической, логической, а также динамической и статической
моделей системы. Во время проектирования разрабатываются проектные
решения по выбору платформы, где будет функционировать система языка или
языков реализации, назначаются требования к пользовательскому интерфейсу,
определяется наиболее подходящая СУБД. Разрабатывается функциональная
спецификация ПО: выбирается архитектура системы, оговариваются требования к
аппаратному обеспечению, определяется набор орг. мероприятий, которые
необходимы для внедрения ПО, а также перечень документов, регламентирующих
его использование. Реализация Данный этап разработки программного
обеспечения организован в соответствии с моделями эволюционного типа
жизненного цикла ПО. При разработке применяются экспериментирование и
анализ, строятся прототипы, как целой системы, так и ее частей. Прототипы дают
возможность глубже вникнуть в проблему и принять все необходимые проектные
решения еще на ранних этапах проектирования. Такие решения могут затрагивать
разные части системы: внутреннюю организацию, пользовательский интерфейс,
разграничение доступа и т.д. В результата этапа реализации появляется рабочая
версия продукта. Тестирование продукта Тестирование тесно связано с такими
этапами разработки программного обеспечения как проектирование и реализация.
В систему встраиваются специальные механизмы, которые дают возможность
производить тестирование системы на соответствие требований к ней, проверку
оформления и наличие необходимого пакета документации. Результатом
тестирования является устранение всех недостатков системы и заключение о ее
качестве. Внедрение и поддержка Внедрения системы обычно предусматривает
следующие шаги: установка системы, обучение пользователей, эксплуатация. К
любой разработке прилагается полный пакет документации, который включает в
себя описание системы, руководства пользователей и алгоритмы работы.
Поддержка функционирования ПО должна осуществляться группой технической
поддержки разработчика.

3 Назовите известные Вам модели разработки процесса ПО?


1. Waterfall 2. V-Model 3. Incremental 4. RAD 5. Agile 6. Iterative 7. Spiral
Объектно-ориентированное программирование - методология программирования,
основанная на представлении программы в виде совокупности объектов, каждый
из которых является экземпляром определенного класса, а классы образуют
иерархию наследования Функциональное программирование - способ организации
вычислений без состояния Протокол-ориентированное программирование -
наследование зло и пережиток прошлого, один из новых трендов - протоколы. Не
нужно создавать наследника наследника наследника наследника одного base-
класса, нужно создать протоколы, которые являеются расширяемыми - можно
добавлять к протоколам методы и переменные. Императивное программирование
В этой парадигме вычисления описываются в виде инструкций, шаг за шагом
изменяющих состояние программы. В низкоуровневых языках (таких как язык
ассемблера) состоянием могут быть память, регистры и флаги, а инструкциями —
те команды, что поддерживает целевой процессор. В более высокоуровневых
(таких как Си) состояние — это только память, инструкции могут быть сложнее и
вызывать выделение и освобождение памяти в процессе своей работы. В совсем
высокоуровневых (таких как Python, если на нем программировать императивно)
состояние ограничивается лишь переменными, а команды могут представлять
собой комплексные операции, которые на ассемблере занимали бы сотни строк.
Структурное программирование Эта парадигма вводит новые понятия,
объединяющие часто используемые шаблоны написания императивного кода. В
структурном программировании мы по прежнему оперируем состоянием и
инструкциями, однако вводится понятие составной инструкции (блока), инструкций
ветвления и цикла. Благодаря этим простым изменениям возможно отказаться от
оператора goto в большинстве случаев, что упрощает код. Иногда goto все-же
делает код читабельнее, благодаря чему он до сих пор широко используется,
несмотря на все заявления его противников. Процедурное программирование
Опять-же возрастающая сложность программного обеспечения заставила
программистов искать другие способы описывать вычисления. Собственно еще
раз были введены дополнительные понятия, которые позволили по-новому
взглянуть на программирование. Этим понятием на этот раз была процедура. В
результате возникла новая методология написания программ, которая
приветствуется и по сей день — исходная задача разбивается на меньшие (с
помощью процедур) и это происходит до тех пор, пока решение всех конкретных
процедур не окажется тривиальным. Процедура — самостоятельный участок кода,
который можно выполнить как одну инструкцию. В современном
программировании процедура может иметь несколько точек выхода (return в C-
подобных языках), несколько точек входа (с помощью yield в Python или
статических локальных переменных в C++), иметь аргументы, возвращать
значение как результат своего выполнения, быть перегруженной по количеству
или типу параметров и много чего еще.Модульное программирование Который раз
увеличивающаяся сложность программ заставила разработчиков разделять свой
код. На этот раз процедур было недостаточно и в этот раз было введено новое
понятие — модуль. Забегая вперед скажу, что модули тоже оказались неспособны
сдержать с невероятной скоростью растущую сложность ПО и в последствии
появились пакеты (это тоже модульное программирование), классы (это уже ООП),
шаблоны (обобщенное программирование). Программа описанная в стиле
модульного программирования — это набор модулей. Что внутри, классы,
императивный код или чистые функции — не важно. Благодаря модулям впервые
в программировании появилась серьезная инкапсуляция — возможно
использовать какие-либо сущности внутри модуля, но не показывать их внешнему
миру.

4 Назовите и кратко охарактеризуйте известные Вам парадигмы


программирования?
Императивная парадигма - В императивной (англ. imperative — приказ) парадигме
разработчик пишет для компьютера инструкции, которым тот следует.

Декларативная парадигма - В декларативной парадигме разработчик описывает


проблему и ожидаемый результат, но не пишет никаких инструкций. В
декларативном программировании отсутствуют переменные,
состояние и прочие понятия, которые свойственны императивной
парадигме. Является более «высокоуровневой» парадигмой.

5 Дайте характеристику императивной парадигме


программирования? Приведите примеры языков и технологий,
основанных на данной парадигме?

В императивной (англ. imperative — приказ) парадигме разработчик пишет для


компьютера инструкции, которым тот следует. Инструкции могут быть следующие:
•сложи два числа;
•если а, то сделай б, а иначе сделай в;
•отправь запрос на сервер;
•открой файл;
•выведи строку.
То есть программист говорит, что нужно сделать и в каком порядке, а компьютер
выполняет приказы.
Отличительная черта императивной парадигмы — понятие
состояния компьютера или программы.
Состояние — это совокупность всех данных в определённый
момент времени: переменных, массивов, счётчиков и так далее.
К императивной парадигме относятся следующие виды программирования:
•процедурное;
•структурное;
•аспектно-ориентированное;
•объектно-ориентированное и другие.
Java, С++, Python

6 Дайте характеристику декларативной парадигме


программирования? Приведите примеры языков и технологий,
основанных на данной парадигме?

Декларативная парадигма - В декларативной парадигме разработчик описывает


проблему и ожидаемый результат, но не пишет никаких инструкций.
В декларативном программировании отсутствуют переменные, состояние и прочие
понятия, которые свойственны императивной парадигме.
Является более «высокоуровневой» парадигмой.
К декларативной парадигме относятся
•функциональная (Lisp, Scala, Haskell, Clojure, F#, Erlang, Elexir)
•логическое программирование (Prolog).
Актуальными технологиями активно использующими декларативную
парадигму являются: Docker (и пр. технологии DevOps: TravisCI,
СircleCI, Drone и др.), SwiftUI и др.
Языки SQL, HTML

7 Назовите известные Вам методологии развёртывания ПО?

По типу архитектуры системы:


•Монолитная (локальные приложения)
•N-уровневая или распределённая
•клиент-сервер,
•тонкий клиент - сервер приложений - БД и т.д.
•микросервисная архитектура
•Одноранговая (P2P) (BitTorrent)

Модели хостинга и «облаков» :


•Software as a Service (SaaS)
(Dropbox, Office365, Evernote и т.д.)
•Infrastructure as a Service (IaaS)
(Amazon Web Services (AWS), Google Apps, Digital Ocean
и т.д.)
•Platform as a Service (PaaS)
(Hoster.by, Hostigator, GoDaddy, и т.д.)

По типу владения инфраструктурой:


•в собственном датацентре
•на стороннем оборудовании(в облаке)

8 Модели облачных сервисов SaaS, PaaS, IaaS? Сравнительный


анализ моделей?

Облачный сервис представляет под собой систему, обеспечивающую через


интернет-соединение удаленный доступ к программно-аппаратному комплексу,
включающему серверы, базы данных, хранилища и разнообразные приложения.
Стек облачных технологий состоит из трех частей, каждая из которых
представляет собой отдельный уровень предоставления вычислительных ресурсов:
- SaaS (Software As A Service) - программное обеспечение как сервис,
- PaaS (Platform As A Service ) - платформа как сервис,
- IaaS (Infrastructure As A Service) - инфраструктура как сервис.

На верхнем уровне располагается SaaS —


по сути, это облачные приложения, доступ к которым предоставляется через веб-
интерфейс. За ним следует PaaS — платформа для самостоятельной разработки и
развертывания приложений. На третьем уровне расположился IaaS — основной,
базисный уровень облачных решений, который включает в себя буквально всё:
серверную инфраструктуру, коммуникации, хранилища, весь необходимый для работы
софт.

Платформа как сервис (PaaS) потребуется тем, кто в своей работе должен пользоваться
различными программами, но не хочет тратить время на управление каждой из них. IaaS,
напротив, позволяет выбрать необходимое, оплатить использование и работать с тем
инструментарием, который действительно требуется. SaaS пригодится небольшим компаниям,
которые выполняют сложные вычисления, но не хотят оплачивать огромные платформы и
открывать у себя IT-отдел.

9 Характеристика облачной модели SaaS? Примеры сервисов,


построенных на основе данной модели?

SaaS (англ. Software-as-a-Service) – ПО как сервис, подразумевает использование


клиентом приложений, развернутых на платформе провайдера. В отличие от IaaS и PaaS,
клиентами модели обслуживания SaaS часто становятся частные лица, которые пользуются,
например, сервисом электронной почты, онлайн-кинотеатром, облачным хранилищем файлов
малого объема, мессенджером и т.д. Социальные сети также работают по модели SaaS.
Широко используется такой формат SaaS, как платформа для строительства сайтов. Иногда
поставщик такой услуги может предоставить своему заказчику не только необходимое для
создания сайта ПО, но и помочь разместить готовый сайт на хостинге.

Корпоративные клиенты SaaS-провайдеров используют приложения для


видеоконференций, ERP- и CRM-системы, системы автоматизации бизнес-процессов,
приложения для управления проектами и тайм-менеджменту, сервисы электронной почты и
т.д. Примеры SaaS-решений: Gmail, Livejournal, Jira, Confluence, Bitrix, WordPress, Citrix и др.

Стоимость решений SaaS варьирует в широком диапазоне: они могут


предоставляться как по подписке, так и по модели оплаты «по мере использования»
(pay-to-use), либо вообще бесплатно. При этом заказчик платит только за аренду ПО, и
не озадачивается проблемами лицензирования, апгрейда систем, техподдержкой и пр.
Благодаря этому SaaS-модель активно используется сегментом среднего и малого
бизнеса.

Преимущества SaaS-решений для компаний:


● доступность через интернет вне зависимости от времени и географического
положения;
● нет привязки к инфраструктуре, не нужно тратиться на специальный персонал,
апгрейды железа и апдейты ПО – всё это на стороне провайдера;
● доступна быстрая масштабируемость;
● разные уровни пользовательского доступа и разрешений;
● комплексное обслуживание и поддержка.

Наиболее известные примеры SaaS:


● Salesforce
● Service Now
● Google Workspace
● SAP
● Cisco WebEx
● 1С в облаке

10 Характеристика облачной модели PaaS? Примеры сервисов,


построенных на основе данной модели?

PaaS (англ. Platform-as-a-Service) – это сервисная модель, в которой провайдер


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

PaaS имеет некоторое сходство с IaaS, однако клиенты PaaS-провайдера могут


пользоваться средой, приложениями, но не имеют возможности масштабировать
инфраструктуру. То есть отключить неиспользуемые мощности или изменить конфигурацию
инстансов (как это делается в SIM-Cloud Dashboard, например), пользователь не может.
Разница между услугами IaaS и PaaS состоит в том, что в рамках модели «платформа-как-
сервис» вы получаете вычислительную платформу и стек решений, но никак не влияете на
конфигурацию виртуальной инфраструктуры.

Модель PaaS предоставляет «песочницу» и среду развертывания с


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

Преимущества PaaS-решений:
● провайдер PaaS-услуг берет на себя все обновления, исправления и текущее
обслуживание программного обеспечения;
● клиенту не требуется предварительных инвестиций в оборудование и программное
обеспечение – все необходимое предоставляет провайдер;
● гибкость при развертывании платформы: инфраструктура разработки, тестирования и
развертывания полностью управляется провайдером PaaS.

Наиболее известные примеры PaaS:


● AWS Elastic Beanstalk
● Windows Azure
● Google App Engine
● OpenShift

11 Характеристика облачной модели IaaS? Примеры сервисов,


построенных на основе данной модели?

IaaS (англ. Infrastructure-as-a-Service) – это основной, базисный уровень


облачных решений, который включает в себя буквально всё: серверную
инфраструктуру, коммуникации, хранилища, весь необходимый для работы софт.
С помощью виртуального интерфейса можно легко управлять конфигурацией
IaaS, добавлять предустановленное ПО и подключать дополнительные сервисы,
расширять при необходимости ресурсы. Например, увеличивать объем хранилища или
выбирать комбинацию “процессор + оперативная память”, которая больше
соответствует потребностям бизнеса на ближайшую перспективу. Если же нагрузка
невелика и виртуальные ресурсы не используются полностью, их можно на время
отключить или сократить – тогда за использование IaaS плата будет меньше.
Администрирование и мониторинг IaaS-системы реализуются просто и доступны
пользователю.

Наиболее известные примеры IaaS:


● Amazon Web Services (AWS)
● Cisco Metacloud
● Microsoft Azure
● Google Compute Engine (GCE)
12 Дайте определение понятию «язык программирования»? Виды
языков программирования, основные тенденции в развитии языков
программирования?
Язык программирования - формальная знаковая система для записи
компьютерных программ.
Основные тенденции:
●повышение безопасности и надёжности
●кроссплатформенность
Виды языков:
●Компилируемые (С, С++, Golang, Rust, Swift)
●Интерпретируемые (JavaScript, Python, Ruby, PHP)
●с промежуточным представлением (C#, Java, Kotlin)

13 Классификация языков программирования: компилируемые,


интепретируемые, с промежуточным представлением?
Виды языков:
●Компилируемые (С, С++, Golang, Rust, Swift)
●Интерпретируемые (JavaScript, Python, Ruby, PHP)
●с промежуточным представлением (C#, Java, Kotlin)
14 Что такое платформа? Приведите примеры известных
платформ?
Операцио́нная систе́ма, сокр. ОС (англ. operating system, OS) — комплекс
взаимосвязанных программ, предназначенных для управления ресурсами
компьютера и организации взаимодействия с пользователем.
Архитекту́ра проце́ссора — количественная составляющая компонентов
микроархитектуры вычислительной машины, рассматриваемая IT-специалистами в
аспекте прикладной деятельности. С точки зрения: программиста —
совместимость с определённым набором команд, их структуры и способа
исполнения
Платформа – ОС + архитектура процессора.
Примеры:
Windows+X86-64; Linux+X86-64; OsX+X86-64; Android+ARM; iOS +ARM;
WinMobile+ARM; Linux+ARM; MacOS+PowerPC.

15 Дайте характеристику языку Python по следующим критериям:


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

16 Дайте краткую характеристику языку и платформе Java?


Программная платформа Java — это имя для пакета программ компании Sun,
которые позволяют разрабатывать и запускать программы, написанные на языке
программирования Java. Эта программная платформа не является специфической
для какого-либо одного процессора или операционной системы, но механизм
выполнения (называемый виртуальной машиной) и компилятор с набором
библиотек, которые реализованы для различного аппаратного обеспечения и
различных операционных систем, чтобы Java-программы могли работать везде
одинаково.
Java - объектно-ориентированный язык программирования общего назначения. В
языке присутствует статическая строгая явная типизация, автоматическая сборка
мусора, безопасность (ввиду использования виртуальной машины JVM,
контролирующей полномочия программы).
Приложения Java обычно транслируются в специальный байт-код, поэтому они
могут работать на любой компьютерной архитектуре, для которой существует
реализация виртуальной Java-машины
17 Что такое JVM? Что такое байт-код? Что такое «сборщик мусора»
Программы на Java транслируются в байт-код Java, выполняемый виртуальной
машиной Java (JVM) — программой, обрабатывающей байтовый код и
передающей инструкции оборудованию как интерпретатор.
Байт-код Java — набор инструкций, исполняемых виртуальной машиной Java.
Каждый код операции байт-кода — один байт. Используются не все 256
возможных значений кодов операций. 51 из них зарезервированы для
использования в будущем.
Виртуальная машина Java исполняет байт-код Java, предварительно созданный из
исходного текста Java-программы компилятором Java (javac). JVM может также
использоваться для выполнения программ, написанных на других языках
программирования.
Сборщик мусора (англ. garbage collector) — один из механизмов автоматического
управления памятью. Сборщик мусора периодически освобождает память, удаляя
объекты, которые уже не будут востребованы приложениями.

18 Проведите сравнительный анализ языков программирования С+


+, Java, Python, Go?
Сравнительный анализ представлен в таблице. В строках сверху вниз указаны
параметры: “Типизация”, “Управление ресурсами”, “Переносимость”, “Область
применения”.
19 Дайте определение понятию «система контроля версий»? Виды
систем контроля версий и Виды систем контроля версий и их
особенности?
Система контроля версий (СКВ) — это система, регистрирующая изменения в
одном или нескольких файлах с тем, чтобы в дальнейшем была возможность
вернуться к определённым старым версиям этих файлов.
Есть три вида систем контроля версий:
1. Локальные
2. Централизованные
3. Распределенные
Локальные системы контроля версий
Многие предпочитают контролировать версии, просто копируя файлы в другой
каталог (как правило добавляя текущую дату к названию каталога). Такой подход
очень распространен, потому что прост, но он и чаще даёт сбои. Очень легко
забыть, что ты не в том каталоге, и случайно изменить не тот файл, либо
скопировать файлы не туда, куда хотел, и затереть нужные файлы.
Пример утилиты для работы с локальной СКВ основан на работе с наборами
патчей между парами версий (патч — файл, описывающий различие между
файлами), которые хранятся в специальном формате на диске. Это позволяет
пересоздать любой файл на любой момент времени, последовательно
накладывая патчи.
Централизованные системы контроля версий
Следующей основной проблемой оказалась необходимость сотрудничать с
разработчиками за другими компьютерами. Чтобы решить её, были созданы
централизованные системы контроля версий (ЦСКВ). В таких системах, например
CVS, Subversion и Perforce, есть центральный сервер, на котором хранятся все
файлы под версионным контролем, и ряд клиентов, которые получают копии
файлов из него. Много лет это было стандартом для систем контроля версий
Распределённые системы контроля версий
В таких системах как Git, Mercurial, Bazaar или Darcs клиенты не просто выгружают
последние версии файлов, а полностью копируют весь репозиторий. Поэтому в
случае, когда "умирает" сервер, через который шла работа, любой клиентский
репозиторий может быть скопирован обратно на сервер, чтобы восстановить базу
данных. Каждый раз, когда клиент забирает свежую версию файлов, он создаёт
себе полную копию всех данных

20 Стандартный рабочий поток (Git workflow)? Основные команды


Git: git init, git add, git commit, git push, git pull, git clone?
Стандартный рабочий процесс с использованием Git'а выглядит примерно так:
Вы вносите изменения в файлы в своём рабочем каталоге.
Подготавливаете файлы, добавляя их слепки в область подготовленных файлов.
Делаете коммит, который берёт подготовленные файлы из индекса и помещает их
в каталог Git'а на постоянное хранение.
git init - Создание репозитория в существующем каталоге
Эта команда создаёт в текущем каталоге новый подкаталог с именем .git
содержащий все необходимые файлы репозитория — основу Git-репозитория. На
этом этапе ваш проект ещё не находится под версионным контролем.
git add - индексация файлов / Отслеживание новых файлов
Когда вы осуществляете команду git add file, вы говорите, что git надо отметить
текущее состояние файла, коммит которого будет произведен позже.
git add - проиндексировать все файлы проекта
git clone - получить копию существующего репозитория Git
Клонирование репозитория осуществляется командой git clone [url].
git commit - Фиксация изменений
Коммит сохраняет снимок состояния вашего индекса. Всё, что вы не
проиндексировали, так и торчит в рабочем каталоге как изменённое; вы можете
сделать ещё один коммит, чтобы добавить эти изменения в репозиторий. Каждый
раз, когда вы делаете коммит, вы сохраняете снимок состояния вашего проекта,
который позже вы
можете восстановить или с которым можно сравнить текущее состояние.
git push - отправка изменений на сервер
Когда вы хотите поделиться своими наработками, вам необходимо отправить
(push) их в главный репозиторий. Команда для этого действия: git push [удал.
сервер][ветка]
git pull - получений изменений с сервера (git push наоборот)

21 Дайте определение понятиям «Интернет» и «Веб»? В чем


разница?
Интернет – глобальная сеть передачи данных.
WWW — набор взаимосвязанных документов располагающихся на машина
подключенных к сети Internet.
WWW — сервис, позволяющий посредствам протоколов HTTP/HTTPS, серверного
и клиентского ПО получить доступ к данным документам.
Для лучшего понимания различий между данными понятиями, можно прибегнуть к
следующей аналогии:
сеть Интернет => транспортные сети, инфраструктура:
•дороги,
•перекрёстки,
•мосты,
•светофоры, разметка
и т.д
WWW => транспортные сервисы,услуги:
•такси,
•общественный транспорт,
•грузовые перевозки,
•личный транспорт,
•каршеринг
•и т.д.

22 Объясните, что такое модель OSI? Стек протоколов TCP/IP?


Кратко поясните процесс межпрограммного взаимодействия на
основе данной модели?
Модель Взаимосвязи Открытых Систем (OSI), определявшую стандарты связи
компьютеров от разных производителей. Модель OSI была подразделена на 7
уровней.
7ой — уровень: Приложение > Сервисы
6ой — уровень: Представление > Сервисы
5ый — уровень: Сессия > Связь
4ый — уровень: Транспортный > Связь
3ий — уровень: Сетевой > Связь
2ой — уровень: Данные > Физические соединения
1ый — уровень: Физический > Физические соединения
Сетевая модель OSI разработана таким образом, чтобы вышестоящие уровни
сетевой модели использовали нижестоящие уровни сетевой модели, для передачи
своей информации. Правила, с помощью которых общаются уровни модели,
называются сетевыми протоколами. Сетевой протокол определенного уровня
модели может общаться либо с протоколами своего уровня, либо с протоколами
соседних уровней. Здесь опять же можно провести аналогию с работой компании.
В компании всегда есть четко установленная иерархия, хотя и не такая строгая как
в сетевой модели. Работники одной ступени иерархии выполняют поручения,
полученные от работников более высокого уровня иерархии.
Прикладной уровень
Прикладной уровень является точкой, через которую приложения общаются с
сетью (точка входа в модель OSI). С помощью данного уровня модели OSI
выполняются следующие задачи: управление сетью, управление занятостью
системы, управление передачей файлов, идентификация пользователей по их
паролям. Примерами протоколов данного уровня являются: HTTP, SMTP, RDP и
д.р. Очень часто протоколы прикладного уровня выполняют одновременно
функции протоколов представительского и сеансового уровней.
Представительский уровень
Данный уровень отвечает за формат представления данных. Грубо говоря, он
преобразует данные полученные от уровня приложений к формату пригодному для
передачи по сети (ну и соответственно выполняет обратную операцию преобразуя
информацию, полученную из сети, к формату пригодному для обработки
приложениями).
Сеансовый уровень
На данном уровне происходит установление, поддержание и управление сеансом
связи между двумя системами. Именно данный уровень отвечает за поддержание
связи между системами на весь промежуток времени в течение которого
происходит их взаимодействие.
Транспортный уровень
Протоколы данного уровня сетевой модели OSI отвечают за передачу данных от
одной системы другой. На данном уровне большие блоки данных разделяются на
более мелкие блоки, пригодные для обработки сетевым уровнем (очень мелкие
блоки данных объединяются в более крупные), данные блоки соответствующим
образом маркируются для их последующего восстановления на принимающей
стороне. Так же при использовании соответствующих протоколов данный уровень
способен обеспечить контроль доставки пакетов сетевого уровня. Блок данных,
которым оперируют данный уровень обычно называется сегментом. Примерами
протоколов данного уровня являются: TCP, UDP, SPX, ATP и д.р.
Сетевой уровень
Данный уровень отвечает за маршрутизацию (определение оптимальных
маршрутов от одной системы до другой) блоков данных данного уровня. Блок
данных этого уровня обычно называется пакетом. Так же данный уровень отвечает
за логическую адресацию систем (те самые IP адреса), на основе которой как раз и
происходит маршрутизация. К протоколам данного уровня можно отнести: IP, IPX и
др, к устройствам работающим на данном уровне – маршрутизаторы.

Канальный уровень
Данный уровень отвечает за физическую адресацию устройств сети (MAC адреса),
управлением доступа к среде, а также коррекцией ошибок допущенных
физическим уровнем. Блок данных, используемый на канальном уровне принято
называть фреймом. К данному уровню относятся следующие устройства:
коммутаторы (не все), мосты и д.р. Типичной технологией использующей данный
уровень является Ethernet.
Физический уровень
Осуществляет передачу оптических или электрических импульсов по выбранной
среде передачи. К устройствам данного уровня можно отнести всевозможные
повторители и концентраторы.

23 Понятие гипертекста? Что такое URL и их каких частей он


состоит?
В компьютерной терминологии гипертекст — это текст, сформированный с
помощью языка разметки (например, HTML) с расчетом на использование
гиперссылок.
Унифицированный указатель ресурса (Uniform Resource Locator - URL) --
унифицированный адрес электронного ресурса по которому можно однозначно
определить местонахождения ресурса и способ доступа к нему.
Все URL подразделяются на:
● абсолютные (включающие местоположения ресурса)
● относительные (относительно текущего местоположения - сайта)
Структура URL:
В самом распространенном случае использования в интернете URL имеет
следующую структуру:
{протокол} :// {доменное имя сайта?} / {URL-путь} ? {параметры} # якорь
Где «якорь» — это указатель для перемещения в пределах текущей страницы к
заранее установленному флагу.

24 Дайте характеристику и приведите примеры применения


различных моделей взаимодействия распределенных систем:
ведущий-ведомый (master-slave), клиент-сервер (двух-, трех-
уровневая, N-уровневая), одноранговая (peer-2-peer)?
Модели взаимодействия распределенных систем:
● ведущий-ведомый (master - slave). В этом паттерне участвует две стороны —
ведущий и ведомые. Ведущий распределяет работу среди идентичных
ведомых и агрегирует возвращаемые результаты. Примеры: При репликации
БД ведущая база данных рассматривается как главная, а ведомые базы
синхронизируются с ней.
● клиент-серверная (одно-, двух-, трехуровневые). В этом паттерне участвует две
стороны — один сервер и несколько клиентов. Клиенты делают запросы к
серверу, а сервер их обслуживает и продолжает ждать новых запросов.
Примеры: любые онлайновые приложения. Многоуровневая архитектура
«клиент — сервер» — разновидность архитектуры «клиент — сервер», в
которой функция обработки данных вынесена на несколько отдельных
серверов. Это позволяет разделить функции хранения, обработки и
представления данных для более эффективного использования возможностей
серверов и клиентов.
● одноранговая (peer-2-peer). Отдельные компоненты в терминах этого паттерна
называются пирами. Особенность пиров в том, что они могут выступать как
клиентами, получающими услуги, так и серверами, обслуживающими другие
пиры. Пир может менять свою роль динамически или просто выполнять обе
роли одновременно. Примеры: Torrent, Blockchain и т.д.

25 Протокол HTTP? Структура заголовков запроса и ответа по


протоколу HTTP? Особенности методов GET и POST протокола
HTTP?
HTTP (HyperText Transfer Protocol) — распространённый протокол передачи
данных, изначально предназначенный для передачи гипертекстовых документов
(то есть документов, которые могут содержать ссылки, позволяющие организовать
переход к другим документам).
HTTP является протоколом прикладного (верхнего, 7-го) уровня. Актуальная на
данный момент версия протокола, HTTP 1.1
Общение между хостом и клиентом происходит в два этапа: запрос и ответ.
Клиент формирует HTTP запрос, в ответ на который сервер даёт ответ
(сообщение).
Структура запроса:
1. Строка запроса – указывает метод передачи, URL-адрес, к которому нужно
обратиться и версию протокола HTTP.
2. Заголовки – описывают тело сообщений, передают различные параметры и др.
сведения и информацию.
3. Тело сообщения — это сами данные, которые передаются в запросе. Тело
сообщения – это необязательный параметр и может отсутствовать.
Существующие методы:
GET: получить доступ к существующему ресурсу. В URL перечислена вся
необходимая информация, чтобы сервер смог найти и вернуть в качестве ответа
искомый ресурс.
POST: используется для создания нового ресурса. POST запрос обычно содержит
в себе всю нужную информацию для создания нового ресурса.

26 Отличительные особенности протокола HTTP/2?


В мае 2015 года был утвержден HTTP/2. На сегодняшний день поддерживается
более чем 60% браузеров.
Стандарт HTTP/2 основан на протоколе SPDY, разработанном компанией Google.
Основные особенности HTTP/2 аналогичны SPDY:
- HTTP/2 бинарный, а не текстовый протокол, что делает его компактнее и
эффективнее.
- В HTTP/2 используется только одно мультиплексирующее соединение до хоста,
вместо множества соединений передающих по одному файлу.
- В HTTP/2 используется сжатие заголовков специализированным протоколом
HPACK (вместо gzip, который использовался в SPDY).
- В HTTP/2 применяется сложный механизм приоритезации, чтобы отдавать
браузерам наиболее необходимые файлы в первую очередь (в SPDY
использовался более простой алгоритм).
Пять основных потенциальных преимуществ от использования HTTP/2:
1. Используется только одно соединение с сервером вместо множества
соединений, передающих по одному файлу. Другими словами, уменьшается
количество соединений, что особенно полезно при использовании TLS.
2. Эффективное использование TLS. HTTP/2 делает только один TLS хэндшейк, а
мультиплексирование позволяет эффективно использовать это соединение.
HTTP/2 также сжимает данные заголовка, а устранение HTTP/1.x оптимизаций
(таких как конкатенация файлов) позволяет алгоритму кэширования работать
более эффективно.
3. Упрощение веб-приложений. При использовании HTTP/2 можно избавиться от
HTTP/1.x оптимизаций, которые доставляют лишние неудобства и разработчикам.
4. Отлично подходит для сложных веб-страниц. HTTP/2 отлично подходит для веб-
страниц, которые одновременно используют HTML, CSS, JavaScript, картинки и
видеоролики. Браузеры могут приоритезировать запросы к файлам, чтобы
наиболее необходимые части страницы присылались в первую очередь.
5. Безопасность соединения. Хотя при использовании HTTP/2 может произойти
потеря производительности из-за использования TLS, но в то же время TLS
сделает веб-приложения более безопасными для пользователей.
И пять соответствующих недостатков, с которыми можно столкнуться:
1. Большие затраты для одного соединения. Алгоритм сжатия данных HPACK
требует поддержки таблицы преобразования на обоих концах. Также для одного
соединения требуется больше памяти.
2. Возможно использование TLS избыточно. Если передаваемая информация не
нуждается в защите или уже защищена с помощью DRM (или другого
шифрования), то в этом случае TLS вряд ли будет полезен.
3. Поиск и удаление существующих HTTP/1.x оптимизаций необходимы для
увеличения производительности HTTP/2, что является дополнительной работой.
4. Не дает преимуществ при загрузке больших файлов. Если веб-приложение в
основном рассчитано на загрузку больших файлов или видеостриминг, то, скорее
всего, использование TLS будет ошибочно, а мультиплексирование не принесет
никакой пользы.
5. Безопасность не важна. Возможно посетителям не важно, что видео с котиками,
которыми они делятся на вашем сайте, не защищено TLS и HTTP/2 (что может
быть верно).
27 Отличительные особенности статических и динамических
сайтов?
Статические сайты состоят из неизменяемых страниц. Это значит, что сайт имеет
один и тот же внешний вид, а также одно и то же наполнение для всех
посетителей. При запросе такого сайта в браузере сервер сразу предоставляет
готовый HTML-документ в исходном виде, в котором он и был создан. Кроме
HTML, в коде таких страниц используется разве что CSS и JavaScript, что
обеспечивает их легкость и быструю загрузку.
Чаще всего статическими бывают сайты с минимальным количеством страниц или
с контентом, который не нужно регулярно обновлять, а именно сайты-визитки,
каталоги продукции, справочники технической документации. Однако с помощью
сторонних инструментов существует возможность добавить на такие страницы
отдельные динамические элементы (комментарии, личный кабинет для
пользователей, поиск).
Динамические сайты, в свою очередь, имеют изменяемые страницы,
адаптирующиеся под конкретного пользователя. Такие страницы не размещены на
сервере в готовом виде, а собираются заново по каждому новому запросу.
Сначала сервер находит нужный документ и отправляет его интерпретатору,
который выполняет код из HTML-документа и сверяется с файлами и базой
данных. После этого документ возвращается на сервер и затем отображается в
браузере. Для интерпретации страниц на серверной стороне используются языки
программирования Java, PHP, ASP и другие.
Самыми яркими примерами динамических сайтов являются страницы, созданные
на основе систем управления контентом (CMS). Среди них чаще всего
встречаются интернет-магазины, а также форумы, страницы с отзывами и другие
ресурсы с возможностью размещения контента посетителями.

28 Понятие электронного документа? Четыре аспекта электронного


документа: содержание, структура, стиль, поведение?
По современным представлениям электронный документ – это некоторая
информационная сущность, у которой можно выделить четыре аспекта:
содержание, структуру, стиль, поведение. Содержание определяет
информационное наполнение документа, его ценность как источника информации.
Структура определяет элементы содержания (абзац, список, таблица, раздел,
картинка, объект) и связи между ними (предок - потомок, целое - часть). Стиль
задаёт внешнее оформление документа (цвет, гарнитуру и размер шрифта,
графические эффекты, выравнивание абзацев). Поведение определяет реакцию
документа на события, инициируемые пользователем (нажатие клавиш
клавиатуры и мыши, наведение мыши, перемещение фокуса ввода) и программой
просмотра (начало или окончание загрузки документа, переход к другому
документу).
29 Понятие языка разметки HTML? Что такое тэг, элемент, 0-
элемент? Атрибуты id и class HTML-элементов?
HTML (HyperText Markup Language) - язык разметки гипертекста - предназначен
для создания Web-страниц.
Под гипертекстом в этом случае понимается текст, связанный с другими текстами
указателями-ссылками.
HTML не задает конкретные и точные атрибуты форматирования документа.
Конкретный вид документа окончательно определяет только программа-браузер
на компьютере пользователя Интернета.
HTML также не является языком программирования, но web-страницы могут
включать в себя встроенные программы-скрипты на языках Javascript и Visual
Basic Script и программы-апплеты на языке Java.
Тег HTML это компонент, который командует Web-браузеру выполнить
определенную задачу типа создания абзаца или вставки изображения.
Элемент включает в себя как бы сумму двух тегов (открывающего и
закрывающего) и всё содержимое между ними.
Атрибут class определяет один или несколько имен классов для HTML
элемента. В основном атрибут class используется для указания на класс в
каскадной таблице стилей. Тем не менее, он также может использоваться
скриптами JavaScript для манипулирования (посредством HTML DOM) элементами
HTML с заданным классом.
Атрибут id определяет уникальный идентификатор HTML элемента (его
значение должно быть уникально для всего HTML документа). Чаще всего атрибут
id используется в качестве селектора для определения стиля элемента в
каскадной таблице стилей (CSS), а также в скриптах JavaScript для
манипулирования элементом с определенным идентификатором.

30 Блочные и встраиваемые элементы? Типовая структура HTML-


документа?
Элемент уровня блока всегда начинается на новой строке и занимает всю
имеющуюся ширину (растягивается влево и вправо, насколько это возможно)
(Примеры: <address> <article> <aside> <blockquote> <canvas> <dd> <div> <dl> <dt>
<fieldset> <figcaption> <figure> <footer> <form> <h1>-<h6> <header> <hr> <li> <main>
<nav> <noscript> <ol> <output> <p> <pre> <section> <table> <tfoot> <ul> <video>).
Встроенный элемент не запускается на новой строке и занимает столько ширины,
сколько необходимо. (Примеры: <a> <abbr> <acronym> <b> <bdo> <big> <br>
<button> <cite> <code> <dfn> <em> <i> <img> <input> <kbd> <label> <map> <object>
<q> <samp> <script> <select> <small> <span> <strong> <sub> <sup> <textarea>
<time> <tt> <var>)
Типовая структура HTML-документа:
1. Заголовок <head>. Внутри могут размещаться следующие теги:
● TITLE (заглавие документа);
● BASE (база URL);
● ISINDEX (поисковый шаблон);
● META (метаинформация);
● LINK (общие ссылки);
● STYLE (описатели стилей);
● SCRIPT (скрипты).

2. Тело страницы <body>. Здесь размещается непосредственно содержимое


документа

Весь HTML-документ заключается в тег <html>.

31 Понятие кодировки текста? Особенности стандартов кодировки


ASCII и Unicode(для форматов кодирования UTF-8, UTF-16, UTF-32)?
•Кодировка символов – это способ перевода символов (таких как буквы, знаки
пунктуации, служебные знаки, пробелы и контрольные символы) в целые числа
и затем непосредственно в биты. Каждый символ может быть закодирован
уникальным двоичным кодом.
•Существует
большое {1,2,3,..15}, Windows-125{0,1,2,..8}, KOI8-{R,U,…}, CP{932,949,..XXX}, UTF-
{8,16,32} и др.
•Самыми распространёнными являются: ASCII, UTF-8, UTF-16, UTF-32.
•Каждому символу соответствует кодовая точка, которую можно рассматривать
просто как целое число (в различных системах счисления онa может записывать
по разному).
ASCII
Изначально (1963 год) ASCII была разработана для кодирования символов, коды
которых помещались в 7 бит (128 символов; 27=128), а старший бит №7
(нумерация с нуля) использовался для контроля ошибок, возникших при
передаче данных.
•То, что ASCII-таблица использует 7 бит из доступных 8, означает, что память
вычислительного устройства, занятого строками символов ASCII, наполовину
пуста. Пример: Вы можете выразить числа от 0 до 3 всего двумя битами, от 00 до
11, или использовать 8 бит, чтобы выразить их как 00000000, 00000001, 00000010
и 11 Самая большая кодовая точка ASCII, 127, требует только 7 значимых бит.
>>> make_bitseq("bits") '01100010 01101001 01110100 01110011'
•Неэффективное использование восьмибитной структуры памяти современных
вычислительных устройств привело к появлению неструктурированного
семейства конфликтующих кодировок, задействующих оставшуюся незанятой
половину кодовых точек, доступных в одном байте (например один из вариантов
«расширенной ASCII»с задействованным 8-м битом семейство кодировок KOI8).
•Несмотря на попытку задействовать дополнительный бит, эти конфликтующие
кодировки не могли отобразить все возможные символы, используемые
человечеством в письменности.
•Со временем появилась одна большая схема кодировки, которая объединила их
и получила название Unicode.

Unicode != UTF
•Юникод (англ. Unicode) — стандарт кодирования символов, включающий в себя
знаки почти всех письменных языков мира. В настоящее время стандарт является
преобладающим в Интернете. Юникод служит тем же целям, что и ASCII, но
содержит намного больший набор кодовых точек.
•Стандарт состоит из двух основных частей: универсального набора (таблицы)
символов (Universal character set, UCS) и семейства (схемы) кодировок (Unicode
transformation format, UTF). Unicode = UCS + UTF
• Универсальный набор (таблица) символов перечисляет допустимые по стандарту
Юникод символы и присваивает каждому символу код в виде неотрицательного
целого числа, записываемого обычно в шестнадцатеричной форме с префиксом
U+, например, U+040F. [https://unicode-table.com]
•Семейство (cхема, формат) кодировок определяет способы преобразования
кодов символов для передачи в потоке или в файле: UTF-8, UTF-16, UTF-32.

•Стандарт Юникод определяет три формы (схемы, формата) кодирования,


которые позволяют передавать одни и те же данные: это байт, слово и двойное
слово (то есть 8, 16 или 32 бит на единицу кода). Все три формы кодируют один и
тот же
общий набор (таблицу) символов и могут быть эффективно преобразованы друг в
друга без потери
данных.
•UTF-8 популярен для HTML и подобных протоколов. UTF-8 — это способ
преобразования всех символов Юникода в кодировку переменной байтовой длины
(от 1 до 4 байт). Его преимущество в том, что символы Юникода, соответствующие
знакомому набору ASCII, имеют те же байтовые значения, что и ASCII, а символы
Юникода, преобразованные в UTF-8, могут использоваться с большим
количеством
существующего программного обеспечения без серьёзной доработки ПО.
•UTF-16 популярен во многих средах, где необходимо сбалансировать
эффективный доступ к символам с экономичным хранением. Он достаточно
компактен, и все часто используемые символы помещаются в один 16-битный
кодовый блок, в то
время как все остальные символы доступны через пары 16-битных кодовых блоков
(2 или 4 байта).
•UTF-32 полезен там, где объём памяти не вызывает беспокойства, но требуется
доступ к символам по единому коду фиксированной ширины (всегда 4 байта).
Здесь каждый символ Юникода кодируется в одном 32-разрядном кодовом блоке.
Вывод: Если у вас есть строка в памяти, в файле или в сообщении электронной
почты, вы должны знать, в какой она кодировке, иначе вы не сможете ее
интерпретировать или правильно отобразить для пользователей! [Joel Spolsky,
The Absolute Minimum Every Software Developer Must Know About Unicode… ]
32 Основные тэги раздела заголовка HTML-документа? Способы
подключения файлов стилей и скриптов, а также др. внешних
зависимостей?
Атомарной единицей разметки HTML-документа являются тег, имеющий имя,
которым он идентифицируется. Тег (tag) – это элемент разметки, который
представляет собой текст, заключенный в угловые скобки < >. Теги управляют
отображением информации но при этом сами не выводятся на экран. Теги бывают
одиночными, открывающими и закрывающими:
Пара из открывающего и закрывающего тега называется элементом (или
контейнером).
Элемент = <откр. тег> отображаемое содержимое </закр. тег> (напр: <P>)
Одиночный тег или “0-элемент” = <откр. тег> (напр: <BR>)
Тег может описывать сложный фрагмент структуры, и для определения его
параметров используются атрибуты, имеющие имя и значение, в виде строки
в кавычках: <имя_тега имя_атрибута = "значение атрибута">
У некоторых атрибутов значение отсутствует.
Корневыми тегами документа являются:
•html – корневой тег документа (иногда указывается атрибут lang=“en” )
•head – заголовок страницы (пользователю не отображается)
•body – тело страницы (отображается пользователю)
Общее правило: Скрипты, который должны быть выполенны ДО
отображения страницы помещаем в элемент <head>, ПОСЛЕ в <body>

33 Технология каскадных таблиц стилей CSS? Предпосылки


появления? Типы селекторов, понятие классов и псевдоклассов в
СSS 3?
CSS (англ. Cascading Style Sheets — каскадные таблицы стилей) —
технология описания внешнего вида документа, оформленного языком
разметки.
Каскадные таблицы стилей (Cascading Style Sheets, CSS) — это стандарт,
определяющий представление данных в браузере. Если HTML
предоставляет информацию о структуре документа, то таблицы стилей
сообщают как он должен выглядеть.

Каскадные таблицы стилей используются создателями веб-страниц для


задания цветов, шрифтов, расположения и других аспектов представления
веб-документа. Основной целью разработки CSS являлось разделение
содержимого и оформления документа (написанного на CSS). Кроме того,
CSS позволяет представлять один и тот же документ в различных стилях
или методах вывода, таких как экранное представление, печать, чтение
голосом.
Селекторы представляют структуру веб-страницы. С их помощью
создаются правила для форматирования элементов веб-страницы.
Селекторами могут быть элементы, их классы и идентификаторы, а также
псевдоклассы и псевдоэлементы.
Типы селекторов:
1.Универсальный селектор. Соответствует любому HTML-элементу.
Например, * {margin: 0;} обнулит внешние отступы для всех элементов
сайта
2.Селектор элемента. Селекторы элементов позволяют форматировать все
элементы данного типа на всех страницах сайта.
3.Селектор класса. Селекторы класса позволяют задавать стили для одного
и более элементов с одинаковым именем класса, размещенных в разных
местах страницы или на разных страницах сайта.
4. Селектор идентификатора. Селектор идентификатора позволяет
форматировать один конкретный элемент. Значение id должно быть
уникальным, на одной странице может встречаться только один раз и
должно содержать хотя бы один символ. Значение не должно содержать
пробелов.
5. Селектор потомка. Селекторы потомков применяют стили к элементам,
расположенным внутри элемента-контейнера.
6.Селектор атрибута. Селекторы атрибутов выбирают элементы на основе
имени атрибута или значения атрибута
7.Селектор псевдокласса

Псевдоклассы — это классы, фактически не прикрепленные к HTML-


тегам. Они позволяют применить CSS-правила к элементам при
совершении события или подчиняющимся определенному правилу.
Псевдоклассы характеризуют элементы со следующими свойствами:

● :link — не посещенная ссылка;


● :visited — посещенная ссылка;
● :hover — любой элемент, по которому проводят курсором мыши.
● :active — элемент, который был активизирован пользователем;
● :valid — поля формы, содержимое которых прошло проверку в
браузере на соответствие указанному типу данных;
● :invalid — поля формы, содержимое которых не соответствует
указанному типу данных;
● :enabled — все активные поля форм; и др.

34 Модель клиент-серверного взаимодействия с генерацией


контента на стороне сервера (серверной шаблонизацией) и на
стороне клиента (клиентской шаблонизацией)?
1. Клиентская шаблонизация с json rest api
Достаем из базы данные => отдаем их на клиент в json/xml => разбираем данные на
клиенте, создавая объекты по клиентским моделям => добавляем каждую полученную
модель в DOM.
плюсы:
● пользователь ждет только нужные ему данные
● в процессе загрузки данных можем показать красивый прелоадер
минусы:
● дублируем модели
● лишний раз напрягаем клиентский браузер шаблонизацией
2. Смешанная шаблонизация
Достаем из базы данные => создаем из них html код => отдаем на клиент html => на
клиенте просто помещаем полученный html в DOM.
плюсы:
● первых два из пункта выше
● не дублируем модели
● поддержка большинством серверных фреймворков.
минусы:
● во-первых, возможности разметки в таком режиме получаются "обрезанными" -
в частности, многие способы вставки HTML-кода в документ не запускают
скрипты;
● во-вторых, страница, изготовленная из кучи надерганных кусков обычно
является кошмаром верстальщика - совершенно не понятно в каком вообще
файле надо искать нужный кусок верстки;
● в-третьих, постоянное дерганье innerHTML негативно сказывается на
производительности;
● в-четвертых, такое решение обычно требует больше трафика чем оба
альтернативных.
3. Классическая серверная шаблонизация
Выбираем данные из базы => на сервере это все дело делаем в html, но не кусочек
страницы, а всю страницу целиком => отдаем на клиент заново всю страницу.
плюсы:
● не дублируем модели
минусы:
● перерисовываем все то, что у пользователя уже было и все вытекающие по
типу отсутствия прелоадеров, пустой белой страницы и так далее
35 Технология AJAX? Предпосылки появления? Синхронная и
асинхронная модель передачи данных?

Ajax (аббревиатура от Asynchronous JavaScript and XML, асинхронный


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

Пользователь заходит на страничку, сделанную при помощи Аякса, и


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

Технология Ajax является асинхронной, т.е. дает возможность выполнения


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

36 Форматы передачи данных между веб-сервисами: XML и JSON?


JSON и XML используются для получения и отправки данных с веб-сервера.

JSON (англ. JavaScript Object Notation) — простой формат обмена данными,


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

Синтаксические правила JSON

· Данные указываются в парах имя / значение, разделяемые


двоеточием «firstName»:«Lev»

· Данные разделяются запятыми «firstName»:«Anna»,


«lastName»:

«Karenina»
· Фигурные скобки удерживают объекты
{«firstName»:«Lev»,«lastName»:«Tolstoy»},

· Квадратные скобки содержат массивы

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

· Меньше слов больше дела

XML требует открытия и закрытия тегов, а JSON использует пары имя /


значение, четко обозначенные «{«и»}» для объектов, «[«и»]» для массивов, «,»
(запятую) для разделения пары и «:»(двоеточие) для отделения имени от
значения.

· Размер имеет значение

При одинаковом объеме информации JSON почти всегда значительно


меньше, что приводит к более быстрой передаче и обработке.

· Близость к javascript

JSON является подмножеством JavaScript, поэтому код для его анализа и


упаковки вполне естественно вписывается в код JavaScript.

XML
XML — язык разметки, который определяет набор правил для
кодирования документов в формате, который читается человеком и читается
машиной. Но чем больше информации (вложений, комментариев, вариантов
тегов и т.д.) в xml, тем сложнее ее читать человеку.
· XML хранит данные в текстовом формате. Это обеспечивает
независимый от программного и аппаратного обеспечения способ хранения,
транспортировки и обмена данными. XML также облегчает расширение или
обновление до новых операционных систем, новых приложений или новых
браузеров без потери данных.

Синтаксис XML

1. Весь XML документ должен иметь корневой элемент.

2. Все теги должны быть закрыты (либо самозакрывающийся


тег).

3. Все теги должны быть правильно вложены.

4. Имена тегов чувствительны к регистру.

5. Имена тегов не могут содержать пробелы.

6. Значения атрибута должны появляться в кавычках («»).

7. Атрибуты не могут иметь вложения (в отличие от тегов).


8. Пробел сохраняется.

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

· Поддержка метаданных

Одним из самых больших преимуществ XML является то, что мы можем


помещать метаданные в теги в форме атрибутов. В JSON атрибуты будут
добавлены как другие поля-члены в представлении данных, которые НЕ могут
быть желательны.

· Визуализация браузера

Большинство браузеров отображают XML в удобочитаемой и


организованной форме. Древовидная структура XML в браузере позволяет
пользователям естественным образом сворачивать отдельные элементы дерева.
Эта функция будет особенно полезна при отладке.

· Поддержка смешанного контента

Хорошим вариантом использования XML является возможность


передачи смешанного контента в пределах одной и той же полезной нагрузки
данных. Этот смешанный контент четко различается по разным тегам.

37 Концепция SPA (Single Page Application)?


Single Page Application – сокращенно SPA, в переводе на русский язык
означает “Приложение одной страницы”. Другими словами SPA – это web-
приложение, размещенное на одной web-странице, которая для
обеспечения работы загружает весь необходимый код вместе с загрузкой
самой страницы.
SPA работает так: когда пользователь открывает страницу, браузер
загружает сразу весь код приложения. Но показывает только конкретный
модуль — часть сайта, которая нужна пользователю. Когда пользователь
переходит в другую часть приложения, браузер берёт уже загруженные
данные и показывает ему. И, если нужно, динамически подгружает с
сервера нужный контент без обновления страницы.
С одной стороны, такие приложения работают быстро и меньше
нагружают сервер. С другой стороны, они требуют большей загрузки на
старте.
38 Понятие Document Object Model (DOM)? Структура и уровни DOM?

DOM (Document Object Model) - объектная модель документа. Это


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

В рамках DOM любой документ представляется в виде дерева узлов. Каждый


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

Существует 4 уровня DOM (0, 1, 2 и 3).

Уровень 0 (1996) включал в себя модели DOM , которые существовали до


появления уровня 1. В основном это коллекции: document.images,
document.forms, document.layers и document.all. Эти модели формально не
являются спецификациями DOM , опубликованными W3C . Скорее они
представляют информацию о том, что существовало до начала процесса
стандартизации.

Уровень 1 (1997) включал также базовые функциональные возможности по


обработке XML-документов: многочисленные способы работы с отдельными
узлами, работа с инструкциями обработки XML и т.д.
Кроме того, DOM уровня 1 содержит ряд специальных интерфейсов, которые
могут обрабатывать отдельные HTML-элементы. Например, можно работать с
таблицами HTML, формами, списками выбора и т.д.

В DOM уровня 2 (2002) было добавлено несколько новых возможностей.


Интерфейсы DOM уровня 2 содержат методы для управления пространствами
имён, связанными с требованиями к составлению и обработке XML-
документов.
Помимо этого, DOM уровня 2 поддерживает события.
Уровень 2 является текущим уровнем спецификаций DOM .

DOM уровня 3 - это рабочий проект спецификации, которая расширяет


функциональность DOM уровня 2. Одна из наиболее важных особенностей
этой версии спецификации заключается в возможности работать с
многочисленными расширениями DOM .
39 Задачи бизнес-анализа? Место бизнес-аналитика в процессе
разработки ПО и задачи бизнес-аналитика?
Бизнес-анализ представляет собой комплекс задач и методик, применяемых в
работе как связующее звено между заинтересованными сторонами для
лучшего понимания структуры , политики и операций.

Бизнес-аналитик – это координатор, который должен «видеть» проект на всех


уровнях: знать запросы бизнеса и пользователей, учитывать технические
возможности, понимать контекстные границы системы и уметь разъяснять
контекст команде.
При разработке аналитик собирает требования к продукту, описывает бизнес-
процессы, проектирует прототипы и составляет техническое задание, помогает
заказчику снизить риски и сократить сроки разработки либо оптимизации
программного обеспечения.
Анализ процессов разработки необходим для того, чтобы продукт
соответствовал поставленным задачам.
Аналитик при разработке ПО помогает добиться полноты и
непротиворечивости требований. Для этого он изучает все бизнес-процессы
заказчика и пользователей системы, текущее состояние продукта. Выясняет,
какие функции наиболее важны в начальной версии , а что может подождать. В
результате будут сформулированы границы системы и получено понимание,
как ее автоматизировать.

40 Язык UML? Определение? Области применения? Прямое и


обратноепроектирование?

Унифицированный язык моделирования (UML) является стандартным


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

UML – это графический язык специфицирования, что означает построение


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

UML – это язык конструирования, и модели, созданные с его помощью,


могут быть непосредственно переведены на различные языки
программирования. Иными словами, UML-модель можно отобразить на
такие языки, как Java, C++, Visual Basic, и даже на таблицы реляционной
базы данных.
Такое отображение модели на язык программирования позволяет
осуществлять прямое проектирование: генерацию кода из модели UML в
какой-то конкретный язык. Можно решить и обратную задачу:
реконструировать модель по имеющейся реализации.

Использование UML эффективно в:

· информационных системах масштаба предприятия;

· банковских и финансовых услугах;

· телекоммуникациях;

· на транспорте;

· оборонной промышленности, авиации и космонавтике;

· розничной торговле;

· медицинской электронике;

· науке;

· распределенных Web-системах.

Сфера применения UML не ограничивается моделированием ПО. Он


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

Прямым проектированием (Forward engineering) называется процесс


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

Обратным проектированием (Reverse engineering) называется процесс


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

41 Основные аспекты объектно-ориентированного анализа и


проектирования?
Работу над программным проектом можно разделить на несколько этапов:

1.анализ предметной области и требований к программному продукту;

2.проектирование, включающее в себя как проектирование внутренней структуры


программы, так и пользовательского интерфейса;

3.программирование – то есть написание кода.

В рамках объектно-ориентированного подхода выделяют -объектно-ориентированное


программирование, -объектно-ориентированное проектирование
- объектно-ориентированный анализ.

Объектно-ориентированное программирование – это методология программирования,


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

В данном определении можно выделить три части:

ООП использует в качестве базовых элементов объекты, а не алгоритмы;

Каждый объект является экземпляром какого-либо класса;

Классы организованы иерархически.

Объектно-ориентированное проектирование – это методология проектирования,


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

В данном определении содержатся две важные части объектно-ориентированного


проектирования:

Основывается на объектно-ориентированной декомпозиции;

Используется многообразие приемов представления моделей, отражающих


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

Для объектно-ориентированного проектирования существуют несколько вариантов


нотаций. Наиболее известны – нотация Буча, технология объектного моделирования
(OMT, Object Modeling Technology) и унифицированный язык моделирования (UML,
Unified Modeling Language), который был разработан на основе двух предыдущих. В
настоящее время UML наиболее распространен, принят многими производителями и
комитетами по стандартам. Именно на нем основана методология проектирования ПО
RUP (Rational Unified Process), разработанная компанией Rational Software. Первая
версия UML – UML 1 появилась в январе 1997 г. В настоящее время все еще
происходит процесс развития и усовершенствования UML.
Объектно-ориентированный анализ – это методология, при которой требования к
системе воспринимаются с точки зрения классов и объектов, выявленных в
предметной области.

42 Основные строительный виды UML диаграмм: перечислите и


назовите области применения?
ДиаграммавUML– это графическое представление набора элементов,
изображаемое в виде связанного графа с вершинами (сущностями) и ребрами
(отношениями), используемое для визуализации системы с разных точек
зрения. Выделяют 8 типов диаграмм:

На диаграмме классов (Class diagram) изображаются классы, интерфейсы,


объекты и кооперации, а также их отношения. Используется при
моделировании объектно-ориентированных систем.

На диаграмме вариантов использования (Use case diagram) представлены


прецеденты и актеры (частный случай классов), а также отношения между
ними. Они используются при моделировании поведения системы.

Диаграммы последовательностей(Sequence diagram)


икооперации(Collaboration diagram) являются частными случаями диаграмм
взаимодействия. На диаграммах взаимодействия представлены связи между
объектами (сообщения, которыми объекты могут обмениваться). Диаграммы
взаимодействия относятся к динамическому виду системы. При этом
диаграммы последовательности отражают временную упорядоченность
сообщений, а диаграммы кооперации – структурную организацию
обменивающихся сообщениями объектов. Эти диаграммы могут быть
преобразованы друг в друга.

На диаграммах состояний (Statechartdiagrams) представлен автомат,


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

Диаграмма деятельности (Activity diagram) представляют переходы потока


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

Диаграмма компонентов (Component diagram) представляет зависимости


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

На диаграмме развертывания (Deployment diagram) представлена


конфигурация обрабатывающих узлов системы и размещенных в них
компонентов.

Вам также может понравиться