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

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

Backend - @frontview_backend
Python работа - @frontview_python_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
▶️Функция type() возвращает тип переданного объекта. Она может использоваться для проверки типа данных или для динамического создания новых типов.


x = 42
print(type(x)) # Выведет <class 'int'>


Если передать три аргумента, type() создаёт новый тип: имя, базовые классы и словарь атрибутов. Например, MyClass = type('MyClass', (object,), {'attr': 42}) создаёт новый класс.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Для удаления элемента из списка по значению используется метод remove(), который удаляет первое вхождение указанного значения. Если элемент не найден, возникает ошибка ValueError.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🟡Для создания асинхронной задачи используется ключевое слово async перед определением функции. Запуск асинхронной задачи выполняется с помощью await внутри другой асинхронной функции или через asyncio.run().


import asyncio

async def my_task():
print("Задача выполняется")
await asyncio.sleep(1)

asyncio.run(my_task())


Функция asyncio.run() запускает асинхронную задачу и управляет циклом событий.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🔘Оператор присваивания = связывает имя переменной с объектом в памяти. При присваивании создается ссылка на объект, а не копия.


a = 10 # переменная a ссылается на целое число 10
b = a # b ссылается на тот же объект, что и a


Если изменяемый объект модифицируется через одну переменную, это отразится на другой:


lst1 = [1, 2]
lst2 = lst1
lst1.append(3) # изменение через lst1
print(lst2) # [1, 2, 3], так как lst2 ссылается на тот же список


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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Цикл for перебирает элементы множества в произвольном порядке, так как множества неупорядочены. Можно использовать для проверки наличия элементов, фильтрации или преобразования данных.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52
Функция zip() объединяет элементы нескольких итерируемых объектов попарно, создавая итератор кортежей. Работает до исчерпания самой короткой коллекции.


names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30]
for name, age in zip(names, ages):
print(name, age)


Результат:

Alice 25
Bob 30


Для обработки всех элементов, включая непарные, можно использовать zip_longest из модуля itertools.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Конструкция try-except позволяет перехватывать и обрабатывать ошибки ввода-вывода, такие как FileNotFoundError или PermissionError.


try:
with open('file.txt', 'r') as file:
data = file.read()
except FileNotFoundError:
print("Файл не найден")
except IOError:
print("Ошибка чтения файла")


Блок try выполняет потенциально опасный код, а except ловит конкретные исключения. Можно обрабатывать несколько типов ошибок или использовать общий except IOError для всех операций ввода-вывода.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Чтобы вызвать метод родительского класса из дочернего, используется функция super(), которая возвращает прокси-объект родительского класса. Например, super().method_name() вызывает метод method_name родительского класса из дочернего.

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


def log_generator(func):
def wrapper(*args, **kwargs):
print("Generator started")
gen = func(*args, **kwargs)
for value in gen:
print(f"Yielded: {value}")
yield value
return wrapper

@log_generator
def count_to(n):
for i in range(n):
yield i


Декоратор log_generator перехватывает вызов генератора, логирует его запуск и каждое yielded значение. Важно, чтобы обёртка сама возвращала генератор, иначе потеряется ленивое выполнение.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🟠Множество создаётся с помощью фигурных скобок {} или функции set(). Элементы должны быть уникальными и неизменяемыми.


unique_numbers = {1, 2, 3} # Литерал множества
empty_set = set() # Пустое множество (не {} — это словарь)


Для преобразования списка или строки во множество используется set(), автоматически удаляющий дубликаты.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Для управления CORS в Python веб-приложениях используются middleware или специализированные пакеты, такие как flask-cors для Flask или django-cors-headers для Django. Эти инструменты позволяют настраивать разрешённые домены, методы HTTP-запросов и заголовки для кросс-доменных запросов.

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


class Resource:
def __del__(self):
print("Resource released") # Вызывается не всегда


Лучше использовать контекстные менеджеры (with) или явные методы типа close() для управления ресурсами.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🛑Функция pow() принимает два или три аргумента: основание, степень и необязательный модуль. Возвращает результат возведения в степень, а при наличии модуля — остаток от деления.


result = pow(2, 3) # 2 в степени 3 → 8
mod_result = pow(2, 3, 3) # (2³) % 3 → 2


Альтернатива оператору **, но с поддержкой модульной арифметики.

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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
➡️ Модель в Django определяется как подкласс django.db.models.Model, где атрибуты класса представляют поля таблицы. Каждое поле создаётся экземпляром соответствующего класса (CharField, IntegerField и т.д.) с указанием параметров.


from django.db import models

class User(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()


После определения модели необходимо создать и применить миграции для генерации таблицы в БД.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔1
🔹HTTP-статус коды в RESTful API помогают клиенту понять результат запроса. Основные группы: 2xx (успех), 3xx (перенаправление), 4xx (ошибка клиента), 5xx (ошибка сервера).


from django.http import JsonResponse

def get_data(request):
return JsonResponse({'data': 'success'}, status=200) # Успешный запрос


Использование правильных статусов улучшает согласованность API и обработку ошибок.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Для отмены асинхронной задачи используется метод cancel() у объекта Task, созданного через asyncio.create_task(). При отмене задача получит исключение asyncio.CancelledError, которое можно обработать в блоке try/except.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
😎Основные принципы написания тестов включают изолированность, повторяемость и проверку одного аспекта за раз. Тесты должны быть быстрыми, независимыми и покрывать как позитивные, так и негативные сценарии.


def test_addition():
assert 2 + 2 == 4 # Простой assert для проверки логики


Использование setup и teardown методов помогает подготовить и очистить окружение. Моки и стабы изолируют тестируемый модуль от зависимостей.

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

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


pip install requests # Установка последней версии
pip install django==4.2 # Конкретная версия
pip install -r requirements.txt # Установка из файла


Флаг --user устанавливает пакет для текущего пользователя, -e - в режиме разработки.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Стандартные инструменты профилирования включают встроенный модуль cProfile для детального анализа времени выполнения и timeit для измерения коротких участков кода. Сторонние решения типа Py-Spy, memory_profiler и line_profiler предоставляют дополнительную информацию о потреблении памяти и построчном выполнении.

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