ТОП-5 вопросов повышенной сложности на собеседовании по Python

Метаклассы, дескрипторы, модификаторы доступа – звучит сложно? Разберем 5 вопросов, которые часто задают на собеседованиях по Python.

В начале этой статьи я бы хотел немного познакомиться с вами. Меня зовут Кирилл и достаточно долгое время я провел в должности тех. лида и, исходя из этого, мне нужно было часто проводить собеседования. Сам я Full-Stack и из-за частых собесов у меня сформировался определенный топ интересных вопросов, который я задаю на собеседовании.

1. Что такое метаклассы?

Метакласс – это класс, который определяет свойства других классов. С помощью метакласса мы можем определять свойства, которые следует добавлять в новые классы, определенные в нашем коде. То есть исходя из этого – метаклассы мы можем использовать в качестве конструктора для наших классов.

2. Что такое дескрипторы и как их использовать?

Если говорить в общем, то дескриптор — это атрибут объекта со связанным поведением (англ. binding behavior), т. е. такой, чьё поведение при доступе переопределяется методами протокола дескриптора. Эти методы: get, setи delete. Если хотя бы один из этих методов определён для объекта, то он становится дескриптором. Стандартное поведение при доступе к атрибутам — это получение, установка и удаление атрибута из словаря объекта.

3. Что такое модификаторы доступа и как с ними работать?

Все поля, методы и остальные компоненты класса имеют модификаторы доступа. Модификаторы доступа позволяют задать допустимую область видимости для компонентов класса. То есть модификаторы доступа определяют контекст, в котором можно употреблять данную переменную или метод.

private: закрытый или приватный компонент класса или структуры. Приватный компонент доступен только в рамках своего класса или структуры. В Python объявляется с помощью двух нижних подчеркиваний __.

protected: такой компонент класса доступен из любого места в своем классе или в производных классах. При этом производные классы могут располагаться в других сборках. В Python объявляется с помощью одного нижнего подчеркивания _.

public: публичный, общедоступный компонент класса или структуры. Такой компонент доступен из любого места в коде, а также из других программ и сборок. В Python объявляется без нижних подчеркиваний.

Важно понимать, что подчеркивания несут скорее документальный характер, так как в Python модификаторов доступа нет и это лишь помощь в том, чтобы по коду было понятно с чем мы работаем

4. Почему числа не равны?

Это связано с тем что Python хранит данные данные от -5 до 256 в одной ячейке памяти, то есть две переменные будут указателями на одну ячейку в области памяти. Если цифра превышает этот лимит, то для нее создается отдельная ячейка в памяти.

Оператор is проверяет указывают ли переменные на одинаковую область в памяти

5. Что такое каррирование?

Каррирование — продвинутая техника для работы с функциями. Она используется не только в Python, но и в других языках.

Каррирование — это трансформация функций таким образом, чтобы они принимали аргументы не как f(a, b, c), а как f(a)(b)(c).

Каррирование не вызывает функцию, оно только трансформирует её. Каррированием также называют уменьшение арности функции.

Мой канал в ТГ – https://t.me/ptworl. Мой канал по Python в Ютубе – youtube.com/@ptworl

0
Комментарии
-3 комментариев
Раскрывать всегда