Что такое мультипроцессинг ?
Спросят с вероятностью 13%
Мультипроцессинг (multiprocessing) - это использование нескольких процессов для выполнения задач параллельно. Модуль
Основные концепции мультипроцессинга:
1️⃣ Параллельное выполнение: Мультипроцессинг позволяет запускать несколько процессов одновременно, что позволяет использовать многопроцессорные системы более эффективно и улучшает производительность программы.
2️⃣ Работа с потоками: Каждый процесс в мультипроцессинге имеет свой собственный поток выполнения, независимый от других процессов. Это позволяет избежать проблем с глобальной блокировкой интерпретатора (GIL), которая присутствует в многопоточных приложениях.
3️⃣ Использование ресурсов: Каждый процесс имеет свое собственное пространство памяти и ресурсы, что обеспечивает изоляцию между процессами и предотвращает конфликты доступа к данным.
4️⃣ Модуль multiprocessing: Для работы с мультипроцессингом используется встроенный модуль
Пример использования multiprocessing:
Этот пример создает новый процесс, который выполняет функцию
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 13%
Мультипроцессинг (multiprocessing) - это использование нескольких процессов для выполнения задач параллельно. Модуль
multiprocessing предоставляет возможность создания и управления процессами.Основные концепции мультипроцессинга:
1️⃣ Параллельное выполнение: Мультипроцессинг позволяет запускать несколько процессов одновременно, что позволяет использовать многопроцессорные системы более эффективно и улучшает производительность программы.
2️⃣ Работа с потоками: Каждый процесс в мультипроцессинге имеет свой собственный поток выполнения, независимый от других процессов. Это позволяет избежать проблем с глобальной блокировкой интерпретатора (GIL), которая присутствует в многопоточных приложениях.
3️⃣ Использование ресурсов: Каждый процесс имеет свое собственное пространство памяти и ресурсы, что обеспечивает изоляцию между процессами и предотвращает конфликты доступа к данным.
4️⃣ Модуль multiprocessing: Для работы с мультипроцессингом используется встроенный модуль
multiprocessing, который предоставляет API для создания и управления процессами. Он аналогичен модулю threading, но использует отдельные процессы вместо потоков для параллельного выполнения кода.Пример использования multiprocessing:
import multiprocessing
def worker():
print("Hello from process")
# Создание и запуск процесса
p = multiprocessing.Process(target=worker)
p.start()
Этот пример создает новый процесс, который выполняет функцию
worker, выводящую сообщение "Hello from process".➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
В чем разница между copy() и deepcopy() ?
Спросят с вероятностью 7%
Функции
1️⃣
- Создает поверхностную копию объекта. Это означает, что копируется только сам объект и его первый уровень вложенных объектов, но не их вложенные объекты.
- Если вы измените вложенные объекты в исходном объекте, эти изменения будут отражены и в его копии, так как они оба будут ссылаться на одни и те же вложенные объекты.
- Используется, когда вам нужна поверхностная копия объекта, и вы уверены, что вложенные объекты не будут изменяться.
2️⃣
- Создает глубокую копию объекта. Это означает, что копируются как сам объект, так и все его вложенные объекты, рекурсивно, до тех пор, пока не будут скопированы все объекты внутри объекта.
- Глубокая копия полезна, когда вам нужно создать копию объекта, включая все его вложенные объекты, и вы не хотите, чтобы изменения в исходном объекте отражались на его копии и наоборот.
- Однако глубокие копии могут быть более затратными по памяти и времени, особенно если объект содержит много вложенных объектов.
Пример использования
В этом примере
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 7%
Функции
copy() и deepcopy() используются для создания копий объектов, но есть существенная разница в том, как они копируют вложенные объекты.1️⃣
copy():- Создает поверхностную копию объекта. Это означает, что копируется только сам объект и его первый уровень вложенных объектов, но не их вложенные объекты.
- Если вы измените вложенные объекты в исходном объекте, эти изменения будут отражены и в его копии, так как они оба будут ссылаться на одни и те же вложенные объекты.
- Используется, когда вам нужна поверхностная копия объекта, и вы уверены, что вложенные объекты не будут изменяться.
2️⃣
deepcopy():- Создает глубокую копию объекта. Это означает, что копируются как сам объект, так и все его вложенные объекты, рекурсивно, до тех пор, пока не будут скопированы все объекты внутри объекта.
- Глубокая копия полезна, когда вам нужно создать копию объекта, включая все его вложенные объекты, и вы не хотите, чтобы изменения в исходном объекте отражались на его копии и наоборот.
- Однако глубокие копии могут быть более затратными по памяти и времени, особенно если объект содержит много вложенных объектов.
Пример использования
copy() и deepcopy():import copy
original_list = [1, [2, 3], 4]
shallow_copy = copy.copy(original_list)
deep_copy = copy.deepcopy(original_list)
original_list[1][0] = 5 # Изменение вложенного списка
print(original_list) # Вывод: [1, [5, 3], 4]
print(shallow_copy) # Вывод: [1, [5, 3], 4]
print(deep_copy) # Вывод: [1, [2, 3], 4]
В этом примере
shallow_copy является поверхностной копией original_list, а deep_copy — глубокой копией. При изменении вложенного списка в original_list это отражается на shallow_copy, но не на deep_copy.➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍2❤1
Что такое slots ?
Спросят с вероятностью 13%
Когда вы определяете
Пример:
В этом примере у класса
Важно отметить, что использование slots может иметь смысл только в тех случаях, когда вы уверены, что ограничение набора атрибутов не вызовет проблем в приложении.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 13%
slots - это механизм, который позволяет явно определить ограниченный набор атрибутов (полей) для экземпляров класса. Обычно атрибуты экземпляров создаются динамически при их присваивании, что может приводить к потреблению памяти, особенно при работе с большим количеством экземпляров класса. Когда вы определяете
slots для класса, то определяете фиксированный набор атрибутов, которые могут существовать для экземпляров этого класса. Это позволяет экономить память и улучшать производительность, особенно в случае, когда у вас есть много экземпляров класса.Пример:
class MyClass:
slots = ['x', 'y']
def init(self, x, y):
self.x = x
self.y = y
obj = MyClass(10, 20)
print(obj.x) # Вывод: 10
print(obj.y) # Вывод: 20
# Попытка присвоить атрибут, не определенный в slots, вызовет ошибку
# obj.z = 30 # Вызовет AttributeError
В этом примере у класса
MyClass есть определение slots, которое ограничивает атрибуты экземпляра класса только x и y. Попытка присвоить значение атрибуту z вызовет ошибку AttributeError.Важно отметить, что использование slots может иметь смысл только в тех случаях, когда вы уверены, что ограничение набора атрибутов не вызовет проблем в приложении.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤4🔥1
Как реализован декоратор ?
Спросят с вероятностью 7%
Декораторы реализованы как функции, которые принимают другую функцию в качестве аргумента и возвращают новую функцию. Это позволяет изменять поведение или добавлять функциональность существующим без изменения их исходного кода. Вот пример простого декоратора:
В этом примере
Это простейший пример декоратора. В более сложных случаях декораторы могут принимать аргументы и использоваться для различных целей, таких как кеширование, логирование, обработка исключений и т. д. Декораторы широко используются и являются мощным механизмом для добавления функциональности к коду без его модификации.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 7%
Декораторы реализованы как функции, которые принимают другую функцию в качестве аргумента и возвращают новую функцию. Это позволяет изменять поведение или добавлять функциональность существующим без изменения их исходного кода. Вот пример простого декоратора:
def my_decorator(func):
def wrapper():
print("Дополнительный код перед вызовом функции")
func()
print("Дополнительный код после вызова функции")
return wrapper
@my_decorator
def say_hello():
print("Привет, мир!")
say_hello()
В этом примере
my_decorator является декоратором, который принимает функцию func и возвращает функцию wrapper, которая содержит дополнительный код перед и после вызова функции func. Затем мы используем декоратор @my_decorator, чтобы применить его к функции say_hello.Это простейший пример декоратора. В более сложных случаях декораторы могут принимать аргументы и использоваться для различных целей, таких как кеширование, логирование, обработка исключений и т. д. Декораторы широко используются и являются мощным механизмом для добавления функциональности к коду без его модификации.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥5❤3
В чем разница между процессом и потоком ?
Спросят с вероятностью 7%
Процессы и потоки - это два основных понятия, используемые в многозадачных системах, таких как операционные системы. Они представляют собой способы организации выполнения программного кода. Вот основные различия между ними:
1️⃣ Процесс:
- Представляет собой отдельный экземпляр программы, запущенный в оперативной памяти компьютера.
- У каждого процесса есть собственное адресное пространство памяти, которое оно использует для выполнения своего кода и хранения своих данных.
- Являются изолированными друг от друга, что означает, что изменения, сделанные в одном процессе, не влияют на другие процессы.
- Обычно создаются операционной системой при запуске новой программы.
2️⃣ Поток:
- Представляет собой легковесный подпроцесс внутри процесса.
- Разделяют общее адресное пространство памяти с другими потоками в рамках одного процесса.
- Имеют свой собственный стек вызовов, но разделяют все остальные ресурсы процесса, такие как файловые дескрипторы, переменные и т. д.
- Могут выполняться параллельно в рамках одного процесса, что позволяет использовать многопоточное программирование для увеличения производительности и ресурсоэффективности.
Основное различие между процессом и потоком заключается в том, что процесс является отдельным исполняемым экземпляром программы с собственным адресным пространством памяти, а поток представляет собой легковесный подпроцесс, который работает в рамках процесса и использует общие ресурсы этого процесса.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 7%
Процессы и потоки - это два основных понятия, используемые в многозадачных системах, таких как операционные системы. Они представляют собой способы организации выполнения программного кода. Вот основные различия между ними:
1️⃣ Процесс:
- Представляет собой отдельный экземпляр программы, запущенный в оперативной памяти компьютера.
- У каждого процесса есть собственное адресное пространство памяти, которое оно использует для выполнения своего кода и хранения своих данных.
- Являются изолированными друг от друга, что означает, что изменения, сделанные в одном процессе, не влияют на другие процессы.
- Обычно создаются операционной системой при запуске новой программы.
2️⃣ Поток:
- Представляет собой легковесный подпроцесс внутри процесса.
- Разделяют общее адресное пространство памяти с другими потоками в рамках одного процесса.
- Имеют свой собственный стек вызовов, но разделяют все остальные ресурсы процесса, такие как файловые дескрипторы, переменные и т. д.
- Могут выполняться параллельно в рамках одного процесса, что позволяет использовать многопоточное программирование для увеличения производительности и ресурсоэффективности.
Основное различие между процессом и потоком заключается в том, что процесс является отдельным исполняемым экземпляром программы с собственным адресным пространством памяти, а поток представляет собой легковесный подпроцесс, который работает в рамках процесса и использует общие ресурсы этого процесса.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥4❤2
Python компилируемый или интерпретируемый ?
Спросят с вероятностью 13%
Python является интерпретируемым языком программирования, но утверждать, что он полностью интерпретируемый, не совсем верно, поскольку есть некоторые аспекты компиляции.
Процесс выполнения программы обычно выглядит следующим образом:
1️⃣ Интерпретация и компиляция: Исходный код сначала проходит через процесс компиляции в промежуточный байт-код. Это выполняется интерпретатором при запуске программы. В результате компиляции создается файл
2️⃣ Исполнение: Затем интерпретатор исполняет этот байт-код последовательно, инструкция за инструкцией. Во время выполнения интерпретатор обрабатывает и выполняет инструкции, предоставляя ожидаемый результат.
Python является интерпретируемым языком с компиляцией в промежуточный байт-код, который затем интерпретируется и выполняется. Этот подход сочетает в себе преимущества интерпретации (гибкость, динамическая типизация) с некоторыми преимуществами компиляции (более быстрое выполнение благодаря использованию байт-кода).
Однако стоит отметить, что существуют и другие реализации Python, такие как PyPy, которые используют JIT (Just-In-Time) компиляцию для более эффективного выполнения кода. Каждая реализация может иметь свои особенности и характеристики в этом отношении.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 13%
Python является интерпретируемым языком программирования, но утверждать, что он полностью интерпретируемый, не совсем верно, поскольку есть некоторые аспекты компиляции.
Процесс выполнения программы обычно выглядит следующим образом:
1️⃣ Интерпретация и компиляция: Исходный код сначала проходит через процесс компиляции в промежуточный байт-код. Это выполняется интерпретатором при запуске программы. В результате компиляции создается файл
.pyc, который содержит байт-код программы.2️⃣ Исполнение: Затем интерпретатор исполняет этот байт-код последовательно, инструкция за инструкцией. Во время выполнения интерпретатор обрабатывает и выполняет инструкции, предоставляя ожидаемый результат.
Python является интерпретируемым языком с компиляцией в промежуточный байт-код, который затем интерпретируется и выполняется. Этот подход сочетает в себе преимущества интерпретации (гибкость, динамическая типизация) с некоторыми преимуществами компиляции (более быстрое выполнение благодаря использованию байт-кода).
Однако стоит отметить, что существуют и другие реализации Python, такие как PyPy, которые используют JIT (Just-In-Time) компиляцию для более эффективного выполнения кода. Каждая реализация может иметь свои особенности и характеристики в этом отношении.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤4
Как устроены переменные ?
Спросят с вероятностью 7%
Переменные являются именованными областями памяти, в которых хранятся значения данных. Устройство переменных обычно содержат следующие элементы:
1️⃣ Имя переменной: Это идентификатор, который используется для обращения к значению данных в памяти.
2️⃣ Значение данных: Это фактическое значение, которое хранится в переменной. Может быть целое число, строка, список, объект и так далее, в зависимости от типа данных, который поддерживает язык программирования.
3️⃣ Адрес в памяти: Это место в памяти компьютера, где хранится значение данных переменной. Иногда можно получить адрес переменной с помощью оператора
4️⃣ Тип данных: Это информация о том, какого типа данных содержится в переменной. Тип данных определяет, какие операции могут быть выполнены с переменной и как она хранится в памяти.
5️⃣ Область видимости: Это часть программы, в которой переменная может быть использована. Обычно переменные имеют локальную область видимости в пределах блока кода, в котором они были определены, но также могут иметь глобальную область видимости, доступную во всей программе.
6️⃣ Жизненный цикл: Это период времени, в течение которого переменная существует в памяти. Переменные могут быть созданы, использованы и уничтожены в разное время в зависимости от их области видимости и действий программы.
Обычно переменные управляются средой выполнения языка программирования, которая отвечает за выделение и освобождение памяти, управление областями видимости и обработку других аспектов жизненного цикла переменных.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 7%
Переменные являются именованными областями памяти, в которых хранятся значения данных. Устройство переменных обычно содержат следующие элементы:
1️⃣ Имя переменной: Это идентификатор, который используется для обращения к значению данных в памяти.
2️⃣ Значение данных: Это фактическое значение, которое хранится в переменной. Может быть целое число, строка, список, объект и так далее, в зависимости от типа данных, который поддерживает язык программирования.
3️⃣ Адрес в памяти: Это место в памяти компьютера, где хранится значение данных переменной. Иногда можно получить адрес переменной с помощью оператора
&.4️⃣ Тип данных: Это информация о том, какого типа данных содержится в переменной. Тип данных определяет, какие операции могут быть выполнены с переменной и как она хранится в памяти.
5️⃣ Область видимости: Это часть программы, в которой переменная может быть использована. Обычно переменные имеют локальную область видимости в пределах блока кода, в котором они были определены, но также могут иметь глобальную область видимости, доступную во всей программе.
6️⃣ Жизненный цикл: Это период времени, в течение которого переменная существует в памяти. Переменные могут быть созданы, использованы и уничтожены в разное время в зависимости от их области видимости и действий программы.
Обычно переменные управляются средой выполнения языка программирования, которая отвечает за выделение и освобождение памяти, управление областями видимости и обработку других аспектов жизненного цикла переменных.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤7
Для чего нужен сериализатор ?
Спросят с вероятностью 10%
Сериализатор - это инструмент, который преобразует объекты в определенном формате в формат, который можно легко сохранить или передать через сеть, и обратно. Обычно это используется для передачи данных между различными программами или процессами, работающими на разных устройствах или языках программирования.
Вот несколько причин, по которым сериализаторы могут быть полезными:
1️⃣ Сохранение и загрузка данных: Сериализация позволяет сохранять данные в файле или в базе данных в виде сериализованного объекта, что упрощает их сохранение и восстановление позже.
2️⃣ Обмен данными между приложениями: Приложения, написанные на разных языках программирования или работающие на разных платформах, могут использовать сериализацию для передачи данных друг другу в стандартизированном формате.
3️⃣ Передача данных по сети: Передача сложных структур данных между клиентом и сервером в сетевых приложениях может быть реализована с использованием сериализации. Например, веб-сервисы часто используют форматы сериализации, такие как JSON или XML, для обмена данными между клиентом и сервером.
4️⃣ Хранение состояния приложения: Сериализация может использоваться для сохранения состояния приложения, например, приложений игр, что позволяет пользователям сохранять свой прогресс и возобновлять игру позже.
5️⃣ Кэширование данных: Сериализация может использоваться для кэширования сложных данных, чтобы ускорить доступ к ним и сократить время обработки в будущем.
Обычно стелизаторы поддерживают различные форматы, такие как JSON, XML, YAML, Pickle и другие, каждый из которых имеет свои особенности и применение в зависимости от конкретной задачи.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 10%
Сериализатор - это инструмент, который преобразует объекты в определенном формате в формат, который можно легко сохранить или передать через сеть, и обратно. Обычно это используется для передачи данных между различными программами или процессами, работающими на разных устройствах или языках программирования.
Вот несколько причин, по которым сериализаторы могут быть полезными:
1️⃣ Сохранение и загрузка данных: Сериализация позволяет сохранять данные в файле или в базе данных в виде сериализованного объекта, что упрощает их сохранение и восстановление позже.
2️⃣ Обмен данными между приложениями: Приложения, написанные на разных языках программирования или работающие на разных платформах, могут использовать сериализацию для передачи данных друг другу в стандартизированном формате.
3️⃣ Передача данных по сети: Передача сложных структур данных между клиентом и сервером в сетевых приложениях может быть реализована с использованием сериализации. Например, веб-сервисы часто используют форматы сериализации, такие как JSON или XML, для обмена данными между клиентом и сервером.
4️⃣ Хранение состояния приложения: Сериализация может использоваться для сохранения состояния приложения, например, приложений игр, что позволяет пользователям сохранять свой прогресс и возобновлять игру позже.
5️⃣ Кэширование данных: Сериализация может использоваться для кэширования сложных данных, чтобы ускорить доступ к ним и сократить время обработки в будущем.
Обычно стелизаторы поддерживают различные форматы, такие как JSON, XML, YAML, Pickle и другие, каждый из которых имеет свои особенности и применение в зависимости от конкретной задачи.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3
Какие декораторы есть в стандартной библиотеке ?
Спросят с вероятностью 7%
В стандартной библиотеке есть несколько встроенных декораторов, которые используются для различных целей. Вот некоторые из наиболее часто используемых:
1️⃣ @staticmethod: Используется для объявления статического метода в классе. Они не привязаны к экземпляру класса и могут быть вызваны непосредственно через класс или через экземпляр.
2️⃣ @classmethod: Используется для объявления метода класса. Принимает класс (вместо экземпляра) как первый аргумент и может быть использован для работы с атрибутами класса.
3️⃣ @property: Используется для создания свойства (property) в классе. Это позволяет объявить метод как атрибут класса, который может быть доступен как атрибут экземпляра класса, но в фоне вызывает метод для получения или установки значения.
4️⃣ @abstractmethod: Используется в абстрактных классах для указания метода, который должен быть реализован в подклассах. Если подкласс не реализует этот метод, при попытке создания экземпляра подкласса возникнет ошибка.
5️⃣ @functools.wraps: Используется для копирования метаданных (например, имени функции, документации) из одной функции в другую. Это полезно, когда вы создаете декораторы, которые оборачивают другие функции.
6️⃣ @lru_cache: Используется для кэширования результатов функции с использованием алгоритма "Least Recently Used" (LRU). Это помогает улучшить производительность функций с дорогостоящими вычислениями путем сохранения результатов предыдущих вызовов функции.
Это лишь несколько примеров декораторов, доступных в стандартной библиотеке. Но существует множество других декораторов, реализованных в сторонних библиотеках и фреймворках, которые предоставляют дополнительные возможности и функциональность.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 7%
В стандартной библиотеке есть несколько встроенных декораторов, которые используются для различных целей. Вот некоторые из наиболее часто используемых:
1️⃣ @staticmethod: Используется для объявления статического метода в классе. Они не привязаны к экземпляру класса и могут быть вызваны непосредственно через класс или через экземпляр.
2️⃣ @classmethod: Используется для объявления метода класса. Принимает класс (вместо экземпляра) как первый аргумент и может быть использован для работы с атрибутами класса.
3️⃣ @property: Используется для создания свойства (property) в классе. Это позволяет объявить метод как атрибут класса, который может быть доступен как атрибут экземпляра класса, но в фоне вызывает метод для получения или установки значения.
4️⃣ @abstractmethod: Используется в абстрактных классах для указания метода, который должен быть реализован в подклассах. Если подкласс не реализует этот метод, при попытке создания экземпляра подкласса возникнет ошибка.
5️⃣ @functools.wraps: Используется для копирования метаданных (например, имени функции, документации) из одной функции в другую. Это полезно, когда вы создаете декораторы, которые оборачивают другие функции.
6️⃣ @lru_cache: Используется для кэширования результатов функции с использованием алгоритма "Least Recently Used" (LRU). Это помогает улучшить производительность функций с дорогостоящими вычислениями путем сохранения результатов предыдущих вызовов функции.
Это лишь несколько примеров декораторов, доступных в стандартной библиотеке. Но существует множество других декораторов, реализованных в сторонних библиотеках и фреймворках, которые предоставляют дополнительные возможности и функциональность.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤8
Какие существуют коды ответов HTTP ?
Спросят с вероятностью 10%
HTTP (Hypertext Transfer Protocol) определяет различные коды ответов, которые сервер может отправить клиенту в ответ на запрос. Вот некоторые из наиболее распространенных кодов ответов их общее значение:
1️⃣ 1xx (Информационные коды):
- 100 Continue: Запрос был принят, клиент может продолжать запрос.
- 101 Switching Protocols: Сервер согласился изменить протоколы.
2️⃣ 2xx (Успешные коды):
- 200 OK: Запрос успешно выполнен.
- 201 Created: Запрос успешно выполнен, и был создан новый ресурс.
- 204 No Content: Запрос выполнен успешно, но в ответе нет содержимого.
3️⃣ 3xx (Перенаправления):
- 301 Moved Permanently: Ресурс перемещен на постоянной основе.
- 302 Found: Ресурс временно перемещен.
- 304 Not Modified: Ресурс не был изменен с момента последнего запроса.
4️⃣ 4xx (Коды ошибок клиента):
- 400 Bad Request: Запрос не может быть обработан из-за ошибки в запросе клиента.
- 401 Unauthorized: Клиент должен предоставить аутентификацию для получения доступа к ресурсу.
- 404 Not Found: Ресурс не найден.
5️⃣ 5xx (Коды ошибок сервера):
- 500 Internal Server Error: Общая внутренняя ошибка сервера.
- 503 Service Unavailable: Сервер временно не доступен из-за перегрузки или обслуживания.
Это лишь несколько из множества кодов ответов HTTP. Каждый код имеет свое значение, и их правильное использование позволяет клиенту и серверу взаимодействовать эффективно и информативно.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 10%
HTTP (Hypertext Transfer Protocol) определяет различные коды ответов, которые сервер может отправить клиенту в ответ на запрос. Вот некоторые из наиболее распространенных кодов ответов их общее значение:
1️⃣ 1xx (Информационные коды):
- 100 Continue: Запрос был принят, клиент может продолжать запрос.
- 101 Switching Protocols: Сервер согласился изменить протоколы.
2️⃣ 2xx (Успешные коды):
- 200 OK: Запрос успешно выполнен.
- 201 Created: Запрос успешно выполнен, и был создан новый ресурс.
- 204 No Content: Запрос выполнен успешно, но в ответе нет содержимого.
3️⃣ 3xx (Перенаправления):
- 301 Moved Permanently: Ресурс перемещен на постоянной основе.
- 302 Found: Ресурс временно перемещен.
- 304 Not Modified: Ресурс не был изменен с момента последнего запроса.
4️⃣ 4xx (Коды ошибок клиента):
- 400 Bad Request: Запрос не может быть обработан из-за ошибки в запросе клиента.
- 401 Unauthorized: Клиент должен предоставить аутентификацию для получения доступа к ресурсу.
- 404 Not Found: Ресурс не найден.
5️⃣ 5xx (Коды ошибок сервера):
- 500 Internal Server Error: Общая внутренняя ошибка сервера.
- 503 Service Unavailable: Сервер временно не доступен из-за перегрузки или обслуживания.
Это лишь несколько из множества кодов ответов HTTP. Каждый код имеет свое значение, и их правильное использование позволяет клиенту и серверу взаимодействовать эффективно и информативно.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
Что известно про иерархию исключений ?
Спросят с вероятностью 7%
Иерархия исключений представляет собой организацию встроенных исключений в иерархическую структуру, которая облегчает обработку ошибок и исключительных ситуаций в программе. Все они наследуются от базового класса
1️⃣ BaseException
- Exception
- ArithmeticError
- ZeroDivisionError: Вызывается при делении на ноль.
- OverflowError: Вызывается, когда результат арифметической операции слишком велик для представления.
- FloatingPointError: Вызывается при выполнении недопустимой арифметической операции с плавающей точкой.
- AttributeError: Вызывается при попытке доступа к несуществующему атрибуту объекта.
- EOFError: Вызывается, когда достигнут конец файла.
- IOError: Вызывается при возникновении ошибок ввода-вывода.
- ImportError: Вызывается при неудачной попытке импорта модуля.
- KeyError: Вызывается при попытке доступа к несуществующему ключу словаря.
- TypeError: Вызывается при попытке выполнения операции с объектом несовместимого типа.
- ValueError: Вызывается, когда функция получает аргумент правильного типа, но недопустимого значения.
- RuntimeError: Вызывается в случае внутренней ошибки интерпретатора.
- StopIteration: Вызывается при достижении конца итератора в операциях итерации.
- KeyboardInterrupt: Вызывается при нажатии пользователем комбинации клавиш прерывания (обычно
2️⃣ SystemExit: Вызывается при завершении программы с помощью функции
3️⃣ KeyboardInterrupt: Вызывается при прерывании программы пользователем (обычно
4️⃣ GeneratorExit: Вызывается при закрытии генератора.
5️⃣ Exception: Базовый класс для всех встроенных исключений.
Использование исключений позволяет ловить и обрабатывать ошибки и исключения в программе, что делает код более надежным и стабильным. Вы можете использовать блоки
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 7%
Иерархия исключений представляет собой организацию встроенных исключений в иерархическую структуру, которая облегчает обработку ошибок и исключительных ситуаций в программе. Все они наследуются от базового класса
BaseException. Ниже приведена общая иерархия исключений:1️⃣ BaseException
- Exception
- ArithmeticError
- ZeroDivisionError: Вызывается при делении на ноль.
- OverflowError: Вызывается, когда результат арифметической операции слишком велик для представления.
- FloatingPointError: Вызывается при выполнении недопустимой арифметической операции с плавающей точкой.
- AttributeError: Вызывается при попытке доступа к несуществующему атрибуту объекта.
- EOFError: Вызывается, когда достигнут конец файла.
- IOError: Вызывается при возникновении ошибок ввода-вывода.
- ImportError: Вызывается при неудачной попытке импорта модуля.
- KeyError: Вызывается при попытке доступа к несуществующему ключу словаря.
- TypeError: Вызывается при попытке выполнения операции с объектом несовместимого типа.
- ValueError: Вызывается, когда функция получает аргумент правильного типа, но недопустимого значения.
- RuntimeError: Вызывается в случае внутренней ошибки интерпретатора.
- StopIteration: Вызывается при достижении конца итератора в операциях итерации.
- KeyboardInterrupt: Вызывается при нажатии пользователем комбинации клавиш прерывания (обычно
Ctrl+C).2️⃣ SystemExit: Вызывается при завершении программы с помощью функции
sys.exit().3️⃣ KeyboardInterrupt: Вызывается при прерывании программы пользователем (обычно
Ctrl+C).4️⃣ GeneratorExit: Вызывается при закрытии генератора.
5️⃣ Exception: Базовый класс для всех встроенных исключений.
Использование исключений позволяет ловить и обрабатывать ошибки и исключения в программе, что делает код более надежным и стабильным. Вы можете использовать блоки
try, except, else и finally для обработки исключений.➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤2
Какие существуют типы HTTP запросов и в чем их отличия ?
Спросят с вероятностью 10%
Существует несколько типов HTTP-запросов, каждый из которых выполняет определенную операцию при взаимодействии клиента с сервером. Вот основные из них и их отличия:
1️⃣ GET: Запрашивает представление ресурса. Этот тип запроса используется для получения данных от сервера. Обычно он не должен иметь побочных эффектов на данные на сервере, и его можно кэшировать. Пример использования - получение страницы веб-сайта.
2️⃣ POST: Отправляет данные для обработки на сервере. Обычно используется для отправки данных HTML-формы на сервер для обработки. Этот тип запроса может иметь побочные эффекты на данные на сервере и не должен кэшироваться. Пример использования - отправка формы с данными для создания нового пользователя.
3️⃣ PUT: Загружает содержимое запроса на указанный URI. Если ресурс существует, он перезаписывается. Если ресурс не существует, сервер может создать его с использованием предоставленных данных. Пример использования - обновление существующего ресурса с определенными данными.
4️⃣ DELETE: Удаляет указанный ресурс. Пример использования - удаление записи из базы данных.
5️⃣ PATCH: Применяет частичные модификации к ресурсу. Обычно используется для обновления ресурса с частичными данными. Пример использования - изменение только определенных полей записи в базе данных.
6️⃣ HEAD: Запрашивает заголовки, которые будут возвращены, как если бы был сделан запрос GET, но без тела ответа. Этот тип запроса часто используется для проверки доступности ресурса или получения информации о ресурсе без загрузки его полного содержимого.
7️⃣ OPTIONS: Используется для запроса возможностей и параметров коммуникации для указанного ресурса. Например, сервер может использовать этот тип запроса для сообщения клиенту о поддерживаемых методах запросов или разрешенных заголовках.
8️⃣ TRACE: Используется для тестирования соединения по маршруту к ресурсу. Он выполняет циклический обход маршрутизации, который включает в себя передачу запроса через все узлы маршрута. Этот метод редко используется в реальных приложениях из-за возможности злоумышленного использования.
Каждый из этих типов запросов имеет свои особенности и подходит для определенных сценариев использования.Выбор конкретного типа зависит от требуемого действия и контекста взаимодействия с сервером.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 10%
Существует несколько типов HTTP-запросов, каждый из которых выполняет определенную операцию при взаимодействии клиента с сервером. Вот основные из них и их отличия:
1️⃣ GET: Запрашивает представление ресурса. Этот тип запроса используется для получения данных от сервера. Обычно он не должен иметь побочных эффектов на данные на сервере, и его можно кэшировать. Пример использования - получение страницы веб-сайта.
2️⃣ POST: Отправляет данные для обработки на сервере. Обычно используется для отправки данных HTML-формы на сервер для обработки. Этот тип запроса может иметь побочные эффекты на данные на сервере и не должен кэшироваться. Пример использования - отправка формы с данными для создания нового пользователя.
3️⃣ PUT: Загружает содержимое запроса на указанный URI. Если ресурс существует, он перезаписывается. Если ресурс не существует, сервер может создать его с использованием предоставленных данных. Пример использования - обновление существующего ресурса с определенными данными.
4️⃣ DELETE: Удаляет указанный ресурс. Пример использования - удаление записи из базы данных.
5️⃣ PATCH: Применяет частичные модификации к ресурсу. Обычно используется для обновления ресурса с частичными данными. Пример использования - изменение только определенных полей записи в базе данных.
6️⃣ HEAD: Запрашивает заголовки, которые будут возвращены, как если бы был сделан запрос GET, но без тела ответа. Этот тип запроса часто используется для проверки доступности ресурса или получения информации о ресурсе без загрузки его полного содержимого.
7️⃣ OPTIONS: Используется для запроса возможностей и параметров коммуникации для указанного ресурса. Например, сервер может использовать этот тип запроса для сообщения клиенту о поддерживаемых методах запросов или разрешенных заголовках.
8️⃣ TRACE: Используется для тестирования соединения по маршруту к ресурсу. Он выполняет циклический обход маршрутизации, который включает в себя передачу запроса через все узлы маршрута. Этот метод редко используется в реальных приложениях из-за возможности злоумышленного использования.
Каждый из этих типов запросов имеет свои особенности и подходит для определенных сценариев использования.Выбор конкретного типа зависит от требуемого действия и контекста взаимодействия с сервером.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Какая в Python типизация, статическая или динамичная ?
Спросят с вероятностью 7%
Типизация является динамической, что означает, что типы переменных определяются во время выполнения программы, а не на этапе компиляции. Другими словами, не требуется явно указывать тип переменной при ее объявлении; тип переменной определяется автоматически во время выполнения на основе ее значения.
Пример:
Это означает, что переменная
В статической типизации, наоборот, типы переменных должны быть объявлены явно при их объявлении и не могут изменяться во время выполнения программы. Это делает статическую типизацию более строгой и обычно помогает предотвратить некоторые типичные ошибки в коде на этапе компиляции.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 7%
Типизация является динамической, что означает, что типы переменных определяются во время выполнения программы, а не на этапе компиляции. Другими словами, не требуется явно указывать тип переменной при ее объявлении; тип переменной определяется автоматически во время выполнения на основе ее значения.
Пример:
x = 10 # x является целым числом (int)
x = "Hello" # x теперь является строкой (str)
x = [1, 2, 3] # x теперь является списком (list)
Это означает, что переменная
x может содержать значения разных типов в разные моменты времени выполнения программы.В статической типизации, наоборот, типы переменных должны быть объявлены явно при их объявлении и не могут изменяться во время выполнения программы. Это делает статическую типизацию более строгой и обычно помогает предотвратить некоторые типичные ошибки в коде на этапе компиляции.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤1
Что такое Docker ?
Спросят с вероятностью 10%
Docker - это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнеры позволяют упаковывать приложения и все их зависимости в единую среду, что делает их переносимыми и масштабируемыми. Эта платформа предоставляет инструменты для создания, развертывания и управления контейнерами, облегчая процесс разработки и упрощая конфигурацию среды выполнения приложений.
Основные концепции Docker включают:
1️⃣ Контейнеры: Нужны для упаковки приложений и их зависимостей в единую среду. Контейнеры изолированы друг от друга и от хост-системы, что обеспечивает надежную и консистентную среду выполнения приложений.
2️⃣ Образы: Шаблоны для создания контейнеров. Они включают в себя все необходимые компоненты приложения и его зависимости. Образы могут быть созданы вручную или автоматически с использованием Dockerfile, который описывает конфигурацию контейнера.
3️⃣ Dockerfile: Текстовый файл, который содержит инструкции для создания образа. Он определяет все этапы установки и настройки приложения в контейнере, что позволяет автоматизировать процесс создания образов.
4️⃣ Реестр Docker: Сервис, который хранит образы. Он позволяет разработчикам делиться образами и использовать их для создания контейнеров на различных хост-системах.
5️⃣ Docker Engine: Основной компонент, который управляет созданием, запуском и управлением контейнерами. Он включает в себя клиентские и серверные компоненты, которые общаются между собой с помощью API.
6️⃣ Docker Compose: Инструмент для определения и запуска многоконтейнерных приложений. Он позволяет определять структуру приложения и его зависимости в файле docker-compose.yml, что упрощает развертывание и управление многочастными приложениями.
Docker облегчает процесс разработки, тестирования и развертывания приложений, обеспечивая консистентную и изолированную среду выполнения для приложений. Он также позволяет масштабировать приложения и обеспечивать их высокую доступность с помощью контейнерной оркестрации, такой как Kubernetes.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 10%
Docker - это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнеры позволяют упаковывать приложения и все их зависимости в единую среду, что делает их переносимыми и масштабируемыми. Эта платформа предоставляет инструменты для создания, развертывания и управления контейнерами, облегчая процесс разработки и упрощая конфигурацию среды выполнения приложений.
Основные концепции Docker включают:
1️⃣ Контейнеры: Нужны для упаковки приложений и их зависимостей в единую среду. Контейнеры изолированы друг от друга и от хост-системы, что обеспечивает надежную и консистентную среду выполнения приложений.
2️⃣ Образы: Шаблоны для создания контейнеров. Они включают в себя все необходимые компоненты приложения и его зависимости. Образы могут быть созданы вручную или автоматически с использованием Dockerfile, который описывает конфигурацию контейнера.
3️⃣ Dockerfile: Текстовый файл, который содержит инструкции для создания образа. Он определяет все этапы установки и настройки приложения в контейнере, что позволяет автоматизировать процесс создания образов.
4️⃣ Реестр Docker: Сервис, который хранит образы. Он позволяет разработчикам делиться образами и использовать их для создания контейнеров на различных хост-системах.
5️⃣ Docker Engine: Основной компонент, который управляет созданием, запуском и управлением контейнерами. Он включает в себя клиентские и серверные компоненты, которые общаются между собой с помощью API.
6️⃣ Docker Compose: Инструмент для определения и запуска многоконтейнерных приложений. Он позволяет определять структуру приложения и его зависимости в файле docker-compose.yml, что упрощает развертывание и управление многочастными приложениями.
Docker облегчает процесс разработки, тестирования и развертывания приложений, обеспечивая консистентную и изолированную среду выполнения для приложений. Он также позволяет масштабировать приложения и обеспечивать их высокую доступность с помощью контейнерной оркестрации, такой как Kubernetes.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍4👾2
Что такое динамическая типизация ?
Спросят с вероятностью 7%
Динамическая типизация - это подход к типизации, при котором типы переменных определяются во время выполнения программы, а не на этапе компиляции. С динамической типизацией тип переменной связывается с данными во время выполнения на основе их значения и контекста использования. Это означает, что переменная может содержать данные любого типа, и ее тип может изменяться в процессе выполнения программы.
Пример:
В этом примере переменная
Преимущества динамической типизации включают гибкость и удобство использования. Однако это также может привести к потенциальным ошибкам во время выполнения, если переменная содержит неожиданные данные, и затрудняет статический анализ кода на этапе компиляции.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 7%
Динамическая типизация - это подход к типизации, при котором типы переменных определяются во время выполнения программы, а не на этапе компиляции. С динамической типизацией тип переменной связывается с данными во время выполнения на основе их значения и контекста использования. Это означает, что переменная может содержать данные любого типа, и ее тип может изменяться в процессе выполнения программы.
Пример:
x = 10 # x является целым числом (int)
x = "Hello" # x теперь является строкой (str)
x = [1, 2, 3] # x теперь является списком (list)
В этом примере переменная
x сначала содержит целое число, затем строку, а затем список. Тип переменной определяется автоматически во время выполнения программы на основе значения, присвоенного переменной.Преимущества динамической типизации включают гибкость и удобство использования. Однако это также может привести к потенциальным ошибкам во время выполнения, если переменная содержит неожиданные данные, и затрудняет статический анализ кода на этапе компиляции.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3
Что такое нереляционные базы данных ?
Спросят с вероятностью 10%
Нереляционные базы данных (NoSQL) - это тип баз данных, который отличается от традиционных реляционных по своей структуре и модели данных. Вот их некоторые общие характеристики:
1️⃣ Гибкая схема данных: В отличие от реляционных баз данных, которые требуют строгой схемы данных, нереляционные обычно позволяют хранить разнородные данные с разной структурой в одной и той же базе данных. Это делает их более гибкими и масштабируемыми для хранения различных типов данных.
2️⃣ Горизонтальное масштабирование: Многие нереляционные базы данных разработаны с учетом горизонтального масштабирования, что позволяет им эффективно масштабироваться на большие объемы данных и высокие нагрузки. Это достигается за счет распределения данных по нескольким узлам кластера.
3️⃣ Модели данных: Нереляционные базы данных могут поддерживать различные модели данных, такие как ключ-значение, документные, столбцовые и графовые модели. Каждая модель предоставляет специализированные возможности для хранения и обработки данных.
4️⃣ Производительность: Нереляционные базы данных часто обладают высокой производительностью при обработке больших объемов данных и параллельном выполнении запросов. Это делает их популярным выбором для приложений с высокими требованиями к производительности и масштабируемости.
5️⃣ Примеры нереляционных баз данных: Некоторые из наиболее известных нереляционных баз данных включают MongoDB (документная модель), Cassandra (столбцовая модель), Redis (ключ-значение), Neo4j (графовая модель) и Amazon DynamoDB (ключ-значение и документная модель).
Нереляционные базы данных становятся все более популярными в последние годы благодаря своей гибкости, масштабируемости и способности обрабатывать разнообразные типы данных и нагрузки. Они часто используются в веб-приложениях, аналитике данных, системах обработки потоков и других сценариях, где требуются высокая производительность и гибкость хранения данных.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 10%
Нереляционные базы данных (NoSQL) - это тип баз данных, который отличается от традиционных реляционных по своей структуре и модели данных. Вот их некоторые общие характеристики:
1️⃣ Гибкая схема данных: В отличие от реляционных баз данных, которые требуют строгой схемы данных, нереляционные обычно позволяют хранить разнородные данные с разной структурой в одной и той же базе данных. Это делает их более гибкими и масштабируемыми для хранения различных типов данных.
2️⃣ Горизонтальное масштабирование: Многие нереляционные базы данных разработаны с учетом горизонтального масштабирования, что позволяет им эффективно масштабироваться на большие объемы данных и высокие нагрузки. Это достигается за счет распределения данных по нескольким узлам кластера.
3️⃣ Модели данных: Нереляционные базы данных могут поддерживать различные модели данных, такие как ключ-значение, документные, столбцовые и графовые модели. Каждая модель предоставляет специализированные возможности для хранения и обработки данных.
4️⃣ Производительность: Нереляционные базы данных часто обладают высокой производительностью при обработке больших объемов данных и параллельном выполнении запросов. Это делает их популярным выбором для приложений с высокими требованиями к производительности и масштабируемости.
5️⃣ Примеры нереляционных баз данных: Некоторые из наиболее известных нереляционных баз данных включают MongoDB (документная модель), Cassandra (столбцовая модель), Redis (ключ-значение), Neo4j (графовая модель) и Amazon DynamoDB (ключ-значение и документная модель).
Нереляционные базы данных становятся все более популярными в последние годы благодаря своей гибкости, масштабируемости и способности обрабатывать разнообразные типы данных и нагрузки. Они часто используются в веб-приложениях, аналитике данных, системах обработки потоков и других сценариях, где требуются высокая производительность и гибкость хранения данных.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤4🤔1
Что такое чистая функция ?
Спросят с вероятностью 7%
Чистая функция - это функция, которая обладает двумя основными свойствами:
1️⃣ Использует только свои аргументы: Не имеет побочных эффектов и не зависит от состояния программы вне своих аргументов. Это означает, что результат выполнения функции зависит только от ее входных параметров, и она не взаимодействует с глобальными переменными или состоянием окружения.
2️⃣ Возвращает одинаковый результат для одних и тех же входных данных: Для одних и тех же входных данных всегда возвращает один и тот же результат, без побочных эффектов.
Пример:
Функция
Преимущества чистых функций включают упрощение отладки, тестирования и понимания кода, а также уменьшение побочных эффектов и улучшение модульности программы. Они также облегчают параллельное и конкурентное программирование, поскольку их поведение предсказуемо и не зависит от контекста выполнения.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 7%
Чистая функция - это функция, которая обладает двумя основными свойствами:
1️⃣ Использует только свои аргументы: Не имеет побочных эффектов и не зависит от состояния программы вне своих аргументов. Это означает, что результат выполнения функции зависит только от ее входных параметров, и она не взаимодействует с глобальными переменными или состоянием окружения.
2️⃣ Возвращает одинаковый результат для одних и тех же входных данных: Для одних и тех же входных данных всегда возвращает один и тот же результат, без побочных эффектов.
Пример:
def add(a, b):
return a + b
Функция
add() является чистой, потому что она принимает два аргумента a и b, и возвращает результат сложения этих аргументов. Она не изменяет глобальные переменные, не выполняет ввод-вывод операций и не зависит от состояния окружающей среды.Преимущества чистых функций включают упрощение отладки, тестирования и понимания кода, а также уменьшение побочных эффектов и улучшение модульности программы. Они также облегчают параллельное и конкурентное программирование, поскольку их поведение предсказуемо и не зависит от контекста выполнения.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍3
Что такое транзакция ?
Спросят с вероятностью 10%
Транзакция в базах данных представляет собой логическую операцию, состоящую из одного или нескольких SQL запросов, которые образуют единое целое. Основные характеристики транзакций в базах данных:
1️⃣ Атомарность (Atomicity): Транзакция является атомарной, что означает, что она либо полностью выполняется, либо не выполняется вообще. Если один из запросов в транзакции не может быть выполнен, то все изменения, сделанные этой транзакцией, отменяются (откат).
2️⃣ Согласованность (Consistency): Транзакция должна обеспечивать согласованность базы данных. Это означает, что только допустимые изменения могут быть внесены в базу данных, и ее целостность сохраняется после завершения транзакции.
3️⃣ Изолированность (Isolation): Транзакции должны выполняться изолированно друг от друга. Это означает, что изменения, внесенные одной транзакцией, не должны видны другим транзакциям до тех пор, пока они не будут зафиксированы (или завершены).
4️⃣ Долговечность (Durability): После успешного завершения транзакции ее изменения должны остаться постоянными и устойчивыми к сбоям системы. Даже в случае отказа системы или перезагрузки, изменения, внесенные транзакцией, должны быть сохранены.
Пример:
В этом примере два запроса обновления выполняются в рамках одной транзакции. Если оба запроса успешно завершаются, изменения становятся постоянными (фиксируются) с помощью команды
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 10%
Транзакция в базах данных представляет собой логическую операцию, состоящую из одного или нескольких SQL запросов, которые образуют единое целое. Основные характеристики транзакций в базах данных:
1️⃣ Атомарность (Atomicity): Транзакция является атомарной, что означает, что она либо полностью выполняется, либо не выполняется вообще. Если один из запросов в транзакции не может быть выполнен, то все изменения, сделанные этой транзакцией, отменяются (откат).
2️⃣ Согласованность (Consistency): Транзакция должна обеспечивать согласованность базы данных. Это означает, что только допустимые изменения могут быть внесены в базу данных, и ее целостность сохраняется после завершения транзакции.
3️⃣ Изолированность (Isolation): Транзакции должны выполняться изолированно друг от друга. Это означает, что изменения, внесенные одной транзакцией, не должны видны другим транзакциям до тех пор, пока они не будут зафиксированы (или завершены).
4️⃣ Долговечность (Durability): После успешного завершения транзакции ее изменения должны остаться постоянными и устойчивыми к сбоям системы. Даже в случае отказа системы или перезагрузки, изменения, внесенные транзакцией, должны быть сохранены.
Пример:
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 123;
UPDATE accounts SET balance = balance + 100 WHERE id = 456;
COMMIT;
В этом примере два запроса обновления выполняются в рамках одной транзакции. Если оба запроса успешно завершаются, изменения становятся постоянными (фиксируются) с помощью команды
COMMIT. Если в ходе выполнения транзакции возникает ошибка, то она откатывается с помощью команды ROLLBACK, и все изменения отменяются.➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤3
Какие существуют парадигмы ?
Спросят с вероятностью 7%
Применяются различные парадигмы, каждая из которых предоставляет свои собственные концепции и подходы к написанию кода. Ниже приведены основные парадигмы, которые широко используются:
1️⃣ Процедурное программирование: Программа разбивается на набор функций, которые манипулируют данными. Основной упор делается на процедуры, или функции, которые могут принимать аргументы и возвращать значения.
2️⃣ Объектно-ориентированное программирование (ООП): Является одним из ключевых аспектов. Оно основано на использовании классов и объектов. Классы определяют структуру данных и поведение объектов, а объекты являются экземплярами этих классов.
3️⃣ Функциональное программирование: Оно поддерживается за счет функций первого класса, замыканий, анонимных функций (лямбда-функций) и функций высшего порядка. Это позволяет использовать функции как аргументы других функций и возвращать функции в качестве результатов.
4️⃣ Императивное программирование: Это включает в себя использование операторов присваивания, циклов, условных операторов и т. д.
5️⃣ Декларативное программирование: Здесь программа описывает желаемый результат, а не последовательность шагов для его достижения. Примером декларативного подхода являются генераторы списков и выражения списков.
6️⃣ Реактивное программирование: Здесь акцент делается на потоке данных и реакции на изменения. Оно может быть реализовано с использованием библиотек, таких как RxPy.
7️⃣ Метапрограммирование: Метапрограммирование позволяет программам изменять свою структуру или поведение во время выполнения. Это включает в себя использование декораторов, метаклассов, атрибутов класса и других механизмов метапрограммирования.
Это лишь несколько примеров парадигм программирования, которые могут быть использованы. Комбинация этих парадигм позволяет создавать гибкие и выразительные программы, которые могут эффективно решать различные задачи.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 7%
Применяются различные парадигмы, каждая из которых предоставляет свои собственные концепции и подходы к написанию кода. Ниже приведены основные парадигмы, которые широко используются:
1️⃣ Процедурное программирование: Программа разбивается на набор функций, которые манипулируют данными. Основной упор делается на процедуры, или функции, которые могут принимать аргументы и возвращать значения.
2️⃣ Объектно-ориентированное программирование (ООП): Является одним из ключевых аспектов. Оно основано на использовании классов и объектов. Классы определяют структуру данных и поведение объектов, а объекты являются экземплярами этих классов.
3️⃣ Функциональное программирование: Оно поддерживается за счет функций первого класса, замыканий, анонимных функций (лямбда-функций) и функций высшего порядка. Это позволяет использовать функции как аргументы других функций и возвращать функции в качестве результатов.
4️⃣ Императивное программирование: Это включает в себя использование операторов присваивания, циклов, условных операторов и т. д.
5️⃣ Декларативное программирование: Здесь программа описывает желаемый результат, а не последовательность шагов для его достижения. Примером декларативного подхода являются генераторы списков и выражения списков.
6️⃣ Реактивное программирование: Здесь акцент делается на потоке данных и реакции на изменения. Оно может быть реализовано с использованием библиотек, таких как RxPy.
7️⃣ Метапрограммирование: Метапрограммирование позволяет программам изменять свою структуру или поведение во время выполнения. Это включает в себя использование декораторов, метаклассов, атрибутов класса и других механизмов метапрограммирования.
Это лишь несколько примеров парадигм программирования, которые могут быть использованы. Комбинация этих парадигм позволяет создавать гибкие и выразительные программы, которые могут эффективно решать различные задачи.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤2
Что такое git ?
Спросят с вероятностью 10%
Git - это распределенная система управления версиями, которая предназначена для отслеживания изменений в исходном коде программного обеспечения и координации работы нескольких разработчиков над проектом. Эта система разработана Линусом Торвальдсом в 2005 году и с тех пор стала одним из самых популярных инструментов разработки программного обеспечения.
Основные функции:
1️⃣ Отслеживание изменений: Отслеживает изменения в исходном коде проекта, включая добавление, удаление и изменение файлов. Каждое изменение сохраняется в репозитории в виде коммита.
2️⃣ Ветвление и слияние: Поддерживает ветвление, что позволяет разработчикам создавать отдельные ветки для работы над определенными функциями или задачами. После завершения работы ветки могут быть объединены обратно в основную ветку (мастер).
3️⃣ Распределенная система: Каждый разработчик работает с полной копией репозитория, что делает его распределенной системой управления версиями. Это означает, что разработчики могут работать независимо друг от друга и даже офлайн.
4️⃣ История изменений: Сохраняет полную историю изменений проекта, включая комментарии к коммитам, авторов и временные метки изменений. Это обеспечивает прозрачность и возможность восстановления предыдущих состояний проекта.
5️⃣ Совместная работа: Облегчает совместную работу нескольких разработчиков над проектом. Он позволяет им делиться изменениями через удаленные репозитории и обмениваться ветками и коммитами.
Git широко используется в различных отраслях разработки программного обеспечения, включая веб-разработку, разработку мобильных приложений, разработку игр и другие. Он стал стандартным инструментом для управления версиями кода благодаря своей простоте, гибкости и мощным возможностям.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 10%
Git - это распределенная система управления версиями, которая предназначена для отслеживания изменений в исходном коде программного обеспечения и координации работы нескольких разработчиков над проектом. Эта система разработана Линусом Торвальдсом в 2005 году и с тех пор стала одним из самых популярных инструментов разработки программного обеспечения.
Основные функции:
1️⃣ Отслеживание изменений: Отслеживает изменения в исходном коде проекта, включая добавление, удаление и изменение файлов. Каждое изменение сохраняется в репозитории в виде коммита.
2️⃣ Ветвление и слияние: Поддерживает ветвление, что позволяет разработчикам создавать отдельные ветки для работы над определенными функциями или задачами. После завершения работы ветки могут быть объединены обратно в основную ветку (мастер).
3️⃣ Распределенная система: Каждый разработчик работает с полной копией репозитория, что делает его распределенной системой управления версиями. Это означает, что разработчики могут работать независимо друг от друга и даже офлайн.
4️⃣ История изменений: Сохраняет полную историю изменений проекта, включая комментарии к коммитам, авторов и временные метки изменений. Это обеспечивает прозрачность и возможность восстановления предыдущих состояний проекта.
5️⃣ Совместная работа: Облегчает совместную работу нескольких разработчиков над проектом. Он позволяет им делиться изменениями через удаленные репозитории и обмениваться ветками и коммитами.
Git широко используется в различных отраслях разработки программного обеспечения, включая веб-разработку, разработку мобильных приложений, разработку игр и другие. Он стал стандартным инструментом для управления версиями кода благодаря своей простоте, гибкости и мощным возможностям.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🤯2
В чем отличие rebase от merge ?
Спросят с вероятностью 10%
Rebase и merge - это два основных способа интеграции изменений из одной ветки в другую в системе контроля версий Git. Оба способа имеют свои преимущества и недостатки, и выбор между ними зависит от конкретной ситуации и предпочтений команды разработчиков. Вот основные отличия:
1️⃣ Merge (слияние):
- Создает новый коммит, который объединяет изменения из двух веток (обычно текущей ветки и ветки, которую вы сливаете).
- Этот новый коммит имеет двух родителей - по одному от каждой ветки, которые были слиты.
- В результате история изменений остается четкой и информативной, так как она отображает точно, какие изменения были внесены в каждой ветке и когда они были объединены.
- Однако это может привести к "клубку слияний", когда в истории изменений появляется много коммитов слияния, что усложняет анализ истории.
2️⃣ Rebase (перебазирование):
- Берет коммиты из текущей ветки и "перебазирует" их на вершину целевой ветки (обычно на место, где текущая ветка была отделена).
- Это означает, что история изменений выглядит как линейная последовательность коммитов без дополнительных коммитов слияния.
- Позволяет поддерживать более чистую и простую историю изменений, что облегчает ее понимание и анализ.
- Однако перебазирование может быть опасным при работе с общими ветками, так как это изменяет историю коммитов, что может привести к проблемам с синхронизацией изменений и потере данных.
Основное различие между rebase и merge заключается в том, каким образом изменения интегрируются в историю проекта. Merge создает дополнительные коммиты слияния, сохраняя историю каждой ветки, тогда как rebase перебазирует изменения на вершину другой ветки, создавая линейную историю изменений.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
🧩 Идущий | 🔐 Собесы | 🔐 Тестовые
Спросят с вероятностью 10%
Rebase и merge - это два основных способа интеграции изменений из одной ветки в другую в системе контроля версий Git. Оба способа имеют свои преимущества и недостатки, и выбор между ними зависит от конкретной ситуации и предпочтений команды разработчиков. Вот основные отличия:
1️⃣ Merge (слияние):
- Создает новый коммит, который объединяет изменения из двух веток (обычно текущей ветки и ветки, которую вы сливаете).
- Этот новый коммит имеет двух родителей - по одному от каждой ветки, которые были слиты.
- В результате история изменений остается четкой и информативной, так как она отображает точно, какие изменения были внесены в каждой ветке и когда они были объединены.
- Однако это может привести к "клубку слияний", когда в истории изменений появляется много коммитов слияния, что усложняет анализ истории.
2️⃣ Rebase (перебазирование):
- Берет коммиты из текущей ветки и "перебазирует" их на вершину целевой ветки (обычно на место, где текущая ветка была отделена).
- Это означает, что история изменений выглядит как линейная последовательность коммитов без дополнительных коммитов слияния.
- Позволяет поддерживать более чистую и простую историю изменений, что облегчает ее понимание и анализ.
- Однако перебазирование может быть опасным при работе с общими ветками, так как это изменяет историю коммитов, что может привести к проблемам с синхронизацией изменений и потере данных.
Основное различие между rebase и merge заключается в том, каким образом изменения интегрируются в историю проекта. Merge создает дополнительные коммиты слияния, сохраняя историю каждой ветки, тогда как rebase перебазирует изменения на вершину другой ветки, создавая линейную историю изменений.
➡️ Примеры ответов
➡️ Список всех вопросов на Python Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🤯2