Библиотека собеса по Python | вопросы с собеседований
6.16K subscribers
602 photos
9 videos
297 links
Вопросы с собеседований по Python и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/6587aafa

Для обратной связи: @proglibrary_feeedback_bot
加入频道
Напишите программу, которая возвращает количество гласных букв в строке

Наша программа при помощи регулярного выражения, вычисляет количество гласных (A, E, I, O, U, Y) в строке.
Для чего нужен модуль warning?

Модуль warning используется для вывода предупреждений во время выполнения программы.

Предупреждения отличаются от исключений тем, что не прерывают нормальный ход программы.
Они позволяют уведомить разработчика о потенциальных проблемах или нежелательных ситуациях в коде, но при этом не останавливать его выполнение.

Основные причины для использования предупреждений:
— Уведомить о неэффективных конструкциях в коде, которые можно оптимизировать.
— Предупредить об устаревших методах или функциях, которые могут быть удалены в будущих версиях.
— Обозначить использование ненадежных внешних данных или API.
— Выявить подозрительные ситуации, которые не являются критичными ошибками, но требуют внимания.
Что можно передать в конструктор исключения?

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

Обычно в конструктор передают как минимум сообщение, описывающее проблему. Это позволяет потом вывести это сообщение с помощью метода args исключения и таким образом понять, что именно пошло не так.

Также хорошей практикой считается передавать код ошибки — некий уникальный идентификатор проблемы. Это упрощает обработку конкретных исключений в программе.
Что делают StringIO и BytesIO?

StringIO
и BytesIO — это классы из стандартной библиотеки, которые позволяют обрабатывать строки и байты как файлоподобные объекты.

StringIO предназначен для работы с текстом. Он позволяет записывать строки в объект и считывать их оттуда же, имитируя файловый интерфейс.
Это удобно для работы со строками в местах, где ожидается файл — например, для mock-объектов.

BytesIO выполняет ту же роль для байтов — позволяет записывать байты в объект и считывать их как файл.
Это удобно для имитации файлового ввода/вывода в памяти или для работы с двоичными данными.

В целом, эти классы упрощают работу с текстом и двоичными данными, эмулируя файловый интерфейс для строк и байтов в памяти.
Как получить размер папки с помощью Python?

Чтобы получить размер каталога, пользователь должен пройти по всей папке и добавить размер каждого файла, присутствующего в этой папке.
Как пользоваться методами maketrans() и translate()?

Метод maketrans() позволяет описать отображение одних символов на другие, возвращая таблицу преобразования.

Метод translate() позволяет применить заданную таблицу для преобразования строки.
Объясните, как в Python осуществляется управление памятью.

В Python объекты и структуры данных data structures находятся в закрытой динамически выделяемой области private heap, которая управляется менеджером памяти Python. Он делегирует часть работы программам распределения ресурсов allocators, закрепленным за конкретными объектами, и одновременно с этим следит, чтобы они не выходили за пределы динамически выделяемой области.

По факту данной областью управляет интерпретатор interpreter. Пользователь никак не контролирует данный процесс, даже когда манипулирует ссылками объектов на блоки памяти внутри динаической области. Менеджер памяти Python распределяет пространство динамической области среди объектов и другие внутренние буферы по требованию.
Что такое фабрика декораторов?

Это функция, которая возвращает декоратор.
Такой декоратор редко помещают в отдельную переменную. Вместо этого декорируют результатом вызова фабрики декораторов.

Например, вам нужен декоратор для проверки прав. Логика проверки одинакова, но прав может быть много. Чтобы не плодить копипасту, стоит написать фабрику декораторов.
Что такое introspection?

Introspection — это способность программы анализировать свой собственный код во время выполнения.
В Python это достигается с помощью функций, которые позволяют получить информацию о классах, функциях, переменных и модулях.

Одним из примеров использования introspection является динамическое создание объектов в Python. Например, если у вас есть класс, но вы не знаете имя этого класса во время написания кода, вы можете использовать функцию getattr() для получения класса по его имени во время выполнения программы.

Другой пример использования introspection — это определение типа объекта в Python. Для этого можно использовать функцию type().
Как создать случайную строку в Python?

Чтобы сгенерировать случайную строку в Python, используйте модуль строки и метод random.choices().

Строковый модуль в Python содержит различные строковые константы, включая символы ASCII для всех случаев. Он также включает отдельные константы для прописных и строчных букв, цифр и специальных символов.

Модуль random в Python выполняет случайные генерации.
Как можно объявить несколько присваиваний в одном выражении?

Оба варианта на картинке. В первой строке мы присваиваем переменным a, b, c соответственно значения 3, 4, 5, а во второй строке все переменные получают значение 3.
Как преобразовать PNG в PDF?

Для начала установим библиотеку img2pdf — pip install img2pdf.

img2pdf — это пакет Python с открытым исходным кодом для преобразования изображений в формат pdf.

Подробнее ознакомиться с библиотекой img2pdf можно здесь.
Что делает whylogs?

whylogs — это библиотека для профилирования и анализа данных в Python. Она предоставляет средства для сбора статистики о данных, визуализации этой статистики и создания профилей данных для мониторинга и анализа.
Что делает метод ljust()?

Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar.
Что будет в результате выполнения данного кода?

Ответ:
Результатом выполнения данного кода будет [6, 6, 6, 6], а не [0, 2, 4, 6].

Это объясняется тем, что замыкания в Python работают по принципу позднего связывания. Это означает, что значения переменных, используемых в замыканиях, ищутся во время вызова внутренней функции. Поэтому, когда вызывается любая из функций, возвращаемых multipliers(), значение i ищется исключительно в области видимости этой функции в данный момент. А значение i, вне зависимости от того, какая из функций вызывается, после завершения цикла for всегда равно 3. Таким образом, каждая возвращаемая функция умножает значение, которое ей передано, на 3, а поскольку в приведенном выше коде передается значение 2 , все они возвращают значение 6 (то есть 3 x 2).
#вопросы_с_собеседований
Что такое MRO?

MRO (Method Resolution Order) — это механизм, используемый для определения порядка разрешения методов при наследовании классов и множественном наследовании. MRO определяет, какие методы будут вызываться в случае, когда у наследующего класса есть методы с одинаковыми именами, унаследованными от разных базовых классов.

MRO в Python определяется с помощью алгоритма C3 Linearization (C3 линеаризации). Этот алгоритм гарантирует, что порядок разрешения методов будет согласован и предсказуем вне зависимости от порядка наследования. Он предотвращает проблемы, связанные с амбигуитетами и неоднозначностями в множественном наследовании.