Logo
TGCATALOG
Catalog Collections Blog
Python Interview Questions - tests

Python Interview Questions - tests

Questions, tests and tasks for Python interviews.

No ratings
599
29.10.2026
599
29.10.2026
No ratings
599
29.10.2026
Safe redirect via bot
О канале

Questions, tests and tasks for Python interviews.

Подписчиков 12,566
Тематика Technology
Язык English
Ссылка t.me/python_easy_ru

We also recommend

Kekaton AI | Voiceover and voice clone
Kekaton AI | Voiceover and voice clone
Bot

AI bot for text-to-speech and voice cloning in Telegram. Create audio using neural network quickly and easily.

Description

Channel with questions for Python interviews. Tests, tasks and materials for preparation.

Latest posts

Python Interview Questions - tests
Python Interview Questions - tests
🔒Открыть пост
и посмотреть медиа
🤔 Как происходит наследование моделей в 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 Interview Questions - tests
Python Interview Questions - tests
🔒Открыть пост
и посмотреть медиа
🤔 Как в обычном tuple происходит обращение? В обычном tuple доступ к элементам осуществляется только по индексу Обычные кортежи не имеют имён полей, и их нельзя использовать как именованные структуры без дополнительных обёрток. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Python Interview Questions - tests
Python Interview Questions - tests
🔒Открыть пост
и посмотреть медиа
🤔 Как отсортировать список словарей по определенному полю? Для сортировки списка словарей по определенному полю в 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 Interview Questions - tests
Python Interview Questions - tests
🔒Открыть пост
и посмотреть медиа
🤔 Срезы или слайсы в Python? Позволяют получить подмножество элементов из строки, списка и других последовательностей с помощью синтаксиса [start:stop:step]. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Python Interview Questions - tests
Python Interview Questions - tests
🔒Открыть пост
и посмотреть медиа
🤔 Чем отличаются методы сокрытия? Методы и атрибуты класса могут быть скрыты от внешнего использования с помощью различных уровней сокрытия. Сокрытие реализуется с помощью соглашений об именах, а не с помощью жесткой инкапсуляции, как в некоторых других языках программирования. Основные уровни сокрытия включают публичные, защищенные и приватные методы и атрибуты. 🚩Публичные методы и атрибуты Доступны из любого места, как внутри класса, так и за его пределами. Их имена не начинаются с подчеркиваний. 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 Interview Questions - tests
Python Interview Questions - tests
🔒Открыть пост
и посмотреть медиа
🤔 Чем отличается re.match от re.search? - re.match() проверяет только начало строки на соответствие шаблону. Если начало не совпадает — возвращает None. - re.search() ищет соответствие в любом месте строки и возвращает первое совпадение. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Python Interview Questions - tests
Python Interview Questions - tests
🔒Открыть пост
и посмотреть медиа
🤔 Какие нюансы есть в использовании чисел как ключей? Использование чисел в качестве ключей в словарях 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 Interview Questions - tests
Python Interview Questions - tests
🔒Открыть пост
и посмотреть медиа
🤔 Что такое Docker Daemon? Docker Daemon (dockerd) — это фоновый процесс, управляющий: - образами, - контейнерами, - сетями и томами. Он слушает команды от клиента (docker) и взаимодействует с ядром ОС для запуска контейнеров. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Python Interview Questions - tests
Python Interview Questions - tests
🔒Открыть пост
и посмотреть медиа
🤔 Почему вычислять большие значения в асинхронной функции плохо? Асинхронность (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 Interview Questions - tests
FAQ

Open Python Interview Questions - tests in Telegram and press the Start button. No separate registration is required.

Yes. The service is designed to be straightforward: open the resource, follow the on-screen instructions and start using it.

No. You can use Python Interview Questions - tests directly in Telegram unless the resource description says otherwise.

Access depends on the resource. Check the current information in Telegram after opening Python Interview Questions - tests.

The exact features depend on the resource. Open Python Interview Questions - tests to see its current functions, content and access conditions.
Subscriber dynamics
+-1.0% last 30 days
Current
12,566
Month ago
12,694
Average growth
+-4 / day
Updated
2 hours ago

Reviews for channel Python Interview Questions - tests

Log in to leave a review

Only registered users can share their opinion.

No reviews yet

Be the first to share your impression of this resource!

Similar resources

Loading
Switch to Light Theme
Home Catalog Collections Blog Login