11

Вопросы собеседований. 71 - 80

Вопросы 👉 1 - 10
Вопросы 👉 11 - 20
Вопросы 👉 21 - 30
Вопросы 👉 31 - 40
Вопросы 👉 41 - 50
Вопросы 👉 51 - 60
Вопросы 👉 61 - 70


Вопросы

Вопрос 71. Что делает метод split() при применении к строке в Python?

  • A. Он разделяет строку на список подстрок везде, где находит пробельный символ, и возвращает список.

  • B. Он удаляет пробелы в начале и конце строки.

  • C. Он объединяет две строки в одну.

  • D. Он переворачивает строку.

Вопрос 72. Что такое монады в Python, и как они используются? Приведите пример использования монады Maybe для обработки возможных ошибок или отсутствия значений.

  • A. Монады — это встроенные типы данных в Python для хранения последовательностей чисел.

  • B. Монады — это способ организации кода, чтобы использовать больше переменных, не изменяя производительность программы.

  • C. Монады — это абстрактная конструкция, используемая в функциональном программировании для построения цепочек вычислений, а Maybe монада используется для обработки возможных ошибок или отсутствия значений.

  • D. Монады - это объекты, которые используются для описания иерархии классов в Python.

Вопрос 73. Как вы можете получить количество вхождений значения в списке Python?

  • A. count()

  • B. length()

  • C. size()

  • D. number()

Вопрос 74. В Python, что делает оператор with при работе с ресурсами, такими как файлы?

  • A. Он гарантирует, что файл остается открытым на протяжении всего выполнения программы.

  • B. Он автоматически закрывает файл после выполнения блока кода, даже если произошли ошибки.

  • C. Он используется для принудительного открытия файла в режиме записи.

  • D. Он используется для переименования файла.

Вопрос 75. Что такое ленивая оценка (lazy evaluation) в Python, и как она работает? Приведите пример, демонстрирующий использование ленивых вычислений.

  • A. Ленивая оценка - это метод оценки, при котором выражения вычисляются сразу после их определения.

  • B. Ленивая оценка - это стратегия вычислений, при которой выражение вычисляется только тогда, когда его значение необходимо. В Python это может быть реализовано с помощью генераторов и итераторов.

  • C. Ленивая оценка - это когда используются только те переменные, к которым есть обращение.

  • D. Ленивая оценка - это метод ускорения вычислений путем выполнения их параллельно.

Вопрос 76. Что делает следующий код Python, реализующий алгоритм сортировки?

Вопросы собеседований. 71 - 80 Гайд, Инструкция, Python, Рекомендации, Программирование, Длиннопост
  • A. Сортирует массив в обратном порядке.

  • B. Сортирует массив в порядке возрастания с помощью алгоритма пузырьковой сортировки.

  • C. Сортирует массив в порядке убывания с помощью алгоритма сортировки вставками.

  • D. Удаляет дубликаты из массива и сортирует его.

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

  • A. В Python есть только один способ копирования списков - с использованием метода copy(), все остальные способы создают ссылки на исходный список.

  • B. Существуют способы поверхностного копирования ([:], list(), copy()) и глубокого копирования (deepcopy()). Поверхностное копирование создает новый список, но элементы вложенных списков остаются ссылками на оригинальный список. Глубокое копирование создает полностью независимые копии списков, включая все вложенные объекты.

  • C. Существуют три способа копирования списков: [:], list() и copy(), которые выполняют глубокое копирование.

  • D. В Python списки не могут быть скопированы, их можно только переименовать.

Вопрос 78. Каково основное назначение функции zip() в Python?

  • A. Для сжатия файлов.

  • B. Для одновременного итерирования по двум и более последовательностям.

  • C. Для извлечения файлов.

  • D. Для кодирования данных.

Вопрос 79. Что делает оператор is в Python?

  • A. Проверяет, указывают ли обе переменные на один и тот же объект.

  • B. Сравнивает значения двух переменных.

  • C. Гарантирует, что типы переменных идентичны.

  • D. Преобразует тип объекта в целое число.

Вопрос 80. В Python, что возвращает функция globals()?

  • A. Список всех глобальных символов.

  • B. Словарь, представляющий текущую глобальную таблицу символов.

  • C. Значение последнего выражения, вычисленного интерпретатором.

  • D. Список всех локальных символов.


Ответы

71, Правильный ответ: A

Объяснение:

Метод split() в Python используется для разделения строки на подстроки на основе разделителя, который по умолчанию является пробельным символом.

  • Вариант A верен: split() делит строку на список подстрок.

  • Вариант B не верен: strip() используется для удаления пробелов в начале и конце строки.

  • Вариант C не верен: Объединение строк выполняется с помощью оператора + или join().

  • Вариант D не верен: Для переворота строки используется метод reversed(), либо срезы [::-1].

Как работает split():

  1. Метод split() применяется к строке.

  2. Он ищет разделитель в строке (по умолчанию пробельные символы, такие как пробел, табуляция, перенос строки).

  3. Он разделяет строку на подстроки в местах разделителя.

  4. Он возвращает список, содержащий эти подстроки.

  5. Если разделитель не указан, split() будет использовать все пробельные символы как разделители.

Примеры:

Вопросы собеседований. 71 - 80 Гайд, Инструкция, Python, Рекомендации, Программирование, Длиннопост

В результате:

  • Строка "apple banana orange" была разделена на список из трех слов ['apple', 'banana', 'orange'], с помощью разделителя "пробел"

  • Строка "apple,banana,orange" была разделена на три части по запятой ,.

Таким образом, вариант A является правильным ответом.

72 . Правильный ответ: C

Объяснение:

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

  • Ключевые концепции монад:

    • Контейнеры: Монады обычно представляют собой контейнеры для значений.

    • Композиция: Монады позволяют объединять (композировать) функции в цепочки, так что выход одной функции становится входом для следующей.

    • Управление побочными эффектами: Монады помогают изолировать и управлять побочными эффектами (например, ошибки, ввод/вывод) внутри цепочки вычислений.

  • Монада Maybe (или Option):

    • Используется для представления значения, которое может быть либо существует, либо нет (то есть, это либо значение определенного типа, либо "ничего" (None)).

    • Позволяет обрабатывать возможные ошибки или отсутствие значений (например, когда результат деления может привести к делению на ноль).

    • Помогает избежать исключений, если какой-то из шагов вычислений может вернуть невалидное значение.

Пример (из текста вопроса):

Вопросы собеседований. 71 - 80 Гайд, Инструкция, Python, Рекомендации, Программирование, Длиннопост

Разбор примера:

  1. class Maybe: Создаем класс, который реализует Maybe монаду.

  2. __init__: конструктор класса.

  3. bind(self, func): метод, который связывает Maybe с другой функцией. Если текущее значение Maybe это None, то возвращает Maybe() (а значит None). В противном случае - вызовет функцию func c текущим значением.

  4. safe_divide(x, y): Функция, которая безопасно делит x на y, возвращая Maybe(), если y равен нулю.

  5. result: Инициализируется с Maybe(10) , и затем выполняется цепочка операций, где каждый bind связывает результат предыдущего шага со следующим вычислением.

  6. Так как деление на 0 в результате вернет None , и все последующие значения bind вернут None, то в итоге result.value будет равен None.

Разбор вариантов:

  • A. Монады — это встроенные типы данных в Python для хранения последовательностей чисел: Неправильно. Монады - это абстрактная концепция, а не встроенный тип данных.

  • B. Монады — это способ организации кода, чтобы использовать больше переменных, не изменяя производительность программы.: Неправильно. Монады не для управления количеством переменных.

  • C. Монады — это абстрактная конструкция, используемая в функциональном программировании для построения цепочек вычислений, а Maybe монада используется для обработки возможных ошибок или отсутствия значений.: Правильно.

  • D. Монады - это объекты, которые используются для описания иерархии классов в Python.: Неправильно.

В результате:

  • Монады предоставляют способ структурирования вычислений и управления побочными эффектами.

  • Монада Maybe помогает обрабатывать возможные ошибки или отсутствие значений, обеспечивая более безопасный код.

Таким образом, правильным ответом является C. Монады — это абстрактная конструкция, используемая в функциональном программировании для построения цепочек вычислений, а Maybe монада используется для обработки возможных ошибок или отсутствия значений.

73, Правильный ответ: A

Объяснение:

Для подсчета количества вхождений определенного значения в списке Python используется метод count().

  • Вариант A верен: Метод count() возвращает количество вхождений указанного значения в списке.

  • Вариант B не верен: length() или len() используется для получения общей длины (количества элементов) списка, а не количества вхождений конкретного значения.

  • Вариант C не верен: size() не является методом для списков в Python.

  • Вариант D не верен: number() не является методом для списков в Python.

Как работает count():

  1. Метод count() вызывается у списка.

  2. Он принимает один аргумент - значение, количество вхождений которого нужно подсчитать.

  3. Он возвращает целое число, представляющее количество раз, которое указанное значение встречается в списке.

Пример:

Вопросы собеседований. 71 - 80 Гайд, Инструкция, Python, Рекомендации, Программирование, Длиннопост

В результате:

  • my_list.count(2) возвращает 3, так как число 2 встречается три раза в списке.

  • my_list.count(6) возвращает 0, так как число 6 не встречается в списке.

Таким образом, вариант A является правильным.

74, Правильный ответ: B

Объяснение:

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

  • Вариант A не верен: with гарантирует закрытие файла, а не его постоянное открытие.

  • Вариант B верен: with автоматически закрывает файл после использования.

  • Вариант C не верен: with не используется для открытия файлов в режиме записи, эта операция выполняется при помощи параметра mode="w" в функции open().

  • Вариант D не верен: with не используется для переименования файлов, для этого применяют модуль os.

Как работает with:

  1. with работает с "менеджером контекста" (context manager), который гарантирует корректное управление ресурсами.

  2. Когда выполнение достигает оператора with, вызывается метод __enter__ объекта менеджера контекста (например, файл открывается).

  3. После выполнения кода внутри with блока, вызывается метод __exit__, гарантируя закрытие файла, независимо от того, возникли ли ошибки в блоке with.

Пример:

Вопросы собеседований. 71 - 80 Гайд, Инструкция, Python, Рекомендации, Программирование, Длиннопост

В результате:

  • Файл будет автоматически открыт при входе в блок with.

  • После выполнения кода внутри блока with файл будет автоматически закрыт даже при возникновении исключений.

Таким образом, вариант B является правильным.

75, Правильный ответ: B

Объяснение:

Ленивая оценка (lazy evaluation) — это стратегия вычислений, при которой выражение не вычисляется немедленно, а откладывается до момента, когда его значение действительно необходимо. Эта стратегия позволяет экономить вычислительные ресурсы, поскольку вычисления не выполняются до тех пор, пока их результат действительно не потребуется.

  • Основные концепции ленивой оценки:

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

    • Экономия ресурсов: Позволяет экономить память и процессорное время за счет того, что вычисляются только нужные значения.

    • Бесконечные последовательности: Позволяет представлять бесконечные последовательности данных, поскольку значения вычисляются по запросу.

    • Использование генераторов и итераторов: Python позволяет реализовать ленивые вычисления с помощью генераторов и итераторов.

  • Генераторы и ленивые вычисления:

    • Генераторы — это специальные функции, которые используют yield для возвращения значений по одному за раз.

    • Генераторы вычисляют следующее значение только когда вызывается функция next или происходит итерация в цикле for, а не вычисляют все значение сразу.

Пример (из текста вопроса):

Вопросы собеседований. 71 - 80 Гайд, Инструкция, Python, Рекомендации, Программирование, Длиннопост

Описание примера:

  • fibonacci(): Генераторная функция, которая генерирует бесконечную последовательность чисел Фибоначчи.

    • while True: бесконечный цикл

    • yield a: возвращает следующее число Фибоначчи и приостанавливает выполнение функции.

  • fib_gen = fibonacci(): Создает объект-генератор.

  • for i in range(10): Цикл, который выполнится 10 раз.

  • next(fib_gen): Вызывает генератор, заставляя его вычислить и вернуть следующее значение Фибоначчи.

  • Генератор генерирует значения по запросу и только когда они нужны циклу.

Другие примеры:

Вопросы собеседований. 71 - 80 Гайд, Инструкция, Python, Рекомендации, Программирование, Длиннопост

Разбор вариантов:

  • A. Ленивая оценка - это метод оценки, при котором выражения вычисляются сразу после их определения.: Неправильно. Это противоположность ленивой оценки.

  • B. Ленивая оценка - это стратегия вычислений, при которой выражение вычисляется только тогда, когда его значение необходимо. В Python это может быть реализовано с помощью генераторов и итераторов.: Правильно.

  • C. Ленивая оценка - это когда используются только те переменные, к которым есть обращение.: Неправильно. Это связано не с ленивыми вычислениями, а с областью видимости переменных.

  • D. Ленивая оценка - это метод ускорения вычислений путем выполнения их параллельно.: Неправильно.

В результате:

  • Ленивая оценка позволяет экономить ресурсы за счет отложенных вычислений.

  • Генераторы и итераторы позволяют реализовывать ленивую оценку в Python.

Таким образом, правильным ответом является B. Ленивая оценка - это стратегия вычислений, при которой выражение вычисляется только тогда, когда его значение необходимо. В Python это может быть реализовано с помощью генераторов и итераторов.

76, Правильный ответ: B

Объяснение:

Предоставленный код реализует алгоритм пузырьковой сортировки (bubble sort).

  • Алгоритм пузырьковой сортировки:

    • Сравнивает соседние элементы массива.

    • Если текущий элемент больше следующего, то они меняются местами.

    • В результате каждого прохода самый большой элемент "всплывает" в конец массива.

    • Проходы повторяются, уменьшая на каждом шаге границу рассматриваемой части массива.

  • Описание кода:

    • bubble_sort(arr): Функция, которая принимает массив arr в качестве аргумента.

    • n = len(arr): Определяет длину массива.

    • for i in range(n): Внешний цикл проходит по массиву n раз.

    • for j in range(0, n-i-1): внутренний цикл проходит до границы отсортированной части массива.

    • if arr[j] > arr[j+1]: проверяет, нужно ли менять соседние элементы местами.

    • arr[j], arr[j+1] = arr[j+1], arr[j]: меняет соседние элементы местами.

    • return arr: возвращает отсортированный массив.

Разбор вариантов:

  • A. Сортирует массив в обратном порядке: Неправильно.

  • B. Сортирует массив в порядке возрастания с помощью алгоритма пузырьковой сортировки: Правильно.

  • C. Сортирует массив в порядке убывания с помощью алгоритма сортировки вставками: Неправильно.

  • D. Удаляет дубликаты из массива и сортирует его: Неправильно.

В результате:

  • Код правильно реализует алгоритм пузырьковой сортировки для сортировки массива в порядке возрастания.

  • Пузырьковая сортировка является простым, но не самым эффективным алгоритмом сортировки.

Таким образом, правильным ответом является B. Сортирует массив в порядке возрастания с помощью алгоритма пузырьковой сортировки.

77, Правильный ответ: B

Объяснение:

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

  1. Поверхностное копирование (Shallow Copy):

    • Создает новый объект списка, но не рекурсивно копирует объекты, содержащиеся в исходном списке.

    • Если элементы исходного списка сами являются изменяемыми объектами (например, вложенные списки), то в скопированном списке будут храниться ссылки на эти объекты, а не их копии.

    • Способы создания поверхностной копии:

      • Срез ([:]): new_list = old_list[:]

      • Функция list(): new_list = list(old_list)

      • Метод copy(): new_list = old_list.copy()

  2. Глубокое копирование (Deep Copy):

    • Создает новый объект списка и рекурсивно копирует все объекты, содержащиеся в исходном списке, включая вложенные изменяемые объекты.

    • Изменения в глубоко скопированном списке не повлияют на исходный список и наоборот.

    • Используется функция deepcopy() из модуля copy.

      • import copy; new_list = copy.deepcopy(old_list)

Примеры кода (поверхностное копирование):

Вопросы собеседований. 71 - 80 Гайд, Инструкция, Python, Рекомендации, Программирование, Длиннопост

Вывод:

Вопросы собеседований. 71 - 80 Гайд, Инструкция, Python, Рекомендации, Программирование, Длиннопост

Примеры кода (глубокое копирование):

Вопросы собеседований. 71 - 80 Гайд, Инструкция, Python, Рекомендации, Программирование, Длиннопост

Вывод:

Вопросы собеседований. 71 - 80 Гайд, Инструкция, Python, Рекомендации, Программирование, Длиннопост

Разбор вариантов:

  • A. В Python есть только один способ копирования списков - с использованием метода copy(), все остальные способы создают ссылки на исходный список: Неправильно.

  • B. Существуют способы поверхностного копирования ([:], list(), copy()) и глубокого копирования (deepcopy()). Поверхностное копирование создает новый список, но элементы вложенных списков остаются ссылками на оригинальный список. Глубокое копирование создает полностью независимые копии списков, включая все вложенные объекты: Правильно.

  • C. Существуют три способа копирования списков: [:], list() и copy(), которые выполняют глубокое копирование: Неправильно, эти способы выполняют только поверхностное копирование.

  • D. В Python списки не могут быть скопированы, их можно только переименовать: Неправильно.

В результате:

  • Поверхностное копирование создает новый список, но не создает новые объекты для вложенных изменяемых элементов (их ID не меняется).

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

Таким образом, правильным ответом является B. Существуют способы поверхностного копирования ([:], list(), copy()) и глубокого копирования (deepcopy()). Поверхностное копирование создает новый список, но элементы вложенных списков остаются ссылками на оригинальный список. Глубокое копирование создает полностью независимые копии списков, включая все вложенные объекты.

78, Правильный ответ: B

Объяснение:

Функция zip() в Python предназначена для объединения нескольких итерируемых объектов (например, списков, кортежей или строк) и одновременной итерации по ним.

  • Вариант A не верен: Функция zip() не занимается сжатием файлов.

  • Вариант B верен: zip() позволяет итерировать по нескольким последовательностям одновременно.

  • Вариант C не верен: zip() не предназначена для извлечения файлов.

  • Вариант D не верен: zip() не занимается кодированием данных.

Как работает zip():

  1. Функция zip() принимает в качестве аргументов два или более итерируемых объекта.

  2. Она возвращает итератор, который генерирует кортежи.

  3. Каждый кортеж содержит элементы из соответствующих позиций входных итерируемых объектов.

  4. Итерация продолжается до тех пор, пока один из входных итерируемых объектов не закончится.

Типичные случаи использования zip():

  1. Параллельная итерация: Когда нужно перебрать несколько последовательностей одновременно, имея доступ к элементам с одинаковым индексом.

  2. Создание словарей: Для создания словаря из двух списков, один из которых является ключами, а другой - значениями.

  3. Транспонирование матриц: zip() используется при транспонировании матриц (замена строк на столбцы и наоборот).

  4. Объединение данных: Соединение данных из разных списков в пары или кортежи для дальнейшей обработки.

Пример:

Вопросы собеседований. 71 - 80 Гайд, Инструкция, Python, Рекомендации, Программирование, Длиннопост

В результате:

  • При итерировании с помощью zip() , пары элементов из names и ages выдаются на каждой итерации.

  • zip(names, ages) вернет пары только до тех пор пока не закончится наименьший итерабельный объект.

  • В словаре каждый ключ будет из списка names, а значение из списка ages

Таким образом, вариант B является верным ответом.

79, Правильный ответ: A

Объяснение:

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

  • Вариант A верен: Оператор is проверяет идентичность объектов, а не их значения.

  • Вариант B не верен: Для сравнения значений используется оператор ==.

  • Вариант C не верен: is не проверяет типы, а только идентичность объектов.

  • Вариант D не верен: is не занимается преобразованием типов.

Как работает оператор is:

  1. Он сравнивает два объекта (переменные) по их идентичности (то есть, по их расположению в памяти), а не по их значениям.

  2. Возвращает True, если оба операнда ссылаются на один и тот же объект в памяти.

  3. Возвращает False в противном случае.

Важные отличия от ==:

  • ==: Проверяет равенство значений объектов. Возвращает True, если значения объектов равны.

  • is: Проверяет идентичность объектов. Возвращает True, если обе переменные указывают на один и тот же объект в памяти.

Пример:

Вопросы собеседований. 71 - 80 Гайд, Инструкция, Python, Рекомендации, Программирование, Длиннопост

В результате:

  • a и b имеют одинаковые значения, но являются разными объектами в памяти, поэтому == возвращает True, а is возвращает False.

  • a и c указывают на один и тот же объект, поэтому и == и is возвращают True

  • Python, для оптимизации работы с небольшими числами, создает один объект для них в памяти. Поэтому в примере с num3 и num4 , обе переменные будут ссылаться на один и тот же объект.

Таким образом, вариант A является правильным ответом.

80, Правильный ответ: B

Объяснение:

В Python функция globals() возвращает словарь, представляющий текущую глобальную таблицу символов.

  • Вариант A не верен: globals() возвращает словарь, а не список.

  • Вариант B верен: globals() возвращает словарь с информацией о глобальных символах.

  • Вариант C не верен: Для получения значения последнего выражения используется _

  • Вариант D не верен: Для локальных переменных используется locals()

Что такое глобальная таблица символов:

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

Как использовать globals():

Функция globals() может быть полезна для:

  • Интроспекции: Для получения информации о глобальных переменных, функций и классов.

  • Динамическое управление переменными: Можно использовать для доступа к глобальным переменным и их значениям динамически.

Пример:

Вопросы собеседований. 71 - 80 Гайд, Инструкция, Python, Рекомендации, Программирование, Длиннопост

В результате:

  • При вызове globals() вне функции, словарь содержит все глобальные переменные, определенные в скрипте, включая global_var и my_function.

  • При вызове globals() внутри my_function(), словарь покажет те же глобальные переменные.

  • Словарь locals() внутри my_function() покажет локальные переменные. Таким образом, вариант B является верным.


Удачи! Подпишись, чтобы не пропустить

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу