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
exec() выполняет переданную строку как код Python (может содержать выражения, циклы, объявления), не возвращая результат. eval() вычисляет только одиночное выражение и возвращает его значение. Обе функции представляют угрозу безопасности при использовании с непроверенными данными.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN 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
Оператор or в условных выражениях возвращает первый операнд, который оценивается как True, или последний операнд, если все значения False. Логическое ИЛИ вычисляется по короткому циклу: если первый операнд True, второй не проверяется.


x = 0
y = 5
result = x or y # 5, так как x == 0 (False), возвращается y


Если оба операнда False, возвращается последний:


a = None
b = 0
res = a or b # 0, оба значения False, возвращается b


Часто используется для задания значений по умолчанию:


value = user_input or "default" # если user_input пустой, вернется "default"


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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
При работе с файлами ошибки обрабатываются через блок try-except, перехватывая исключения типа FileNotFoundError, PermissionError или IOError. Использование контекстного менеджера with гарантирует корректное закрытие файла даже при возникновении ошибки.

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


class Animal:
def make_sound(self):
raise NotImplementedError("Subclasses must implement this method")

class Dog(Animal):
def make_sound(self):
return "Woof!"

class Cat(Animal):
def make_sound(self):
return "Meow!"


При вызове make_sound() у объекта Dog или Cat выполняется соответствующая реализация, несмотря на одинаковый метод в базовом классе.

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

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


tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined = tuple1 + tuple2 # (1, 2, 3, 4, 5, 6)


Кортежи неизменяемы, поэтому операция не модифицирует исходные объекты, а возвращает новый. Также можно использовать tuple(itertools.chain(tuple1, tuple2)) для сложных сценариев.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Функция filter() применяет указанную функцию-предикат к каждому элементу итерируемого объекта, возвращая итератор только с теми элементами, для которых функция вернула True. Полезна для выборки данных по условию без явного цикла, особенно в сочетании с lambda для простых фильтраций.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
В Django URL-шаблоны определяют, какие view-функции обрабатывают запросы по конкретным путям. Они задаются в urls.py через path() или re_path() (для regex).


from django.urls import path
from . import views

urlpatterns = [
path('articles/', views.article_list), # Обработка /articles/
path('articles/<int:id>/', views.article_detail), # Динамический параметр id
]


Маршруты проверяются сверху вниз. Можно группировать URL через include(), передавая часть маршрутизации в приложение. Именованные пути (name='article-list') позволяют генерировать URL без жесткого кодирования.

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

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


git revert <commit-hash> # Создает новый коммит, отменяющий изменения


Если нужно отменить несколько коммитов, можно указать диапазон:


git revert <oldest-commit-hash>..<latest-commit-hash> # Отменяет все коммиты в диапазоне


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

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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Для защиты API применяют аутентификацию и авторизацию. Основные методы:


# JWT-токены (FastAPI/Flask)
from fastapi.security import OAuth2PasswordBearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")



# API-ключи в заголовках
API_KEY = "secret_key"
def validate_key(api_key: str):
if api_key != API_KEY:
raise HTTPException(status_code=403)


Дополнительно используют HTTPS, ограничение запросов (rate limiting) и проверку CORS. Для сложных сценариев подходят OAuth2 или библиотеки вроде Authlib.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Паттерн Iterator в Python реализуется через методы __iter__() и __next__(). Класс становится итерируемым, если __iter__() возвращает сам объект, а __next__() возвращает следующий элемент или вызывает StopIteration.


class Counter:
def __init__(self, max):
self.max = max
self.current = 0

def __iter__(self):
return self

def __next__(self):
if self.current >= self.max:
raise StopIteration
self.current += 1
return self.current - 1


Встроенные типы (list, dict) уже поддерживают итерацию. Для ленивых вычислений удобны генераторы (yield).

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

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

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


coverage run -m pytest # Запуск тестов с отслеживанием покрытия
coverage report # Вывод отчета в консоль
coverage html # Генерация HTML-отчета


Метрика показывает, какая часть кода была выполнена во время тестов. Можно исключить файлы через .coveragerc. Оптимальное покрытие — 80-100%, но важнее осмысленность тестов.

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

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


result = divmod(10, 3) # (3, 1)


Эквивалентна одновременному выполнению // (целочисленное деление) и % (остаток). Работает с целыми и вещественными числами.


divmod(10.5, 3) # (3.0, 1.5)


Полезна при разбиении значений на части (например, секунды в минуты и секунды).

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
asyncio.Future представляет результат асинхронной операции, который может быть еще не готов. Используется для ручного управления асинхронными задачами — можно устанавливать результат через set_result() или исключение через set_exception(), а также добавлять колбэки через add_done_callback(). Обычно взаимодействие происходит через await, который приостанавливает выполнение корутины до получения результата.

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


my_tuple = (1, 2, 3, 'a', 'b')
contains_two = 2 in my_tuple # True
contains_z = 'z' in my_tuple # False


Аналогично работает с not in для проверки отсутствия. Метод эффективен и читаем, подходит для любых итерируемых объектов.

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

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


def admin_required(func):
def wrapper(user, *args, **kwargs):
if not user.is_admin:
raise PermissionError("Admin access required")
return func(user, *args, **kwargs)
return wrapper


Пример применения:


@admin_required
def delete_user(user, username):
# Логика удаления


Такой подход централизует проверки и сохраняет чистоту бизнес-логики.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Оператор == в условных выражениях Python проверяет равенство значений двух объектов, но не их идентичность в памяти. Если объекты имеют одинаковое содержимое, оператор вернет True, даже если это разные объекты в памяти.

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


with open('file.txt', 'r') as file:
file.seek(100) # Переместить указатель на 100-й байт
data = file.read() # Чтение с текущей позиции


Метод seek() принимает смещение в байтах, а второй аргумент (необязательный) определяет точку отсчета (0 — начало файла, 1 — текущая позиция, 2 — конец файла).

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод __dir__() возвращает список атрибутов и методов объекта. Его можно переопределить в пользовательских классах, чтобы изменить поведение встроенной функции dir().


class Example:
def __dir__(self):
return ['custom_attr', 'custom_method']

obj = Example()
print(dir(obj)) # Выведет ['custom_attr', 'custom_method']


По умолчанию __dir__() включает атрибуты класса, его методы и унаследованные члены. Переопределение полезно для ограничения или кастомизации вывода.

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

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