Python Job | Вакансии | Стажировки
20.1K subscribers
222 photos
20 videos
3.36K 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
#собесы #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
#собесы #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
#собесы #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
#собесы #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
#собесы #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
#собесы #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
#собесы #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