Python | Вопросы собесов
12.6K subscribers
44 photos
5 videos
1 file
1.69K links
Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy

Контакт для рекламы: @sendme_ads
Download Telegram
🤔 Что такое моржовый оператор?

Моржовый оператор (:=) – это новый оператор, появившийся в Python 3.8, который позволяет присваивать значение переменной прямо внутри выражения.

🚩Как он работает?

Обычно мы записываем код так:
value = len(my_list)  # Сначала присваиваем
if value > 10: # Потом используем
print("Список большой")


С := можно совместить оба действия
if (value := len(my_list)) > 10:
print("Список большой")


🚩Где использовать?

В циклах (избегаем лишних вычислений). Вместо:
data = input("Введите строку: ")
while data != "exit":
print("Вы ввели:", data)
data = input("Введите строку: ")


С := можно записать короче:
while (data := input("Введите строку: ")) != "exit":
print("Вы ввели:", data)


В if и while (проверяем и присваиваем одновременно)
Без :=
text = input("Введите слово: ")
if len(text) > 5:
print(f"Слово длинное ({len(text)} символов)")


С :=:
if (length := len(text)) > 5:
print(f"Слово длинное ({length} символов)")


В списковых включениях (list comprehensions)
Без :=:
numbers = [random.randint(1, 100) for _ in range(10)]
filtered = [num for num in numbers if num % 2 == 0]


С :=:
filtered = [num for _ in range(10) if (num := random.randint(1, 100)) % 2 == 0]


🚩Когда не стоит использовать `:=`?

Если код становится сложнее для чтения
if (a := func()) and (b := another_func(a)) > 10:
...


Ставь 👍 и забирай 📚 Базу знаний
🔥 Скрытые вакансии с удаленной работой для Python разработчика, которые нигде больше не публикуются. Напрямую от компаний, с контактами рекрутеров.

🔹 Python Jobs | Вакансии
🔹 Data Science ML | Вакансии
🔹 Golang Go Jobs | Вакансии

🔸 Все каналы с вакансиями
🤔 Какие есть коды ошибок HTTP?

В HTTP коды состояния указывают, как сервер обработал запрос. Они делятся на 5 категорий:
1xx (Информационные – запрос принят, продолжаем.
2xx (Успешные) – всё хорошо.
3xx (Перенаправления) – запрашиваемый ресурс перемещён.
4xx (Ошибки клиента) – клиент отправил неправильный запрос.
5xx (Ошибки сервера) – сервер не смог обработать запрос.


🚩Как исправить ошибки HTTP?

4xx:
400: Проверить формат запроса.
401: Убедиться, что пользователь авторизован.
403: Проверить права доступа.
404: Убедиться, что URL правильный.
5xx:
500: Проверить код сервера (ошибки в логах).
502/504: Проверить настройки Nginx/Proxy.
503: Сервер перегружен → добавить балансировку нагрузки.

Ставь 👍 и забирай 📚 Базу знаний
👍2
🤔 Что такое динамическое программирование?

Это метод решения задач, при котором большая задача разбивается на перекрывающиеся подзадачи, результаты которых запоминаются (мемоизируются). Подходит для оптимизационных задач: рюкзак, наибольшая общая подпоследовательность, пути в решётке.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2
🤔 Как сгенерировать и применить миграцию?

В Django миграции используются для изменения структуры базы данных (создание, изменение и удаление таблиц и полей).

🚩Генерация миграции (`makemigrations`)

🟠Создаём или изменяем модель (`models.py`)
Пример модели пользователя:
from django.db import models

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


🟠Генерируем миграцию
Запускаем команду:
python manage.py makemigrations


Django создаст файл миграции в migrations/
migrations/
0001_initial.py # Файл с SQL-изменениями


Проверяем SQL-запрос, который будет выполнен
python manage.py sqlmigrate myapp 0001


🚩Применение миграции (`migrate`)

После генерации нужно применить миграции к базе данных:
python manage.py migrate


🚩Что делать, если модель изменилась?

Добавим поле в models.py
class UserProfile(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
email = models.EmailField(default="example@example.com") # Добавили поле


Сгенерируем новую миграцию
python manage.py makemigrations


Применяем изменения к БД
python manage.py migrate


🚩Откат миграций (`migrate <номер>`)

Если нужно откатить последнее изменение:
python manage.py migrate myapp 0001  # Откат до первой миграции


Ставь 👍 и забирай 📚 Базу знаний
🤔 Как реализуются public методы?

1. Public методы объявляются без каких-либо префиксов перед именем метода.
2. Они доступны для вызова из любого места в программе.
3. Пример: def public_method(self): реализует открытый метод объекта.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Для чего нужен счетчик ссылок Python?

В Python счетчик ссылок (reference count) используется для управления памятью. Он показывает, сколько раз объект используется в программе. Когда счетчик ссылок падает до нуля, Python автоматически удаляет объект, освобождая память.

🚩Как работает счетчик ссылок?

Python использует автоматическое управление памятью, основанное на подсчёте ссылок. Когда создаётся объект, Python хранит специальное число — количество ссылок на этот объект. Это число увеличивается, когда мы создаём новую ссылку на объект, и уменьшается, когда удаляем или перезаписываем переменную.
import sys

a = [1, 2, 3] # Создаём список
print(sys.getrefcount(a)) # Выведет 2 (одна ссылка 'a' + вызов getrefcount)

b = a # Новая ссылка на тот же объект
print(sys.getrefcount(a)) # Теперь 3 (a, b и сам getrefcount)

del a # Удаляем одну ссылку
print(sys.getrefcount(b)) # Теперь 2

del b # Удаляем последнюю ссылку, объект будет удалён из памяти


🚩Почему это важно?

🟠Эффективное управление памятью
Python сам удаляет ненужные объекты, не давая памяти переполняться.
🟠Понимание утечек памяти
Если объект имеет циклические ссылки (например, список ссылается сам на себя), Python не может освободить его сразу, поэтому дополнительно используется сборщик мусора (Garbage Collector, GC).
import gc

class Node:
def __init__(self):
self.ref = self # Циклическая ссылка!

n = Node()
del n # Обычный подсчёт ссылок не сработает, объект останется в памяти
gc.collect() # Явный вызов сборщика мусора удалит его


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что известно о request и response?

Это ключевые понятия в веб-связи:
- Request (запрос) — отправляется клиентом. Содержит:
- Метод (GET, POST и др.)
- URL
- Заголовки
- Тело (если есть)
- Response (ответ) — возвращается сервером. Содержит:
- Статус-код (например, 200, 404, 500)
- Заголовки
- Тело ответа (например, HTML, JSON)
Они образуют цикл общения между клиентом и сервером.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1💊1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какие объекты можно положить в множество?

В Python множество (set) — это неупорядоченная коллекция уникальных элементов, которая работает на основе хеш-таблицы. Это значит, что только хешируемые (immutable) объекты могут быть добавлены в set.

🚩Можно добавить в `set`:

Числа (int, float, complex)
   s = {1, 2.5, 3+4j}


Строки (str)
   s = {"apple", "banana", "cherry"}


Кортежи (tuple), если они тоже содержат только неизменяемые объекты
   s = {(1, 2), ("a", "b")}


Булевые значения (bool)** (но True считается 1, а False — 0)
   s = {True, False, 1, 0}
print(s) # {False, True} (0 и 1 не добавятся повторно)


🚩Нельзя добавить в `set`

Изменяемые объекты (list, set, dict)
   s = { [1, 2, 3] }  #  Ошибка: TypeError: unhashable type: 'list'


   s = { {"key": "value"} }  #  Ошибка: TypeError: unhashable type: 'dict'


Кортежи с изменяемыми элементами
   s = { (1, [2, 3]) }  #  Ошибка: TypeError


Ставь 👍 и забирай 📚 Базу знаний
🤔 Что такое многопоточность/многопроцессорность?

- Многопоточность в Python — это одновременное выполнение нескольких "нитей" (потоков) в рамках одного процесса. Используется модуль threading. Однако из-за GIL (Global Interpreter Lock) только один поток исполняет байт-код в один момент времени, что ограничивает пользу многопоточности для вычислений. Подходит для I/O-задач (работа с сетью, файлами).
- Многопроцессорность — это запуск нескольких процессов, каждый со своей памятью и интерпретатором. Используется модуль multiprocessing. Эффективна при вычислениях, так как GIL не мешает разным процессам работать параллельно на многоядерных CPU.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1