🐍💪 ТОП-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. Мой канал в Ютубе – youtube.com/@ptworl