- •Теория Базы данных и sql
- •Контейнеризация и Docker
- •Rest api и проектирование
- •Машинное обучение
- •Асинхронное программирование
- •Мобильная разработка и безопасность
- •Архитектура приложений
- •Практические задания Задание 1: sql (анализ оценок студентов)
- •Выполнение:
- •Задание 2: Docker (запуск FastApi-приложения в контейнере) доделать
- •Задание 3: rest api / FastApi (проектирование api для курсов)
- •Задание 4: Машинное обучение (определить тип ml-задачи)
Rest api и проектирование
10) Что такое REST и какую проблему проектирования API он решает?
REST (Representational State Transfer) — архитектурный стиль проектирования API, который определяет правила взаимодействия клиента и сервера. REST помогает стандартизировать API, сделать его понятным, упростить разработку и поддержку системы.
REST определяет структуру API, работу с ресурсами через HTTP методы.
11) Объясните понятия ресурса, URI, коллекции, элемента коллекции и представления ресурса в REST API.
Ресурс — объект системы, к которому можно обратиться через URL
URI (Uniform Resource Identifier) — уникальный адрес ресурса в системе
Коллекция — набор однотипных ресурсов
Элемент — конкретный объект внутри коллекции
Представление ресурса — формат данных, в котором сервер передает ресурс клиенту.
12) Как HTTP-методы GET, POST, PUT, PATCH, DELETE используются в REST API?
GET: /users Получить список пользователей.
GET: /users/5 Получить пользователя с ID = 5.
POST: /users Создать нового пользователя.
PUT: /users/1 Обновить пользователя
PATCH: /users/1 Частичное обновление пользователя (передает только те поля, которые необходимо обновить)
DELETE: /users/1 Удалить пользователя
13) Что такое ресурс в REST API и как правильно проектировать URL для работы с ресурсами? Приведите примеры для пользователей, товаров или заказов.
Ресурс — объект системы, к которому можно обратиться через URL. В REST API URL должны описывать сами ресурсы и ничего лишнего (использование существительных, а не глаголов).
Примеры:
GET /users
POST /users
DELETE /users/10
14) Что означает принцип stateless в REST? Почему он важен для масштабируемости серверных приложений?
Stateless — принцип REST, при котором каждый запрос к серверу является независимым. Сервер не хранит информацию о предыдущих запросах клиента. При каждом новом запросе клиент также передает всю необходимую информацию.
Машинное обучение
15) В чём отличие классического программирования от машинного обучения? Приведите пример.
Основной принцип машинного обучения в том, что компьютер сам обучается на данных, находя закономерности, а не выполняет строгую последовательность команд, как в классическом программировании. Классический подход: правила + данные → результат. Машинное обучение: данные + правильные ответы → модель.
Пример: диагностика заболеваний в медицине. Очень часто бывает, что нет определенного «паттерна», по которому можно сказать о том или ином сложном заболевании, а значит классическое программирование в диагностике будет неэффективно. В данном случае может помочь модель ИИ, которую обучили на основе многих факторов определять с высокой долей вероятности то или иное заболевание.
16) Раскройте основные понятия машинного обучения: данные, признаки, целевая переменная, модель, обучение и предсказание.
Данные (data) — набор информации, на котором обучается модель, например: таблицы, изображения, текст, звук.
Признаки (features) — характеристики объектов, которые используются для обучения, например: человек → признаки: возраст, рост, температура. Признаки = входные переменные (Х).
Целевая переменная — эталонное значение, «правильный ответ» (Y)
Модель (model) — алгоритм, который находит зависимости в данных, строит математическую функцию. Модель = «правило», которое мы не пишем вручную
Обучение — процесс, при котором алгоритм на основе данных настраивает свои параметры, чтобы находить зависимость между признаками и ответом. Что происходит внутри:
а) модель получает данные (X, Y)
б) делает предсказание
в) сравнивает с правильным ответом
г) вычисляет ошибку
д) изменяет параметры
Процесс повторяется много раз
Предсказание (prediction) — результат работы модели на новых данных, например: есть данные пациента → модель говорит «болен / не болен». Предсказание = выход модели (y).
17) Какие существуют основные виды машинного обучения, перечислите и напишите определения? Сравните обучение с учителем и без учителя.
Обучение с учителем (Supervised Learning) — метод машинного обучения, при котором модель обучается на размеченных данных, где для каждого объекта известен правильный ответ. Суть: модель строит зависимость между входными признаками и целевой переменной. Типовые задачи: классификация (предсказание класса), регрессия (предсказание числового значения)
Обучение без учителя (Unsupervised Learning) — метод обучения, при котором модель работает только с входными данными без правильных ответов. Суть: модель самостоятельно выявляет структуру, закономерности или группы в данных. Типовые задачи: кластеризация (разделение на группы), поиск скрытых зависимостей, снижение размерности.
Обучение с подкреплением (Reinforcement Learning) — метод обучения, при котором агент обучается через взаимодействие со средой, получая награду за свои действия. Суть: модель учится выбирать действия, которые максимизируют суммарную награду. Типовые задачи: управление системами, игры, робототехника
При обучении с учителем для каждого объекта известен правильный ответ, а при обучении без учителя модель сама ищет структуру, закономерности и группы объектов.
18) Что такое обобщающая способность модели? Объясните проблемы недообучения и переобучения.
Обобщение — способность модели показывать хорошее качество не только на обучающей выборке, но и на новы данных, которые она раньше не видела.
Недообучение (Underfitting) — ситуация, при которой модель слишком простая и не может уловить зависимость в данных. Модель не понимает структуры данных, совершает грубые ошибки, плохо работает и на обучении, и на новых данных. Проявляется в низкой точности на обучающей и тестовой выборке.
Переобучение (Overfitting) — ситуация, при которой модель слишком точно подстраивается под обучающие данные, включая шум, и теряет способность обобщать новые данные. Проявляется в высокой точности на обучении и низкой точности на тесте, модель «запоминает», а не учится. Причины: слишком сложная модель, мало данных, шум в данных.
19) Зачем данные делят на обучающую и тестовую выборки? Почему качество модели нельзя оценивать только на обучающих данных?
Данные делят для того, чтобы можно было проверить, как модель реагирует на новые, ранее неизвестные данные, чтобы не допустить переобучения или недообучения.
