Logo
TGCATALOG
Каталог Подборки Блог
Python Вопросы собесов - тесты

Python Вопросы собесов - тесты

Вопросы, тесты и задачи для Python собеседований.

Нет оценок
599
29.10.2026
599
29.10.2026
Нет оценок
599
29.10.2026
Безопасный переход через бот
О канале

Вопросы, тесты и задачи для Python собеседований.

Подписчиков 12,569
Тематика Технологии
Язык Русский
Ссылка t.me/python_easy_ru

Также рекомендуем

Kekaton AI | Озвучка и клон голоса
Kekaton AI | Озвучка и клон голоса
Бот

AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.

Описание

Канал с вопросами для собеседований по Python. Тесты, задачи и материалы для подготовки.

Последние посты

Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Что делать если нужно перехватить исключение, выполнить действия и опять возбудить это же исключение? Если нужно: Перехватить исключение Выполнить какие-то действия (лог, очистка, уведомление и т. д.) Снова выбросить это же исключение try: x = 1 / 0 # Ошибка деления на ноль except ZeroDivisionError: print("Ошибка! Записываем в лог...") raise # Повторно выбрасываем то же исключение Вывод Ошибка! Записываем в лог... Traceback (most recent call last): File "script.py", line 2, in x = 1 / 0 ZeroDivisionError: division by zero Пример: Логирование перед повторным выбросом import logging logging.basicConfig(filename="errors.log", level=logging.ERROR) try: user_input = int("abc") # Ошибка ValueError except ValueError as e: logging.error(f"Ошибка: {e}") # Записываем в лог raise # Повторно выбрасываем исключение Пример: Очистка ресурсов перед выбросом исключения try: file = open("data.txt", "r") data = file.read() except FileNotFoundError: print("Файл не найден. Освобождаем ресурсы...") raise # Снова выбрасываем исключение finally: file.close() # Гарантированно закроет файл Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Какие магические методы и для чего используются? Магические методы (например, __init__, __str__, __len__, __add__) используются для определения поведения объектов в специфичных ситуациях, таких как инициализация, строковое представление, арифметические операции или работа с коллекциями. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Почему вычислять большие значения в асинхронной функции плохо? Асинхронность (asyncio) в Python не выполняет код параллельно, а переключается между задачами во время ожидания (I/O-bound). Если в async-функции делать тяжёлые вычисления (CPU-bound), это блокирует asyncio, потому что в Python есть GIL (Global Interpreter Lock). 🚩Асинхронность в Python подходит для ввода-вывода (I/O-bound) Асинхронность позволяет выполнять задачи без блокировки, но только если они ждут чего-то (файлы, сеть, БД). import asyncio import aiohttp async def fetch(url): async with aiohttp.ClientSession() as session: async with session.get(url) as response: return await response.text() async def main(): urls = ["Ссылка скрыта * 5 results = await asyncio.gather(*(fetch(url) for url in urls)) asyncio.run(main()) 🚩Проблема с `async` и тяжёлыми вычислениями (CPU-bound) Если в async-функции делать тяжёлые вычисления, Python не сможет переключаться между задачами. import asyncio async def heavy_task(n): print(f"Вычисляю {n}...") total = sum(i**2 for i in range(n)) # Долгий процесс return total async def main(): await asyncio.gather(heavy_task(10**7), heavy_task(10**7)) asyncio.run(main()) 🚩Как правильно выполнять вычисления в `async`? 🟠Использовать `asyncio.to_thread()` (делегирование в потоки) В Python 3.9+ можно выполнять CPU-задачи в отдельных потоках, не блокируя asyncio. import asyncio def heavy_computation(n): return sum(i**2 for i in range(n)) async def main(): result = await asyncio.to_thread(heavy_computation, 10**7) print(result) asyncio.run(main()) 🟠Использовать `multiprocessing` (запуск на нескольких ядрах) Так как Python использует GIL, единственный способ выполнять настоящий параллелизм — это multiprocessing. import asyncio import multiprocessing def heavy_computation(n): return sum(i**2 for i in range(n)) async def main(): loop = asyncio.get_running_loop() with multiprocessing.Pool() as pool: result = await loop.run_in_executor(pool, heavy_computation, 10**7) print(result) asyncio.run(main()) Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Что случится с сервером при использовании GET? Когда сервер получает HTTP-запрос типа GET, он выполняет следующие действия 🟠Анализ запроса проверяет URL и параметры в строке запроса (например, ?id=123). 🟠Поиск ресурса находит запрашиваемый файл, данные из базы или другой ресурс. 🟠Возврат ответа отправляет данные клиенту (если ресурс найден — код 200, если нет — 404). 🚩Особенности GET-запроса 🟠Безопасный не изменяет данные на сервере, используется только для чтения. 🟠Идемпотентный повторные запросы дают одинаковый результат. 🟠Параметры в URL данные передаются через строку запроса, что не подходит для конфиденциальной информации. import requests response = requests.get("Ссылка скрыта params={"id": 123}) print(response.text) # Данные с сервера Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Как собрать образ в Docker? Образ собирается из Dockerfile при помощи команды сборки. В процессе выполнения создаются слои, соответствующие каждой инструкции в Dockerfile. По завершении формируется итоговый образ, который можно запускать как контейнер. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Какие есть операторы ограничений? Ограничения (constraints) в SQL используются для контроля целостности данных в таблицах. Они помогают предотвратить некорректные значения и обеспечить согласованность данных. 🚩`NOT NULL` (Запрещает `NULL`) Используется, если поле обязательно для заполнения CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL -- Поле name обязательно ); Нельзя вставить NULL в name INSERT INTO users (id, name) VALUES (1, NULL); -- Ошибка! 🚩`UNIQUE` (Гарантирует уникальность значений) Запрещает дубликаты в столбце CREATE TABLE users ( id INT PRIMARY KEY, email VARCHAR(100) UNIQUE -- Email должен быть уникальным ); Попытка вставить одинаковый email вызовет ошибку INSERT INTO users (id, email) VALUES (1, '[email protected]'); INSERT INTO users (id, email) VALUES (2, '[email protected]'); -- Ошибка! Создание UNIQUE на нескольких колонках CREATE TABLE orders ( user_id INT, product_id INT, UNIQUE (user_id, product_id) -- Запрещает заказывать один товар дважды ); 🚩`PRIMARY KEY` (Главный ключ, уникальный идентификатор) Объединяет NOT NULL + UNIQUE и гарантирует, что строка уникальна. CREATE TABLE users ( id INT PRIMARY KEY, -- Уникальный идентификатор name VARCHAR(50) ); Можно создать PRIMARY KEY на нескольких колонках CREATE TABLE enrollments ( student_id INT, course_id INT, PRIMARY KEY (student_id, course_id) -- Один студент не может записаться дважды на один курс ); 🚩`FOREIGN KEY` (Связь таблиц) Создаёт связь между таблицами и поддерживает ссылочную целостность. Есть таблица пользователей (users) и таблица заказов (orders), где user_id в orders должен ссылаться на id в users. CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50) ); CREATE TABLE orders ( id INT PRIMARY KEY, user_id INT, FOREIGN KEY (user_id) REFERENCES users(id) -- Связь с таблицей users ); Что делать при удалении пользователя? FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Какие ограничения есть у рекурсии в Python? Рекурсия — это мощный инструмент, но в Python она имеет ограничения, которые нужно учитывать при написании кода. 🟠Ограничение на глубину рекурсии (`sys.getrecursionlimit()`) В Python по умолчанию рекурсия ограничена 1000 вызовами, чтобы избежать переполнения стека. import sys print(sys.getrecursionlimit()) # 1000 (обычное значение) Если превысить этот лимит, программа вызовет ошибку def recursive(): return recursive() recursive() # RecursionError: maximum recursion depth exceeded 🚩Как изменить лимит? Можно увеличить глубину рекурсии, но это небезопасно sys.setrecursionlimit(2000) # Увеличиваем до 2000 🟠Рекурсия требует много памяти Каждый рекурсивный вызов создаёт новый фрейм в стеке вызовов. def factorial(n): if n == 1: return 1 return n * factorial(n - 1) print(factorial(10000)) # Ошибка из-за переполнения стека 🟠Отсутствие оптимизации хвостовой рекурсии Другие языки (например, Lisp, JavaScript) автоматически оптимизируют хвостовую рекурсию (Tail Call Optimization, TCO). Python не делает этого, поэтому даже "идеальная" рекурсия всё равно переполняет стек. def tail_recursive(n, acc=1): if n == 1: return acc return tail_recursive(n - 1, n * acc) print(tail_recursive(1000)) # Всё равно вызовет RecursionError 🟠Рекурсия медленнее цикла Рекурсивный вызов требует больше накладных расходов (создание стек-фреймов), чем обычный for или while. # Итеративный вариант (быстрее) def factorial_iter(n): result = 1 for i in range(1, n + 1): result *= i return result # Рекурсивный вариант (медленнее) def factorial_rec(n): if n == 1: return 1 return n * factorial_rec(n - 1) Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Что такое звёздный синтаксис (*)? В Python * используется: – при распаковке (например, аргументов или списков), – для переменного числа аргументов функции, – в срезах и других операциях с коллекциями. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Можно ли при вызове метода save указать какие поля изменять? Да, в Django ORM можно указать конкретные поля для сохранения, используя параметр update_fields в методе .save(). 🚩Как использовать `update_fields` Пример модели from django.db import models class UserProfile(models.Model): name = models.CharField(max_length=100) email = models.EmailField() age = models.IntegerField() Обновляем только поле name, не трогая email и age user = UserProfile.objects.get(id=1) user.name = "Новый пользователь" user.save(update_fields=["name"]) # Обновит только поле `name` 🚩Что делает `update_fields`? Генерирует SQL-запрос только для указанных полей, например: UPDATE user_profile SET name = 'Новый пользователь' WHERE id = 1; 🚩Когда `update_fields` полезен? Уменьшает нагрузку на БД, так как обновляет только нужные поля. Полезен, если нужно изменить одно поле, а не всю запись. Избегает ненужных изменений в auto_now и auto_now_add полях (DateTimeField). 🚩Ограничения `update_fields` Нельзя использовать при создании объекта (save() с update_fields не работает для .create()). user = UserProfile(name="Alice", email="[email protected]") user.save(update_fields=["name"]) # ❌ Ошибка, объект ещё не в базе! Не обновляет auto_now-поля (DateTimeField) автоматически! updated_at = models.DateTimeField(auto_now=True) # Не обновится с `update_fields` Решение: обновить вручную: user.updated_at = timezone.now() user.save(update_fields=["name", "updated_at"]) Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Динамика подписчиков
+-1.0% за 30 дней
Текущие
12,569
Месяц назад
12,700
Средний рост
+-4 / день
Обновлено
20 часов назад

Отзывы о канале Python Вопросы собесов - тесты

Авторизуйтесь, чтобы оставить отзыв

Только зарегистрированные пользователи могут делиться своим мнением.

Пока нет отзывов

Станьте первым, кто поделится своим впечатлением об этом ресурсе!

Похожие ресурсы

Loading
Переход на светлую тему
Главная Каталог Подборки Блог Вход