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

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

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

Для обратной связи: @proglibrary_feeedback_bot
加入频道
Что такое модуль __init__.py?

Модуль __init__.py является частью организации пакетов (packages) в Python. Этот файл используется для определения директории как пакета и может содержать код и переменные, которые будут доступны при импорте пакета. Важно отметить, что __init__.py не является обязательным для всех директорий, но он необходим, чтобы Python интерпретировал директорию как пакет.
Что такое wheel и eggs в Python? Какая между ними разница?

Python wheel
— это стандартный формат установки дистрибутивов Python, который содержит все файлы и метаданные, необходимые для установки. Файл WHL также содержит информацию о версиях и платформах Python, поддерживаемых этим файлом. Расширение файла wheel — .whl

Python egg — это сжатый архив ZIP, содержащий исходные файлы приложения Python вместе с метаинформацией о дистрибутиве. Расширение файла egg — .egg

Основная разница заключается в том, что wheel предоставляет более простой и надежный способ установки пакетов. В отличие от eggs, он не требует установки дополнительных зависимостей и обеспечивает более быстрое время установки. Кроме того, wheel поддерживает все платформы, на которых может работать Python.
Что такое shallow copy и как используется?

Shallow copy
это создание нового объекта путем копирования ссылки на вложенный объект, вместо создания полной копии вложенного объекта.

Если мы копируем список, который содержит другие списки, при shallow copy будут скопированы только внешние списки.

Если изменить внутренний список в копии, то это отразится и на оригинале.

Основное отличие от deep copy в том, что при полном копировании создаются копии всех вложенных объектов до самого нижнего уровня.
Что такое магические методы?

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

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

Реализуя магические методы в своем классе, программист может определить поведение класса при различных операциях и сделать его похожим на встроенные типы.
Выведите список файлов в указанной директории

Ответ на картинке.
Что такое pickling и unpickling?

Модуль pickle принимает любой объект Python, преобразует его в строковое представление и сохраняет в файл с помощью функции dump, такой процесс называется pickling.

Процесс извлечения исходных объектов Python из сохраненного строкового представления называется unpickling.
Что значит *args, **kwargs? И зачем нам их использовать?

Мы используем *args, когда не уверены, сколько аргументов будет передано функции, или если хотим передать сохраненный список или кортеж аргументов функции.

**kwargs используется, когда мы не знаем, сколько аргументов ключевых слов будет передано, а также он может быть использован для передачи значений словаря в качестве аргументов ключевых слов. Идентификаторы args и kwargs необязательны, вы можете изменить их на другие, типа *другой **пример, но лучше использовать имя по умолчанию.
#вопросы_с_собеседований
Чем файл .pyc отличается от файла .py?

Хотя оба файла содержат байт-код, .pyc — это скомпилированная версия файла Python
. Он имеет независимый от платформы байт-код.

Следовательно, мы можем выполнить его на любой платформе, поддерживающей формат .pyc.

Python автоматически генерирует его для повышения производительности (с точки зрения времени загрузки, а не скорости).
Напишите программу, которая возвращает количество гласных букв в строке

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

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

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

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

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

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

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

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

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

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

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

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

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

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