Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ekzamen

.docx
Скачиваний:
3
Добавлен:
04.06.2024
Размер:
89.45 Кб
Скачать

Абстракция функций

 Что такое JIT-компиляция?

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

 Как представлены исполняемые файлы в Windows?

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

Исполняемые файлы содержат код, который запускается при открытии файла.

В Windows * .exe, (в основном)* .bat, * .cmd и * .com все представляют программы или сценарии оболочки, которые можно запустить, просто дважды щелкнув их, Такие файлы содержат скомпилированный программный код, или иными словами – последовательность байтов, которая загружается в оперативную память и выполняется процессором. 

 Перечислите несколько кодов состояния HTTP и их значения.

200 ок - успешный запрос. Если клиентом были запрошены какие-либо данные, то они находятся в заголовке и/или теле сообщения.

301 Moved Permanently — запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка.

404 Not Found — самая распространённая ошибка при пользовании Интернетом, основная причина — ошибка в написании адреса Web-страницы. Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URL.

403 Forbidden — сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу.

414 URI Too Long — сервер не может обработать запрос из-за слишком длинного указанного URI.

 В чем разница в поведении присваивания с C++ и в Python?

Код на Python

a = 10.1

b = True

c = 10

Код на C++

double a = 10.1;

bool b = true;

int c = 10;

на языке C++ необходимо самому указывать тип переменной при ее создании

 Что такое функция в C++?

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

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

 Как происходит передача параметров в функцию в Python?

Изменяемые объекты передаются по ссылке. Это значит, что при изменении значения переменной объект будет изменен. К этому типу относятся: - списки (list) - множества (set) - словари (dict)

Неизменяемые объекты передаются по значению. Это значит, что при изменении значения переменной будет создан новый объект. К этому типу относятся: - числовые данные (int, float, complex) - символьные строки (str)

 Чем отличается объявление функции от определения функции?

1

int func();

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

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

 Определение функции означает предоставление тела функции, определение класса означает предоставление всех методов и полей класса. 

Объявление предоставляет основные свойства символа: его тип и его название. Определение предоставляет все детали этого символа — если это функция, что она делает

 Для чего нужен протокол HTTP?

HTTP (HyperText Transfer Protocol, протокол передачи гипертекста) – протокол, используемый в компьютерных сетях для обмена данными между серверами и клиентами. Взаимодействие происходит в формате запрос-ответ, причем и запрос, и ответ, имеют четко определенный формат и правила построения.

 Как можно изменить значение строки в Python?

С помощью replace можно заменить часть строки или её всю на другую строку.

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

Как в стакане воды пузырёк воздуха поднимается со дна вверх.

Так и в массиве самый маленький элемент перемещается вверх.

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

 Что такое компоновка?

Компоновка (программирование) — сборка исполнимого модуля из одного или нескольких объектных модулей.

Компоновка — расположение, структуризация отдельных частей в целостном объекте. Компоновка (программирование) — сборка исполнимого модуля из одного или нескольких объектных модулей. (Простыми словами – составление целого из отдельных частей).

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

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

символов, в течение времени компоновки (статическая компоновка) или во время исполнения (динамическая компоновка).

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

 Для чего нужен IP-адрес? Чем отличается IPv4 и IPv6?

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

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

Интернет-протокол версии 4 (IPv4) – первая и наиболее известная версия интернет-протокола. Основан на подходе негарантированной доставки (best-effort delivery), при котором сеть не гарантирует доставку данных или качество обслуживания.

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

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

В этой версии IP используется 32-битный адрес, формат IP-адреса, с которым знакомо большинство людей. Адрес IPv4 состоит из четырёх десятичных чисел, разделенных тремя точками, в диапазоне от 0 до 255

Интернет-протокол версии 6 (IPv6) – это новая версия IP, также известный как интернет-протокол следующего поколения (IP Next Generation, или IPng).

Он работает аналогично интернет-протоколу версии 4 (IPv4), предоставляя уникальные адреса для всех устройств, подключенных к интернету. Однако, в отличие от IPv4, IPv6 использует 128-битный, а не 32-битный формат адреса.

128-битное адресное пространство предлагает около 340 ундециллионов адресов, то есть в 1028 раз больше комбинаций, чем IPv4.

Адрес IPv6 может содержать как цифры, так и буквы. Он написан с использованием восьми групп четырехзначных шестнадцатеричных чисел, разделенных двоеточиями.

 Что такое автоматическая переменная в C++? Как ее создать?

auto — автоматическая (локальная). Автоматические переменные создаются при входе в функцию и уничтожаются при выходе из неё. Они видны только внутри функции или блока, в которых определены.

По умолчанию переменные, описанные внутри функции, являются автоматическими. Можно, однако, это подчеркнуть явно с помощью ключевого слова auto:

main( )

{

auto int plox;

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

 Для чего нужна служба DNS?

DNS (domain name system, служба доменных имен) — это стандартный протокол, позволяющий пользователям получать доступ к веб-сайтам, используя удобные для прочтения адреса. DNS позволяет ввести адрес веб-сайта и автоматически определить его IP-адрес, то есть уникальный идентификатор конкретного устройства (сервера) в компьютерной сети.

 Что такое заголовочный файл в C++?

Когда мы пишем #include <iostream>, мы делаем запрос, чтобы всё содержимое заголовочного файла iostream было скопировано в наш файл. Таким образом, всё содержимое библиотеки iostream становится доступным для использования.

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

 В чем заключался принцип работы телетайпа?

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

Наиболее совершенные телетайпы являются полностью электронными устройствами и используют дисплей вместо принтера.

 Что такое URL? Из чего он состоит?

URL (Uniform Resource Locator) – это стандартизированный и общепринятый формат указания локации расположения сайта во Всемирной сети.

Протокол, доменное имя и путь к странице на сервере, порт (Для протокола HTTP используется порт 80 по умолчанию, для HTTPS — 443.

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

 Как представлены исполняемые файлы в Linux?

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

Фактически это любой файл, который помечен, как исполняемый и который Ubuntu сможет запустить на выполнение. Означает это вот что: у каждого файла есть специальное свойство-переключатель, никак не зависящее ни от имени, ни от содержимого, отвечающее за исполняемость. Если файл помечен, как исполняемый, то вообще говоря он таковым и является, а если не помечен — то это обычный файл с данными и напрямую запустить его на выполнение нельзя.

/bin - (сокращенно от “binary” - исполняемый), содержит необходимые программы/утилиты (исполняемые файлы) для функционирования и восстановления системы.

Исполняемые файлы в Linux бывают ровно двух видов. Первый — это файлы в собственно исполняемом (executable) формате. Как правило, такие файлы — результат компиляции программ, написанных на классических языках программирования, вроде Си.

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

 Что такое REPL? Для чего используется?

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

 Чем отличаются парадигмы процедурного и функционального программирования?

Императивный язык – это парадигма программирования (стиль написания исходного кода компьютерной программы), для которой характерно следующее:

- в исходном коде программы записываются инструкции (команды)

- инструкции должны выполняться последовательно;

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

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

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

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

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

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

Примеры: С, BASIC, Pascal, Kotlin

Концепции функционального программирования – функции высших порядков (принимают в качестве аргумента другие функции), чистые функции (зависят только от своих параметров и возвращают только свой результат), рекурсии,

Строго говоря, в функциональной парадигме программирования нет такого понятия, как цикл

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

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

 Как происходит возврат из функции в C++?

Когда функция main() завершает свое выполнение, она возвращает целочисленное значение обратно в операционную систему, используя оператор return.

Функции также могут возвращать значения. Для этого нужно указать тип возвращаемого значения (или «тип возврата»). Он указывается при объявлении функции, перед её именем. тип возврата не указывает, какое именно значение будет возвращаться. Он указывает только тип этого значения.

 Перечислите несколько возможных заголовков запроса HTTP и их смысл.

Content-Length указывает размер отправленного получателю тела объекта в байтах.

User-Agent - это строка с характеристиками, по которым сервера и сетевые узлы могут определить тип приложения, операционную систему, производителя и/или версию пользовательского агента.

Accept-Language - список поддерживаемых естественных языков.

 Каковы черты ОС UNIX, которые сделали ее популярной и легли в основу последующих поколений ОС?

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

Несмотря на то, что большинство UNIX поставляется сегодня не в исходных текстах, а в виде бинарных файлов, система остается легко расширяемой и настраиваемой.

UNIX — многозадачная многопользовательская система с широким спектром услуг.

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

 Перечислите несколько разделов информатики.

Data Science (+ Big Data), программирование, криптография, алгоритмы, организация компьютеров, Web-технологии, биотехнологии, разработка игр, искусственный интеллект + машинная логика, облачные и сетевые технологии, дополненная реальность, квантовые вычисления, программная инженерия, интернет вещей, операционные системы, базы данных, компиляторы

 Из чего состоит HTTP-запрос?

Стартовой строки, описывающей запрос, или статус (успех или сбой). Это всегда одна строка.

Произвольного набора HTTP заголовков, определяющих запрос или описывающих тело сообщения.

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

Произвольного тела, содержащего пересылаемые с запросом данные (например, содержимое HTML-формы ) или отправляемый в ответ документ. Наличие тела и его размер определяется стартовой строкой и заголовками HTTP.

 Для чего нужны порты в компьютерных сетях?

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

Что такое выражение в C++? Виды выражений.

  • Выражение C++ — это значение или комбинация значений и операций, и каждое выражение C++ имеет свое значение.

 Перечислите несколько операций, которые поддерживает строка в C++.

Со строками можно выполнять следующие арифметические операции: = - присваивание значения. += - добавление в конец строки другой строки или символа. + - конкатенация двух строк, конкатенация строки и символа. ==, != - посимвольное сравнение. <, >, <=, >= - лексикографическое сравнение.

Методы:

clear

S.clear() - очищает строчку, строка становится пустой.

push_back

S.push_back(c) - добавляет в конец строки символ c, вызывается с одним параметром типа char.

erase

S.erase(pos) - удаляет из строки S  с символа с индексом pos и до конца строки.

resize

S.resize(n) - Изменяет длину строки, новая длина строки становится равна n. При этом строка может как уменьшится, так и увеличиться. Если вызвать в виде S.resize(n, c), где c - символ, то при увеличении длины строки добавляемые символы будут равны c.

empty

S.empty() - возвращает true, если строка пуста, false - если непуста.

append

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

S.append(n, c) - добавляет в конец строки n одинаковых символов, равных с. n имеет целочисленный тип, c - char.

S.append(T) - добавляет в конец строки S содержимое строки T. T может быть объектом класса string или C-строкой.

 Как передаются параметры GET-запроса?

Метод get осуществляет GET-запрос к серверу, то есть все данные запроса передаются в строке запроса.

 Сколько запросов может сделать браузер при загрузке одной веб-страницы и почему?

HTTP-запрос — это запрос от браузера к серверу.

 В чем преимущества языков программирования, использующих JIT-компиляцию? Приведите примеры таких языков.

+ гарантия безопасности исполнения

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

Большинство реализаций JIT имеют последовательную структуру: сначала приложение компилируется в байт-код виртуальной машины среды

исполнения (AOT-компиляция), а потом JIT компилирует байт-код непосредственно в машинный код. В итоге при запуске приложения тратится лишнее время, что впоследствии компенсируется более быстрой его работой.

JIT компиляция включает в себя компиляцию исходного кода или байт-кода в машинный код и его выполнение. Как правило, результат записывается в память и исполняется сразу же, без промежуточного сохранения на диск или его вызов как отдельной программы. JIT используется в реализациях Java (JRE), JavaScript, .NET Framework, в одной из реализаций Python — PyPy.

 Что такое интерфейс loopback и каковы его IP-адреса?

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

Loopback — это термин, который обычно используется для описания методов или процедур маршрутизации электронных сигналов, цифровых потоков данных, или других движущихся сущностей от их источника и обратно к тому же источнику без специальной обработки или модификаций. Наиболее широко используемый IP адрес в механизмах loopback — 127.0.0.1. В IPv4, в него также отражается любой адрес в пределах от 127.0.0.0 до 127.255.255.255. IPv6 определяет единственный адрес для этой функции — 0:0:0:0:0:0:0:1/128

 Перечислите несколько возможных заголовков ответа HTTP и их смысл.

Age - Заголовок содержит время в секундах, в течение которого объект находился в кэше прокси-сервера.

Location - ответа указывает URL-адрес для перенаправления страницы.

Server - Заголовок описывает программное обеспечение, используемое исходным сервером, который обработал запрос, то есть сервером, который сгенерировал ответ.

 Перечислите два основных метода HTTP и разницу между ними.

В запросе-ответе между клиентом и сервером наиболее часто используются два метода: GET и POST.

GET — метод для чтения данных с сайта. Например, для доступа к указанной странице. Он говорит серверу, что клиент хочет прочитать указанный документ. На практике этот метод используется чаще всего, например, в интернет-магазинах на странице каталога. Фильтры, которые выбирает пользователь, передаются через метод GET.

POST — метод для отправки данных на сайт. Чаще всего с помощью метода POST передаются формы.

  • В таблице ниже приведены основные свойства и отличия GET и POST методов.

Свойство

GET

POST

Способ передачи данных

Через URL

В теле HTTP запроса

Защита данных

Данные видны всем в адресной строке браузера, истории браузера и т.п.

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

Длина запроса

Не более 2048 символов

Не ограничена

Примечание: ограничения могут быть установлены сервером.

Сохранение в закладки

Страница с параметрами может быть добавлена в закладки

Страница с параметрами не может быть добавлена в закладки.

Кэширование

Страница с параметрами может быть кэширована

Страница с параметрами не может быть кэширована

Индексирование поисковыми системами

Страница с параметрами может быть индексирована

Страница с параметрами не может быть индексирована

Возможность отправки файлов

Не поддерживается

Поддерживается

Использование в гиперссылках <a>

Да

Нет

Использование в HTML формах

Да

Да

  • GET запросы могут кэшироваться

  • GET запросы остаются в истории браузера

  • GET запросы могут быть закладками

  • GET запросы никогда не должны использоваться при работе с конфиденциальными данными

  • GET запросы имеют ограничения по длине

  • GET запросы должны использоваться только для извлечения данных

  • POST запросы никогда не кэшируются

  • Запросы POST не сохраняются в журнале обозревателя

  • Запросы POST не могут быть закладками

  • Запросы POST не имеют ограничений по длине данных

GET-запросы лучше не использовать с приватной информацией. Вот почему:

  • Они кэшируются. Это значит, что логин и пароль, переданные через GET-запрос, могут остаться в интернете навсегда, например, в веб-архиве или кэше Гугла.

  • Остаются в истории браузера. Чтобы узнать, какие данные отправлялись, достаточно нажать Ctrl+H.

  • Сохраняются в закладках и пересылаются. Можно не обратить внимания и опубликовать в соцсетях или отправить ссылку с приватной информацией в GET-запросе.

  • Сохраняются в логах сервера. Например, нельзя отправлять данные банковских карт через GET-запрос, так как это создаёт риски для пользователей.

Таким образом, любые важные данные — логины, пароли, данные карты, персональные данные — лучше передавать с помощью метода POST

 Чем отличается присваивание от инициализации в C++?

Инициализация - выделение ячейки памяти с меткой, присвоение - запись туда значения int i; // это инициализация i = 5; // это присваивание

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

 Чем отличается параметр-значение от параметра-ссылки в C++?

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

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

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

void square(int&, int&);

Теперь параметры a и b передаются по ссылке. Ссылочный параметр связывается непосредственно с объектом, поэтому через ссылку можно менять сам объект.

Соседние файлы в предмете Информатика