Python собеседования
2.01K subscribers
338 photos
451 links
Подготовка к собеседованиям на позицию Python-разработчик

Еще больше на сайте https://frontview-it.ru

Backend - @frontview_backend
Python работа - @frontview_python_vacancies
Все IT вакансии - @frontview_all_vacancies
По рекламе - @frontviewit
Download Telegram
Конструкция with автоматически управляет ресурсами, гарантируя их освобождение после использования, даже если возникла ошибка. Она работает с объектами, поддерживающими контекстный менеджер (методы __enter__ и __exit__), например, при работе с файлами или сетевыми подключениями.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
pip — стандартный менеджер пакетов для установки модулей. Основные команды:


pip install package_name # Установка пакета
pip install package==1.0.0 # Установка конкретной версии
pip uninstall package_name # Удаление пакета
pip list # Список установленных пакетов
pip show package_name # Информация о пакете


Для работы с зависимостями проекта:


pip freeze > requirements.txt # Экспорт зависимостей
pip install -r requirements.txt # Установка из файла


Можно указывать дополнительные опции, например --user для установки в домашнюю директорию или -U для обновления пакета.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод __contains__() определяет поведение оператора in для пользовательских объектов. При вызове x in obj интерпретатор ищет obj.__contains__(x) и возвращает True или False.


class MyContainer:
def __contains__(self, item):
return item in [1, 2, 3]

container = MyContainer()
print(3 in container) # True
print(5 in container) # False


Если __contains__() не реализован, Python использует __iter__() и поочередное сравнение элементов. Метод полезен для создания контейнеров с оптимизированной проверкой вхождения.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Словарь создается с помощью фигурных скобок {} с парами ключ: значение или через конструктор dict(). Ключи должны быть неизменяемыми типами (строки, числа, кортежи), а значения — любыми объектами.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Функция oct() преобразует целое число в строку с восьмеричным представлением, начинающимся с префикса 0o.


num = 64
print(oct(num)) # '0o100'


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


print(oct(-8)) # '-0o10'


Аналог встроенного форматирования: format(10, '#o') или f"{10:#o}".

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Библиотека redis-py предоставляет клиент для взаимодействия с Redis. Основные операции выполняются через класс Redis.


import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('key', 'value') # Запись строки
print(r.get('key')) # Чтение значения


Поддерживает различные типы данных: строки, хеши, списки, множества.


r.hset('user', 'name', 'Alice') # Хеш-таблица
r.lpush('list', 1, 2, 3) # Список


Для транзакций используется pipeline(), для Pub/Sub — отдельный API.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Сигналы в Django позволяют выполнять действия при возникновении определенных событий (например, сохранение модели). Для их использования нужно импортировать нужный сигнал из django.db.models.signals, создать функцию-обработчик и подключить ее через декоратор @receiver или метод connect().

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Для установки конкретной версии пакета используется синтаксис == в команде pip install.


pip install package_name==1.2.3 # Точно указанная версия
pip install package_name>=1.2.0 # Минимальная версия


Можно задать диапазон версий с помощью дополнительных операторов:

pip install "package_name>=1.0.0,<2.0.0" # Версии от 1.0.0 до 2.0.0 (исключая 2.0.0)


Допустимы модификаторы ~= (совместимые версии) и != (исключение версии).

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Команда git reset отменяет изменения, возвращая репозиторий к указанному коммиту.


git reset --soft HEAD~1 # Отмена последнего коммита с сохранением изменений в индексе
git reset --mixed HEAD~1 # Отмена коммита и индекса (изменения остаются в рабочей директории)
git reset --hard HEAD~1 # Полная отмена коммита и всех изменений (осторожно!)


Для отмены изменений в конкретном файле:

git reset HEAD file.txt # Удаление файла из индекса


Флаг --hard необратимо удаляет изменения, --soft и --mixed оставляют возможность повтора коммита.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Кэширование в RESTful API можно реализовать через HTTP-заголовки (Cache-Control, ETag) для клиентского кэширования или серверные решения (Redis, Memcached) для хранения часто запрашиваемых данных. Стратегии кэширования включают TTL (время жизни кэша), инвалидацию при изменении данных и кэширование ответов целиком или отдельных ресурсов.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Django предоставляет встроенную защиту от CSRF через middleware django.middleware.csrf.CsrfViewMiddleware.


# В форме добавляется CSRF-токен
<form method="POST">
{% csrf_token %}
</form>


Для AJAX-запросов токен передается в заголовке X-CSRFToken.


headers: {'X-CSRFToken': getCookie('csrftoken')}


Отключение защиты (не рекомендуется) делается декоратором @csrf_exempt. Проверка токена происходит автоматически для POST, PUT, DELETE запросов.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Функция asyncio.all_tasks() возвращает множество всех выполняющихся задач в текущем цикле событий.


import asyncio

async def example():
await asyncio.sleep(1)

tasks = asyncio.all_tasks() # Получение всех активных задач


Полезно для мониторинга или отладки асинхронного кода. Если передать аргумент loop, вернет задачи конкретного цикла.


current_loop = asyncio.get_running_loop()
tasks = asyncio.all_tasks(current_loop)


Не включает завершенные или отмененные задачи.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Функция print() выводит переданные объекты в стандартный поток вывода, преобразуя их в строки. Основные параметры: sep (разделитель между аргументами), end (символ в конце вывода), file (объект для вывода, по умолчанию sys.stdout) и flush (принудительный сброс буфера).

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод keys() возвращает представление всех ключей в словаре.


d = {'a': 1, 'b': 2}
print(d.keys()) # dict_keys(['a', 'b'])


Результат динамически связан с исходным словарем — изменения отражаются сразу.


d['c'] = 3
print(d.keys()) # dict_keys(['a', 'b', 'c'])


Можно преобразовать в список: list(d.keys()). Работает за O(1), не создает копию данных.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Паттерн State позволяет объекту изменять поведение при смене внутреннего состояния. Реализуется через отдельные классы-состояния и контекст, который делегирует им работу.


class State:
def handle(self, context):
pass

class ConcreteStateA(State):
def handle(self, context):
context.state = ConcreteStateB()

class ConcreteStateB(State):
def handle(self, context):
context.state = ConcreteStateA()

class Context:
def __init__(self):
self.state = ConcreteStateA()

def request(self):
self.state.handle(self)


Каждое состояние инкапсулирует свою логику, а переходы между состояниями выполняются внутри методов handle(). Контекст хранит текущее состояние и вызывает его методы.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Функция asyncio.gather() запускает несколько корутин конкурентно и возвращает их результаты в порядке передачи. Принимает корутины или задачи как позиционные аргументы, поддерживает параметр return_exceptions для контроля обработки ошибок.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Для получения значения по ключу в словаре используется синтаксис dict[key] или метод dict.get().


d = {'a': 1, 'b': 2}
print(d['a']) # 1 (KeyError если ключа нет)
print(d.get('c', 0)) # 0 (возвращает default вместо ошибки)


Метод setdefault() возвращает значение и добавляет ключ с default-значением, если его нет.


value = d.setdefault('c', 3) # Возвращает 3, добавляет 'c': 3 в словарь


Для проверки наличия ключа используется оператор in.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Генераторы позволяют загружать данные по требованию через yield, экономя память.


def lazy_load(file_path):
with open(file_path) as file:
for line in file:
yield line.strip() # Постепенная обработка


Каждый вызов next() или итерация возвращает очередной элемент без загрузки всего набора.


data_loader = lazy_load('large_file.txt')
print(next(data_loader)) # Только первая строка в памяти


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

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Переменная __version__ в модулях хранит строку с номером версии для удобного отслеживания совместимости. Обычно определяется в __init__.py модуля или импортируется из отдельного файла version.py, чтобы ее можно было получить через import module; print(module.__version__).

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Функция all() возвращает True, если все элементы итерируемого объекта истинны (или если он пуст).

python  
data = [True, 1, 'text']
print(all(data)) # True


Функция any() возвращает True, если хотя бы один элемент истинный.

python  
data = [False, 0, '']
print(any(data)) # False


Обе функции работают с любыми итерируемыми объектами (списки, кортежи, генераторы). Лениво вычисляются до первого False (для all) или True (для any).

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Очередь asyncio.Queue предоставляет потокобезопасный механизм для передачи сообщений между асинхронными задачами. Основные методы:

queue = asyncio.Queue(maxsize=10)
await queue.put(item) # Добавление элемента
item = await queue.get() # Извлечение элемента


- put() блокирует корутину при заполненной очереди (если задан maxsize)
- get() ожидает появления элементов в пустой очереди
- Поддерживает методы join(), task_done() для отслеживания завершения обработки

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

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM