Python Job | Вакансии | Стажировки
20.2K subscribers
225 photos
20 videos
3.5K links
Download Telegram
#собесы #python #senior
Вопросы, которые могут задать на собеседовании Senior Python Developer.
Проверьте себя без помощи поисковиков!


Что такое дескрипторы (descriptors) в Python?

Пример кода:
class Descriptor:
def __get__(self, instance, owner):
return instance._value

def __set__(self, instance, value):
instance._value = value

class MyClass:
attr = Descriptor()

obj = MyClass()
obj.attr = 10
print(obj.attr) # Вывод: 10


❗️Дескрипторы — это объекты, которые определяют поведение доступа к атрибутам других объектов. Они реализуют методы get, set и delete. Примеры дескрипторов — свойства (property), статические методы (@staticmethod) и методы класса (@classmethod). Дескрипторы используются для управления доступом к атрибутам и их изменения.

Ссылка на
документацию по дескрипторам
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
#собесы #python #senior
Вопросы, которые могут задать на собеседовании Senior Python Developer.
Проверьте себя без помощи поисковиков!


Как работает механизм наследования в Python?

Пример кода:
class A:
def greet(self):
print("Привет от A")

class B(A):
def greet(self):
print("Привет от B")

class C(A):
def greet(self):
print("Привет от C")

class D(B, C):
pass

d = D()
d.greet() # Вывод: Привет от B
print(D.__mro__) # Вывод: (<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)


❗️ Python поддерживает множественное наследование. При поиске метода или атрибута интерпретатор использует алгоритм C3 linearization (MRO — Method Resolution Order), который определяет порядок обхода классов. Порядок можно посмотреть с помощью атрибута __mro__. Если метод не найден в текущем классе, Python ищет его в родительских классах в порядке, определённом MRO.

Ссылка на
документацию по наследованию
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
#собесы #python #senior
Вопросы, которые могут задать на собеседовании Senior Python Developer.
Проверьте себя без помощи поисковиков!


Что такое метаклассы (metaclasses) и зачем они нужны?

Пример кода:
class Meta(type):
def __new__(cls, name, bases, dct):
dct['custom_attr'] = 42
return super().__new__(cls, name, bases, dct)

class MyClass(metaclass=Meta):
pass

print(MyClass.custom_attr) # Вывод: 42


❗️Метаклассы — это классы, которые создают другие классы. По умолчанию все классы в Python создаются с помощью метакласса type. Метаклассы позволяют изменять поведение создания классов, например, добавлять методы или атрибуты, проверять соблюдение определённых правил. Пример использования — создание ORM или автоматическая регистрация классов.

Ссылка на
документацию по метаклассам
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62
#собесы #python #senior
Вопросы, которые могут задать на собеседовании Senior Python Developer.
Проверьте себя без помощи поисковиков!


Как работает контекстный менеджер (context manager)?

Пример кода:
class MyContextManager:
def __enter__(self):
print("Вход в контекст")
return self

def __exit__(self, exc_type, exc_val, exc_tb):
print("Выход из контекста")

with MyContextManager() as cm:
print("Внутри контекста")


❗️Контекстный менеджер — это объект, который определяет методы __enter__ и __exit__. Он используется с оператором with для управления ресурсами (например, файлами или сетевыми соединениями). Метод __enter__ выполняется при входе в блок with, а __exit__ — при выходе, даже если произошло исключение. Пример: with open('file.txt', 'r') as f: ....

Ссылка на
документацию по контекстным менеджерам
Please open Telegram to view this post
VIEW IN TELEGRAM
#собесы #python #senior
Вопросы, которые могут задать на собеседовании Senior Python Developer.
Проверьте себя без помощи поисковиков!


Что такое асинхронное программирование и как оно реализовано в Python?

Пример кода:
import asyncio

async def fetch_data():
print("Начало загрузки данных")
await asyncio.sleep(2)
print("Данные загружены")

async def main():
await asyncio.gather(fetch_data(), fetch_data())

asyncio.run(main())


❗️Асинхронное программирование позволяет выполнять задачи без блокировки основного потока. В Python для этого используются ключевые слова async и await, а также библиотека asyncio. Асинхронные функции выполняются в цикле событий (event loop), который управляет выполнением задач. Это полезно для I/O-зависимых операций, таких как сетевые запросы.

Ссылка на
документацию по asyncio
Please open Telegram to view this post
VIEW IN TELEGRAM
👎15👍2
#собесы #python #senior
Вопросы, которые могут задать на собеседовании Senior Python Developer.
Проверьте себя без помощи поисковиков!


Как работает механизм импорта модулей в Python?

Пример кода:
import sys
sys.path.append('/path/to/module')

import my_module


❗️При импорте модуля Python ищет его в директориях, указанных в sys.path. Если модуль не найден, возникает ошибка ModuleNotFoundError. Модуль загружается только один раз, и его код выполняется при первом импорте. Для управления импортом можно использовать importlib или динамически изменять sys.path.

Ссылка на
документацию по импорту
Please open Telegram to view this post
VIEW IN TELEGRAM
6
#собесы #python #senior
Вопросы, которые могут задать на собеседовании Senior Python Developer.
Проверьте себя без помощи поисковиков!


Что такое декораторы и как они работают?

Пример кода:
def my_decorator(func):
def wrapper():
print("До вызова функции")
func()
print("После вызова функции")
return wrapper

@my_decorator
def say_hello():
print("Привет!")

say_hello()


❗️Декораторы — это функции, которые принимают другую функцию и возвращают новую функцию с изменённым поведением. Они используются для добавления функциональности (например, логирования, кэширования) без изменения исходного кода. Пример: @decorator def func(): .... Декораторы могут быть вложенными и принимать аргументы.

Ссылка на
документацию по декораторам
Please open Telegram to view this post
VIEW IN TELEGRAM
👎10🤔4😱4👍2
#собесы #python #senior
Вопросы, которые могут задать на собеседовании Senior Python Developer.
Проверьте себя без помощи поисковиков!


Как работает сериализация и десериализация объектов в Python?

Пример кода:
import pickle

data = {'key': 'value'}
serialized = pickle.dumps(data)
deserialized = pickle.loads(serialized)
print(deserialized) # Вывод: {'key': 'value'}


❗️Сериализация — это процесс преобразования объекта в формат, пригодный для хранения или передачи (например, JSON или бинарный формат). Десериализация — обратный процесс. В Python для этого используются модули pickle (бинарный формат) и json (текстовый формат). pickle поддерживает больше типов данных, но менее безопасен.

Ссылка на
документацию по pickle
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
#собесы #python #senior
Вопросы, которые могут задать на собеседовании Senior Python Developer.
Проверьте себя без помощи поисковиков!


Что такое генераторы и чем они отличаются от обычных функций?

Пример кода:
def my_generator():
yield 1
yield 2
yield 3

gen = my_generator()
for value in gen:
print(value) # Вывод: 1, 2, 3


❗️Генераторы — это функции, которые возвращают итератор с помощью ключевого слова yield. Они не выполняют весь код сразу, а возвращают значения по одному, что полезно для работы с большими данными. Генераторы экономят память, так как не хранят все значения в памяти одновременно.

Ссылка на
документацию по генераторам
Please open Telegram to view this post
VIEW IN TELEGRAM
👎6
#собесы #python #senior
Вопросы, которые могут задать на собеседовании Senior Python Developer.
Проверьте себя без помощи поисковиков!


Как работает механизм исключений (exceptions) в Python?

Пример кода:
try:
result = 10 / 0
except ZeroDivisionError:
print("Ошибка: деление на ноль")
else:
print("Исключений не было")
finally:
print("Этот блок выполнится всегда")


❗️Исключения обрабатываются с помощью блоков try, except, finally и else. При возникновении исключения в блоке try выполнение переходит в соответствующий блок except. Блок finally выполняется всегда, независимо от того, было ли исключение. Блок else выполняется, если исключение не возникло.

Ссылка на
документацию по исключениям
Please open Telegram to view this post
VIEW IN TELEGRAM
10👎4👍1
#собесы #python #senior
Вопросы, которые могут задать на собеседовании Senior Python Developer.
Проверьте себя без помощи поисковиков!


Что такое __slots__ и зачем он нужен?

Пример кода:
class MyClass:
__slots__ = ['x', 'y']

obj = MyClass()
obj.x = 10
obj.y = 20
# obj.z = 30 # Ошибка: нельзя добавить новый атрибут


❗️__slots__ — это атрибут класса, который ограничивает набор атрибутов экземпляра. Он используется для экономии памяти, так как предотвращает создание словаря __dict__ для каждого экземпляра. Однако это ограничивает гибкость, например, добавление новых атрибутов динамически.

Ссылка на
документацию по __slots__
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥3
#собесы #python #senior
Вопросы, которые могут задать на собеседовании Senior Python Developer.
Проверьте себя без помощи поисковиков!


Как работает модуль threading и чем он отличается от multiprocessing?

Пример кода:
import threading

def worker():
print("Работа в потоке")

thread = threading.Thread(target=worker)
thread.start()
thread.join()


❗️threading позволяет создавать потоки, которые выполняются в одном процессе и разделяют память. Однако из-за GIL потоки не могут выполняться одновременно на нескольких ядрах CPU. multiprocessing создаёт отдельные процессы, которые могут использовать несколько ядер, но не разделяют память.

Ссылка на
документацию по threading
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔32
#собесы #python #senior
Вопросы, которые могут задать на собеседовании Senior Python Developer.
Проверьте себя без помощи поисковиков!


Что такое asyncio и как он работает?

Пример кода:
import asyncio

async def fetch_data():
print("Начало загрузки данных")
await asyncio.sleep(2)
print("Данные загружены")

async def main():
await asyncio.gather(fetch_data(), fetch_data())

asyncio.run(main())


❗️asyncio — это библиотека для асинхронного программирования. Она использует цикл событий (event loop) для управления выполнением задач. Асинхронные функции выполняются по очереди, но не блокируют поток, пока ожидают завершения I/O-операций. Это позволяет эффективно использовать ресурсы.

Ссылка на
документацию по asyncio
Please open Telegram to view this post
VIEW IN TELEGRAM
1🤔1