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

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

Backend - @frontview_backend
Python работа - @frontview_python_vacancies
Все IT вакансии - @frontview_all_vacancies
По рекламе - @frontviewit
Download 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
Метод get() используется для получения значения по ключу из словаря, возвращая None или заданное значение по умолчанию, если ключ отсутствует. Это безопасная альтернатива прямому обращению по ключу, предотвращающая исключение KeyError.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Функция asyncio.get_event_loop() возвращает текущий событийный цикл для данного контекста выполнения. Если цикла нет, создаёт новый и устанавливает его как текущий.


loop = asyncio.get_event_loop() # Получает текущий цикл или создаёт новый


В Python 3.10+ рекомендуется использовать asyncio.run() для верхнеуровневого кода вместо ручного управления циклом. Метод устарел для создания новых циклов в пользу asyncio.new_event_loop().

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

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

Для строк проверяет наличие подстроки:

if 'hello' in 'hello world':
# True, так как подстрока 'hello' есть в строке


Для списков и кортежей проверяет наличие элемента:

if 2 in [1, 2, 3]:
# True, так как 2 есть в списке


Для словарей проверяет наличие ключа:

if 'key' in {'key': 'value'}:
# True, так как ключ 'key' существует


Также in работает с генераторами и множествами. Сложность операции зависит от типа данных: O(1) для словарей и множеств, O(n) для списков и строк.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
При работе с сетевыми запросами try-except помогает обрабатывать ошибки соединения, таймауты и некорректные ответы. Чаще всего перехватывают исключения requests.exceptions.RequestException или более конкретные, например ConnectionError, Timeout, чтобы корректно завершить запрос или повторить его.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Условие if name == "__main__": определяет, выполняется ли скрипт напрямую или импортируется как модуль. Код внутри этого блока запускается только при прямом запуске файла.


def some_function():
print("This is a function")

if __name__ == "__main__":
print("Script executed directly")
some_function()


Если файл импортирован, код вне этого блока (функции, классы) будет доступен, но код внутри if не выполнится. Это полезно для тестирования и разделения логики модуля и его запуска.

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

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