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

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

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

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

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

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

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

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

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

Описание

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

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

Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Как происходит наследование моделей в Django? В Django можно наследовать модели, используя стандартное наследование классов. Это помогает повторно использовать код, организовывать данные и добавлять общие поля в несколько моделей. Django поддерживает три основных типа наследования: 🟠Абстрактные модели Абстрактные модели используются, когда нужно создать базовый класс с полями и методами, которые должны быть унаследованы, но сам класс не должен создавать таблицу в базе данных. Создается базовый класс с abstract = True в Meta. Дочерние классы наследуют его поля и методы, но не его саму в виде отдельной таблицы. from django.db import models class BaseModel(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: abstract = True # Указывает, что это абстрактная модель class Post(BaseModel): title = models.CharField(max_length=255) content = models.TextField() class Comment(BaseModel): text = models.TextField() 🟠Многоуровневое (конкретное) наследование Этот тип наследования создаёт отдельные таблицы для каждой модели. Используется, когда дочерний класс должен представлять отдельную сущность, но при этом иметь доступ к полям родительского класса. Django создаёт отдельные таблицы в БД для родительской и дочерней модели. Дочерняя модель автоматически получает OneToOneField на родительскую. class Person(models.Model): name = models.CharField(max_length=255) class Employee(Person): # Отдельная таблица employee salary = models.DecimalField(max_digits=10, decimal_places=2) 🟠Прокси-модели (Proxy Models) Используются, когда нужно изменить поведение модели без изменения структуры базы данных. Прокси-модель наследует поля родительской модели. В Meta указывается proxy = True. Можно переопределять методы, добавлять новые, но не менять поля. class Person(models.Model): name = models.CharField(max_length=255) class Manager(Person): class Meta: proxy = True # Указываем, что это прокси-модель def get_uppercase_name(self): return self.name.upper() Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Как в обычном tuple происходит обращение? В обычном tuple доступ к элементам осуществляется только по индексу Обычные кортежи не имеют имён полей, и их нельзя использовать как именованные структуры без дополнительных обёрток. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Как отсортировать список словарей по определенному полю? Для сортировки списка словарей по определенному полю в Python удобно использовать функцию sorted() или метод sort(). Оба подхода позволяют указать ключ сортировки с помощью параметра key, где можно передать либо функцию, либо лямбда-выражение, которое извлекает значение из словаря для сортировки. 🚩Почему это важно? Списки словарей часто используются для хранения структурированных данных. Например, вы можете иметь список сотрудников, где каждый сотрудник представлен в виде словаря с полями, такими как имя, возраст и зарплата. Сортировка по определенному полю позволяет упорядочить данные, чтобы ими было проще пользоваться или отображать. 🚩Как это сделать? 🟠Использование функции `sorted()` Эта функция возвращает новый отсортированный список. employees = [ {"name": "Alice", "age": 30, "salary": 70000}, {"name": "Bob", "age": 25, "salary": 50000}, {"name": "Charlie", "age": 35, "salary": 120000} ] # Сортировка по возрасту sorted_employees = sorted(employees, key=lambda x: x["age"]) print(sorted_employees) Результат [{'name': 'Bob', 'age': 25, 'salary': 50000}, {'name': 'Alice', 'age': 30, 'salary': 70000}, {'name': 'Charlie', 'age': 35, 'salary': 120000}] 🟠Использование метода `sort()` Этот метод изменяет существующий список. employees = [ {"name": "Alice", "age": 30, "salary": 70000}, {"name": "Bob", "age": 25, "salary": 50000}, {"name": "Charlie", "age": 35, "salary": 120000} ] # Сортировка по зарплате employees.sort(key=lambda x: x["salary"]) print(employees) Результат [{'name': 'Bob', 'age': 25, 'salary': 50000}, {'name': 'Alice', 'age': 30, 'salary': 70000}, {'name': 'Charlie', 'age': 35, 'salary': 120000}] 🟠Сортировка в обратном порядке Установите параметр reverse=True, чтобы отсортировать в порядке убывания. sorted_employees_desc = sorted(employees, key=lambda x: x["age"], reverse=True) print(sorted_employees_desc) 🟠Использование функции `itemgetter` из модуля `operator` Это более эффективный способ, чем лямбда-функция, особенно для больших данных. from operator import itemgetter sorted_employees = sorted(employees, key=itemgetter("age")) print(sorted_employees) 🚩Обработка отсутствующих значений Если поле может отсутствовать в некоторых словарях, можно использовать параметр key для обработки таких ситуаций. employees = [ {"name": "Alice", "age": 30}, {"name": "Bob"}, {"name": "Charlie", "age": 35} ] sorted_employees = sorted(employees, key=lambda x: x.get("age", 0)) print(sorted_employees) Результат [{'name': 'Bob'}, {'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 35}] Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Срезы или слайсы в Python? Позволяют получить подмножество элементов из строки, списка и других последовательностей с помощью синтаксиса [start:stop:step]. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Чем отличаются методы сокрытия? Методы и атрибуты класса могут быть скрыты от внешнего использования с помощью различных уровней сокрытия. Сокрытие реализуется с помощью соглашений об именах, а не с помощью жесткой инкапсуляции, как в некоторых других языках программирования. Основные уровни сокрытия включают публичные, защищенные и приватные методы и атрибуты. 🚩Публичные методы и атрибуты Доступны из любого места, как внутри класса, так и за его пределами. Их имена не начинаются с подчеркиваний. class MyClass: def __init__(self): self.public_attribute = "I am public" def public_method(self): return "This is a public method" obj = MyClass() print(obj.public_attribute) # Вывод: I am public print(obj.public_method()) # Вывод: This is a public method 🚩Защищенные методы и атрибуты Не предназначены для использования за пределами класса и его подклассов. Они обозначаются одним подчеркиванием в начале имени. Это всего лишь соглашение, сигнализирующее другим разработчикам, что такие методы и атрибуты не следует использовать вне класса или его подклассов. class MyClass: def __init__(self): self._protected_attribute = "I am protected" def _protected_method(self): return "This is a protected method" class SubClass(MyClass): def access_protected(self): return self._protected_method() obj = MyClass() sub_obj = SubClass() print(sub_obj.access_protected()) # Вывод: This is a protected method 🚩Приватные методы и атрибуты Скрыты от внешнего доступа и доступны только внутри самого класса. Они обозначаются двумя подчеркиваниями в начале имени. Python реализует это с помощью механизма именования, который изменяет имя метода или атрибута, добавляя к нему имя класса, чтобы затруднить доступ извне. class MyClass: def __init__(self): self.__private_attribute = "I am private" def __private_method(self): return "This is a private method" def access_private(self): return self.__private_method() obj = MyClass() try: print(obj.__private_attribute) except AttributeError as e: print(e) # Вывод: 'MyClass' object has no attribute '__private_attribute' try: print(obj.__private_method()) except AttributeError as e: print(e) # Вывод: 'MyClass' object has no attribute '__private_method' # Доступ к приватным методам через публичный метод класса print(obj.access_private()) # Вывод: This is a private method Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Чем отличается re.match от re.search? - re.match() проверяет только начало строки на соответствие шаблону. Если начало не совпадает — возвращает None. - re.search() ищет соответствие в любом месте строки и возвращает первое совпадение. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Какие нюансы есть в использовании чисел как ключей? Использование чисел в качестве ключей в словарях Python – это достаточно распространённый случай. Однако у этого подхода есть несколько нюансов, которые нужно учитывать для избежания ошибок. 🚩Хешируемость чисел Ключи в словаре должны быть хешируемыми, поскольку словари в Python основаны на хеш-таблицах. Хешируемость означает, что объект имеет неизменное значение хеша в течение его жизни. Числа (как int, так и float) являются хешируемыми, поэтому их можно использовать в качестве ключей. d = {1: "один", 2: "два"} print(d[1]) # "один" 🚩Взаимодействие `int` и `float` Python не делает различий между int и float, если их значения равны. Это связано с тем, что у них одинаковое хеш-значение при равенстве. d = {1: "один", 1.0: "float один", 2: "два"} print(d) # {1: 'float один', 2: 'два'} 🚩Непредсказуемое поведение при работе с `float` Числа с плавающей запятой (float) иногда ведут себя непредсказуемо из-за ошибок округления, которые возникают из-за особенностей представления чисел в памяти компьютера. d = {0.1 + 0.2: "значение"} # 0.1 + 0.2 не равно точно 0.3 из-за округления print(d.get(0.3)) # None, ключ не найден! 🚩Производительность Использование чисел как ключей в словарях эффективно с точки зрения производительности. Поскольку числа хешируются быстро и занимают меньше памяти, операции добавления, удаления и поиска выполняются очень быстро. 🚩Проблемы при преобразованиях Если ключами словаря являются числа, то при обработке данных (например, чтении из файла или API) можно случайно преобразовать их в строки, что приведёт к созданию новых ключей вместо использования существующих. d = {1: "один", 2: "два"} print(d.get("1")) # None, строка "1" и число 1 – это разные ключи! 🚩Пользовательские объекты с числовыми свойствами Если вы используете пользовательские объекты как ключи и они ведут себя как числа (например, реализуют методы __hash__ и __eq__), то их поведение должно быть совместимо с ожидаемым использованием. class MyNumber: def __init__(self, value): self.value = value def __hash__(self): return hash(self.value) def __eq__(self, other): return self.value == other.value d = {MyNumber(1): "один"} print(d[MyNumber(1)]) # "один" Ставь 👍 и забирай 📚 Базу знаний
Python Вопросы собесов - тесты
Python Вопросы собесов - тесты
🔒Открыть пост
и посмотреть медиа
🤔 Что такое Docker Daemon? Docker Daemon (dockerd) — это фоновый процесс, управляющий: - образами, - контейнерами, - сетями и томами. Он слушает команды от клиента (docker) и взаимодействует с ядром ОС для запуска контейнеров. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
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 Вопросы собесов - тесты
Динамика подписчиков
+-1.0% за 30 дней
Текущие
12,566
Месяц назад
12,694
Средний рост
+-4 / день
Обновлено
2 часа назад

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

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

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

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

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

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

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