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

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

Backend - @frontview_backend
Python работа - @frontview_python_vacancies
Все IT вакансии - @frontview_all_vacancies
По рекламе - @frontviewit
Download Telegram
Для обновления конкретного пакета:

pip install --upgrade package_name


Обновление всех устаревших пакетов:

pip list --outdated # Просмотр устаревших пакетов
pip install --upgrade $(pip list --outdated | awk 'NR>2 {print $1}')


Особенности:
- Флаг --upgrade можно сократить до -U
- Рекомендуется использовать в виртуальном окружении
- Для системных пакетов может потребоваться sudo (не рекомендуется)

Перед обновлением лучше проверить совместимость версий.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Конфликты возникают при изменении одних и тех же строк в разных ветках. Для разрешения нужно вручную отредактировать файлы, оставив нужные изменения, затем выполнить git add и завершить слияние коммитом.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👉 Основные криптографические библиотеки:


from cryptography.fernet import Fernet # Симметричное шифрование
from Crypto.PublicKey import RSA # Асимметричное шифрование
import hashlib # Хеширование


Популярные решения:
- cryptography — современный стандарт для шифрования
- pycryptodome — расширенная криптография (AES, RSA)
- hashlib — встроенный модуль для хешей (SHA-256, MD5)
- bcrypt — специализированная библиотека для хеширования паролей

Для TLS/SSL используется встроенный модуль ssl.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Классическая реализация предполагает Subject (наблюдаемый объект) и Observer (наблюдатели):


class Subject:
def __init__(self):
self._observers = []

def attach(self, observer):
self._observers.append(observer)

def notify(self, message):
for observer in self._observers:
observer.update(message)



class Observer:
def update(self, message):
print(f"Received: {message}")


Ключевые моменты:
- Subject хранит список наблюдателей и уведомляет их при изменениях
- Observer определяет интерфейс для получения обновлений
- В Python часто реализуют через события или свойства (property)

Альтернативно можно использовать модуль observable из PyPI.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Использовать индексы для часто запрашиваемых полей, избегать N+1 проблемы через select_related или prefetch_related, ограничивать выборку только нужными полями через only() или defer(). Кэшировать результаты тяжелых запросов и анализ slow query log для выявления узких мест.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
asyncio.TimeoutError возникает при превышении времени выполнения асинхронной операции. Для обработки таймаутов используйте asyncio.wait_for():


try:
result = await asyncio.wait_for(coroutine(), timeout=5.0)
except asyncio.TimeoutError:
handle_timeout()


Ключевые моменты:
- Применяется для ограничения времени выполнения корутин
- Отличается от встроенного TimeoutError (синхронные операции)
- Вместе с asyncio.shield() позволяет контролировать прерывание

Таймауты особенно важны для сетевых запросов и внешних API.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
▶️ Python определяет типы переменных во время выполнения, а не компиляции. Одна переменная может менять тип при повторном присваивании:


value = 42 # int
value = "text" # str


Характеристики:
- Проверка типов происходит при выполнении операций
- Гибкость кода ценой возможных runtime-ошибок
- Использует duck typing

Отличается от статической типизации (C++, Java), где типы проверяются до запуска программы.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод close() принудительно останавливает выполнение генератора, вызывая GeneratorExit в точке его последней приостановки. После вызова close() генератор больше не может yield'ить значения и выбрасывает StopIteration при попытке итерации.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
__delattr__() вызывается при попытке удаления атрибута через оператор del. Позволяет кастомизировать поведение при удалении:


class Example:
def __delattr__(self, name):
print(f"Deleting {name}")
object.__delattr__(self, name)


Ключевые особенности:
- Требует явного вызова object.__delattr__() для реального удаления
- Может блокировать удаление критичных атрибутов
- Вызывается только для оператора del, не влияет на delattr()

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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👉 Для слияния множеств используйте метод union() или оператор |:


set1 = {1, 2}
set2 = {2, 3}
merged = set1.union(set2) # {1, 2, 3}


Альтернативные варианты:
- update() модифицирует исходное множество
- | создает новое множество
- {*set1, *set2} работает с Python 3.5+

Все методы автоматически удаляют дубликаты.

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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
git fetch загружает изменения из удаленного репозитория без слияния с локальной веткой, обновляя только ссылки в .git/refs/remotes.


git fetch origin # Загружает изменения без модификации рабочей директории


git pull = git fetch + git merge — автоматически сливает загруженные изменения с текущей веткой.

Ключевые отличия:
- fetch безопаснее — позволяет проверить изменения перед слиянием
- pull может создать конфликт слияния без предупреждения
- Для проверки изменений после fetch используйте git log origin/branch

Рекомендуется использовать fetch + ручное слияние в рабочих проектах.

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

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

Основные классы и функции:
- create_subprocess_exec — запускает процесс из переданных аргументов.
- create_subprocess_shell — запускает процесс через оболочку.

Процесс общается через стандартные потоки (stdin, stdout, stderr), доступные как асинхронные потоки.


import asyncio

async def run_command():
proc = await asyncio.create_subprocess_exec(
'echo', 'hello',
stdout=asyncio.subprocess.PIPE
)
stdout, _ = await proc.communicate()
print(stdout.decode())


Код запускает процесс echo и читает его вывод асинхронно. communicate() ожидает завершения процесса и возвращает вывод.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Чтение файла в обратном порядке можно выполнить, загрузив его содержимое в память и развернув строки или используя перемещение указателя файла с конца. Для больших файлов эффективнее читать блоки с конца, избегая загрузки всего файла в память.

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


result = x and y # Если x ложно, вернётся x, иначе y


При проверке условий and останавливается на первом False, не вычисляя остальные.


if a and b: # Если a == False, b не проверяется
...


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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Файл requirements.txt содержит список зависимостей Python-проекта. Каждая строка — имя пакета с опциональным ограничением версии.


# requirements.txt
requests==2.25.1
flask>=1.1.0
pytest


Установка зависимостей:

pip install -r requirements.txt


Для генерации файла из текущего окружения:

pip freeze > requirements.txt


Формат версий: == (точно), >= (минимум), < (максимум).

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Исключение StopIteration автоматически обрабатывается при итерации по генератору, сигнализируя о его завершении. Вручную его перехватывать не требуется, так как циклы for и функции вроде next() делают это автоматически.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Методы __getitem__() и __setitem__() позволяют реализовать доступ к элементам объекта по индексу или ключу, как в списках или словарях.


class CustomContainer:
def __getitem__(self, key):
return self.data[key] # Возвращает значение по ключу/индексу

def __setitem__(self, key, value):
self.data[key] = value # Устанавливает значение по ключу/индексу


__getitem__() вызывается при обращении obj[key], а __setitem__() — при присваивании obj[key] = value. Позволяет эмулировать поведение встроенных коллекций.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
asyncio.Event позволяет синхронизировать корутины через механизм событий. Объект находится в неактивном состоянии (False) до явного вызова set().


event = asyncio.Event()

async def waiter():
await event.wait() # Ожидает установки флага
print("Event triggered")

async def setter():
await asyncio.sleep(1)
event.set() # Разблокирует все ожидающие корутины


Основные методы:
- wait() — приостанавливает выполнение до срабатывания события
- set()/clear() — активирует/сбрасывает событие
- is_set() — проверяет состояние флага

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

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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Для вставки данных в таблицу используется SQL-запрос INSERT INTO. Синтаксис зависит от структуры таблицы и количества добавляемых значений.


INSERT INTO table_name (column1, column2)
VALUES (value1, value2);


Ключевые моменты:
- Указание имени таблицы и столбцов (опционально)
- Перечисление значений в порядке столбцов
- Возможность множественной вставки через несколько VALUES


INSERT INTO users (name, age)
VALUES ('Alex', 25), ('Anna', 30);


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

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

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