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

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

Backend - @frontview_backend
Python работа - @frontview_python_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
Для безопасного хранения паролей следует использовать хеширование с помощью библиотек типа passlib или bcrypt, которые применяют соль и адаптивные алгоритмы вроде PBKDF2 или Argon2. Никогда не храните пароли в открытом виде — вместо этого сохраняйте только их криптографические хеши и проверяйте соответствие через безопасное сравнение.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Для защиты 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
👍5
Паттерн 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
👍3
Для установки пакетов из файла requirements.txt используется команда pip install -r requirements.txt, которая автоматически устанавливает все зависимости, перечисленные в файле.

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


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


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

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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Для проверки наличия элемента в кортеже используется оператор 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
👍61
Декораторы для проверки прав доступа оборачивают функции, проверяя аутентификацию или права пользователя перед выполнением.


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
👍9
Оператор == в условных выражениях Python проверяет равенство значений двух объектов, но не их идентичность в памяти. Если объекты имеют одинаковое содержимое, оператор вернет True, даже если это разные объекты в памяти.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Чтобы прочитать файл с определенной позиции, можно использовать метод 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
👍4
Метод __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
👍5
Метод get() используется для получения значения по ключу из словаря, возвращая None или заданное значение по умолчанию, если ключ отсутствует. Это безопасная альтернатива прямому обращению по ключу, предотвращающая исключение KeyError.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Функция 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
👍4🔥3
Оператор 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
👍8
При работе с сетевыми запросами try-except помогает обрабатывать ошибки соединения, таймауты и некорректные ответы. Чаще всего перехватывают исключения requests.exceptions.RequestException или более конкретные, например ConnectionError, Timeout, чтобы корректно завершить запрос или повторить его.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Условие 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
👍82
Методы __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
🔥5👍1
🎯 ENIGMA ASSISTANT — AI-помощник для технических интервью

Проблема: Знаешь технологии, но теряешься на интервью?

Решение: Enigma помогает отвечать на ЛЮБЫЕ вопросы собеседования:

🧠 Алгоритмы и структуры данных
- Разбор сложности O(n)
- Оптимальные решения задач
- Объяснение подходов

🏗️ Системный дизайн
 - Архитектура highload систем
- Выбор технологий и паттернов
- Масштабирование решений

💻 Live Coding
- Помощь в написании кода
- Исправление ошибок на лету- Объяснение решения интервьюеру

🎤 Как работает:
AI слушает вопросы в реальном времени• Мгновенно подсказывает правильные ответы• Помогает структурированно отвечать• Полностью незаметен для интервьюера

📈 Результат:
Уверенные ответы = успешное прохождение интервью

👉 **Попробуй сейчас:** enigmai.ru (https://enigmai.ru)
👀1
Классическая реализация предполагает 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
👍2🔥1