Python | Вопросы собесов
13.9K subscribers
35 photos
1 video
1 file
917 links
Cайт: easyoffer.ru
Реклама: @easyoffer_adv
ВП: @easyoffer_vp

Тесты t.me/+20tRfhrwPpM4NDQy
Задачи t.me/+nsl4meWmhfQwNDVi
Вакансии t.me/+cXGKkrOY2-w3ZTky
Download Telegram
🎉Разыгрываем пожизненный доступ к AI-ассистенту для поиска работы для 3 подписчиков

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

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

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

Мы посчитали, стоимость одной такой подписки ну хотя бы на 10 лет составляла бы 420.000 руб.

Условия конкурса простые:


1. Подписаться на 4 наших канала:
Софи и партнёры
Young & Junior - вакансии IT
Young Стажёр - стажировки ИТ
IT мероприятия для стажеров и студентов
2. Нажать кнопку "участвую" под этим постом.

15 июля, в 19:00, мы в прямом эфире проведем запуск Софи, а в 20:00 опубликуем результаты конкурса в канале Софи и Партнёры.

Каждый победитель получит бесплатный доступ к Софи навсегда.

Всем удачи и до встречи в прямом эфире🚀
🤔 Как конвертировать список в строку?

Преобразовать можно, объединив все элементы списка в одну строку через разделитель. Это актуально, если элементы — строки. Если элементы другого типа, их нужно сначала привести к строкам.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
🤔 Что случится с сервером при использовании GET?

Когда сервер получает HTTP-запрос типа GET, он выполняет следующие действия

🟠Анализ запроса
проверяет URL и параметры в строке запроса (например, ?id=123).
🟠Поиск ресурса
находит запрашиваемый файл, данные из базы или другой ресурс.
🟠Возврат ответа
отправляет данные клиенту (если ресурс найден — код 200, если нет — 404).

🚩Особенности GET-запроса

🟠Безопасный
не изменяет данные на сервере, используется только для чтения.
🟠Идемпотентный
повторные запросы дают одинаковый результат.
🟠Параметры в URL
данные передаются через строку запроса, что не подходит для конфиденциальной информации.

import requests

response = requests.get("https://api.example.com/data", params={"id": 123})
print(response.text) # Данные с сервера


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🤔 Что такое функция высшего порядка?

Функция, которая:
- Принимает другие функции как аргументы.
- Или возвращает функции как результат. Пример: map, filter, reduce или пользовательские обёртки.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4
🤔 Как работает функция filter()?

filter() — это встроенная функция Python, которая отбирает элементы из последовательности по заданному условию.
filter(function, iterable)


🚩Как работает `filter()`?

Пример 1: Фильтрация чётных чисел
numbers = [1, 2, 3, 4, 5, 6]

# Оставляем только чётные числа
even_numbers = filter(lambda x: x % 2 == 0, numbers)

print(list(even_numbers)) # [2, 4, 6]


Пример 2: Фильтрация строк по длине
words = ["apple", "kiwi", "banana", "cherry"]

# Оставляем только слова длиной больше 5 символов
long_words = filter(lambda word: len(word) > 5, words)

print(list(long_words)) # ['banana', 'cherry']


Пример 3: Фильтрация None и пустых значений
values = [None, 0, "", "hello", 42, [], {}]

# Оставляем только "истинные" значения
filtered_values = filter(None, values)

print(list(filtered_values)) # ['hello', 42]


Пример 4: Использование filter() с def
def is_positive(n):
return n > 0

numbers = [-5, -2, 0, 3, 7, -1]
positive_numbers = filter(is_positive, numbers)

print(list(positive_numbers)) # [3, 7]


🚩Чем `filter()` лучше `for` + `if`?

Более короткий и читаемый код
# С `filter()`
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))

# С `for` + `if`
even_numbers = [x for x in numbers if x % 2 == 0]


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔3
🤔 В чём разница между MRO2 и MRO3?

1. MRO2 (Method Resolution Order, Python 2): использует алгоритм глубинного поиска (DFS) для определения порядка наследования. Это может привести к дублированию классов в результирующем списке.
2. MRO3 (Python 3): использует алгоритм C3 Linearization, который улучшает порядок наследования, избегает дублирования и поддерживает принципы разрешения наследования (линеаризацию).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3
🤔 Что в python не является объектом?

В Python практически всё является объектом: числа, строки, функции, классы, модули и даже сам интерпретатор Python рассматривает их как объекты. Однако есть несколько вещей, которые объектами не являются:

🟠Операторы и синтаксические конструкции
Операторы (+, -, *, and, or, not и т. д.) сами по себе не являются объектами. Они — часть синтаксиса языка и не имеют представления в виде объектов в памяти.
   a = 10 + 5  # Оператор "+" выполняет сложение, но сам по себе не объект
print(type(+)) # Ошибка: нельзя получить тип оператора


🟠Ключевые слова (keywords)
Встроенные ключевые слова Python (if, else, while, for, def, class, return и т. д.) не являются объектами. Они зарезервированы интерпретатором и используются для управления потоком выполнения кода.
   print(type(if))  # Ошибка: ключевое слово не является объектом


🟠Идентификаторы переменных
Хотя переменные ссылаются на объекты, сами идентификаторы (имена переменных) — это просто ссылки, а не объекты.
   x = 42  # x — это имя, а не объект
print(type(x)) # Это целое число, но само имя "x" объектом не является


🟠Аннотации типов во время компиляции
Аннотации типов в Python, такие как list[str], не создают объекты во время компиляции кода. Они интерпретируются только на уровне анализа типов.
   def func(x: int) -> str:
return str(x)


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
🤔 Что такое type?

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


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🤔 Как проверить, что значение есть в словаре в Python?

В Python можно проверять наличие ключа или значения в словаре разными способами.

🟠Проверка наличия ключа (`in`)
Самый быстрый и правильный способ — проверять ключи (keys), так как доступ к ним O(1).
data = {"name": "Alice", "age": 25, "city": "New York"}

# Проверяем, есть ли ключ "age"
if "age" in data:
print("Ключ найден!")


Вывод
Ключ найден!


Не надо проверять так
if data.get("age") is not None:  #  Работает, но `in` быстрее


🟠Проверка наличия значения (`in values()`)
Если нужно проверить значение, используем values()
if 25 in data.values():
print("Значение найдено!")


Вывод
Значение найдено!


🟠Проверка и ключа, и значения (`items()`)
Если нужно проверить пару (ключ, значение)
if ("age", 25) in data.items():
print("Пара (ключ, значение) найдена!")


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🤔 Почему нельзя делать мутабельные типы дефолтными аргументами функции?

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


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥8
🤔 Чем отличаются методы сокрытия?

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

🚩Публичные методы и атрибуты

Доступны из любого места, как внутри класса, так и за его пределами. Их имена не начинаются с подчеркиваний.
class MyClass:
def __init__(self):
self.public_attribute = "I am public"

def public_method(self):
return "This is a public method"

obj = MyClass()
print(obj.public_attribute) # Вывод: I am public
print(obj.public_method()) # Вывод: This is a public method


🚩Защищенные методы и атрибуты

Не предназначены для использования за пределами класса и его подклассов. Они обозначаются одним подчеркиванием в начале имени. Это всего лишь соглашение, сигнализирующее другим разработчикам, что такие методы и атрибуты не следует использовать вне класса или его подклассов.
class MyClass:
def __init__(self):
self._protected_attribute = "I am protected"

def _protected_method(self):
return "This is a protected method"

class SubClass(MyClass):
def access_protected(self):
return self._protected_method()

obj = MyClass()
sub_obj = SubClass()

print(sub_obj.access_protected()) # Вывод: This is a protected method


🚩Приватные методы и атрибуты

Скрыты от внешнего доступа и доступны только внутри самого класса. Они обозначаются двумя подчеркиваниями в начале имени. Python реализует это с помощью механизма именования, который изменяет имя метода или атрибута, добавляя к нему имя класса, чтобы затруднить доступ извне.
class MyClass:
def __init__(self):
self.__private_attribute = "I am private"

def __private_method(self):
return "This is a private method"

def access_private(self):
return self.__private_method()

obj = MyClass()

try:
print(obj.__private_attribute)
except AttributeError as e:
print(e) # Вывод: 'MyClass' object has no attribute '__private_attribute'

try:
print(obj.__private_method())
except AttributeError as e:
print(e) # Вывод: 'MyClass' object has no attribute '__private_method'

# Доступ к приватным методам через публичный метод класса
print(obj.access_private()) # Вывод: This is a private method


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🤔 В чём разница между PostgreSQL и MySQL?

1. Поддержка сложных запросов: PostgreSQL лучше справляется с сложными запросами, поддерживает оконные функции, CTE и пользовательские типы данных.
2. Производительность: MySQL быстрее в простых операциях, таких как чтение, но PostgreSQL оптимальнее для сложных операций.
3. Совместимость: PostgreSQL полностью соответствует стандартам SQL, а MySQL использует собственные расширения.
4. Расширяемость: PostgreSQL поддерживает расширения и пользовательские функции, что делает его более гибким для кастомных решений.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍3
🤔 Чем асинхронность отличается от многопоточности?

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

🚩Асинхронность

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

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

🟠Ожидание через "event loop"
Асинхронный подход использует цикл событий (event loop), который управляет выполнением задач. Если задача блокируется, цикл событий переключается на следующую задачу.

🟠Неблокирующий ввод/вывод
Асинхронный код не простаивает в ожидании завершения операций ввода/вывода (I/O). Вместо этого такие операции сигнализируют о завершении через "обещание" (например, Future или asyncio.Task).

import asyncio

async def fetch_data():
print("Начинаем загрузку данных...")
await asyncio.sleep(2) # Асинхронная пауза (имитирует длительную операцию)
print("Данные загружены!")
return {"data": "some data"}

async def main():
print("Старт программы")
data = await fetch_data()
print(f"Результат: {data}")
print("Конец программы")

# Запуск цикла событий
asyncio.run(main())


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

🟠Несколько потоков
Программа создает несколько потоков, каждый из которых выполняет свою задачу.
🟠Параллельное выполнение
Если у процессора несколько ядер, потоки могут выполняться действительно параллельно.
🟠Блокирующий код
В отличие от асинхронного подхода, потоки часто блокируются в ожидании завершения операций (например, I/O).

import threading
import time

def task(name):
print(f"Начало задачи {name}")
time.sleep(2) # Имитация длительной операции
print(f"Конец задачи {name}")

# Создаем и запускаем потоки
thread1 = threading.Thread(target=task, args=("A",))
thread2 = threading.Thread(target=task, args=("B",))

thread1.start()
thread2.start()

# Ожидаем завершения потоков
thread1.join()
thread2.join()
print("Все задачи завершены")


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🤔 Что такое Hosting?

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


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
🤔 Как можно скачать конкретную версию библиотеки через pip?

В pip можно скачать определённую версию библиотеки с помощью оператора ==
pip install имя_библиотеки==версия


🚩Примеры

Установка конкретной версии
pip install numpy==1.21.0


Обновление до последней версии в пределах конкретного диапазона
pip install requests>=2.25,<3.0


Проверка доступных версий перед установкой
pip install имя_библиотеки==


Например
pip install pandas==


Установка из файла requirements.txt
Если нужно установить несколько библиотек с конкретными версиями, можно создать requirements.txt
numpy==1.21.0
requests>=2.25,<3.0
pandas==1.3.0


И выполнить команду
pip install -r requirements.txt


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5💊5
🤔 Array?

Массив в Python — это структура, обеспечивающая компактное хранение однотипных элементов. В стандартной библиотеке есть модуль array, позволяющий работать с такими массивами чисел, более эффективно, чем со списками.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
Forwarded from easyoffer
🎉 easyoffer 2.0 — релиз уже в этом месяце!

Вас ждут новые фичи, о которых мы ранее даже не упоминали. Они сделают путь к офферам ещё быстрее и эффективнее. Расскажу о них чуть позже 👀

В честь запуска мы готовим ограниченную акцию:

Первые 500 покупателей получат:
🚀 PRO тариф на 1 год с 50% скидкой

Что нужно сделать:

🔔 Подпишитесь на этот Telegram-канал, чтобы первыми узнать о старте релиза. Сообщение появится в нем раньше, чем где-либо еще — вы успеете попасть в число первых 500 и получить максимальную выгоду. 🎁 А еще только для подписчиков канала ценный бонус в подарок к PRO тарифу.

📅 Официальный запуск — уже совсем скоро.
Следите за новостями и не пропустите старт!
🤔 Что такое IP адрес и доменное имя?

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

🚩IP-адрес (Internet Protocol Address)

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

🟠IPv4 (Internet Protocol version 4)
Формат: 32-битные числа, записанные в виде четырех десятичных чисел, разделенных точками (например, 192.168.1.1). Пример: 192.168.0.1, 8.8.8.8

🟠IPv6 (Internet Protocol version 6)
Формат: 128-битные числа, записанные в виде восьми групп шестнадцатеричных чисел, разделенных двоеточиями (например, 2001:0db8:85a3:0000:0000:8a2e:0370:7334). Пример: 2001:0db8:85a3:0000:0000:8a2e:0370:7334, ::1 (loopback адрес)

🚩Доменное имя

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

🟠Top-Level Domain (TLD)
Верхний уровень, например, .com, .org, .net.
🟠Second-Level Domain (SLD)
Основная часть доменного имени, например, example в example.com.
🟠Subdomain
Дополнительные уровни, например, www в www.example.com.

🚩Преобразование доменных имен в IP-адреса

Для преобразования доменных имен в IP-адреса используется система доменных имен (DNS, Domain Name System). DNS-серверы выполняют роль "телефонной книги" интернета, переводя доменные имена в соответствующие им IP-адреса.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🤔 Какие методы списков?

– append() — добавить,
– extend() — расширить другим списком,
– insert(), remove(), pop(), clear(),
– index(), count(), sort(), reverse() и др.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20
🤔 В чем отличие асинхронности, threading'га и мультипроцессинга?

Асинхронность, threading и мультипроцессинг - это три различных подхода к параллельному выполнению задач каждый из которых имеет свои особенности и применения:

🚩Асинхронность (Asynchronous)

Асинхронность предполагает выполнение задач без ожидания их завершения. Используется для работы с вводом-выводом (I/O), таким как чтение или запись файлов, сетевые запросы и т. д. В асинхронном коде задачи не блокируют основной поток выполнения, что позволяет эффективно использовать ресурсы процессора. Примеры асинхронных моделей включают в себя асинхронные функции и ключевые слова в Python (например, async, await).

🚩Потоки (Threading)

Потоки позволяют выполнять несколько частей кода (потоков) параллельно в пределах одного процесса. Используются для выполнения многозадачных операций, которые могут быть распределены между несколькими ядрами процессора. Потоки могут выполняться параллельно, но могут также конкурировать за общие ресурсы, что может привести к проблемам синхронизации и безопасности. В некоторых языках, таких как Python, использование потоков ограничено из-за GIL (Global Interpreter Lock), что может снижать эффективность при использовании множества потоков для CPU-интенсивных задач.

🚩Мультипроцессинг (Multiprocessing)

Мультипроцессинг также позволяет выполнять несколько частей кода параллельно, но каждая часть выполняется в отдельном процессе. Каждый процесс имеет свое собственное пространство памяти, что делает мультипроцессинг более подходящим для многозадачных вычислений на многоядерных системах. Процессы обычно имеют больший накладные расходы по сравнению с потоками, поскольку каждый из них требует своих собственных ресурсов памяти и управления. Мультипроцессинг избегает проблемы GIL, что делает его более эффективным для CPU-интенсивных задач в Python и других языках.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤔1