11

101 игра на python. Вопросы собеседований. 91 - 100

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


Вопросы


Вопрос 91. Каков эффект оператора *, когда он используется в списке в Python?

  • A. Он повторяет список указанное количество раз.

  • B. Он удаляет все элементы из списка.

  • C. Он используется для умножения каждого элемента на число.

  • D. Он создает указатель на исходный список.


Вопрос 92. Как вы можете преобразовать список целых чисел в список строк?

  • A. Используя функцию str() индивидуально для каждого элемента.

  • B. Используя функцию map(str, list).

  • C. Конкатенируя каждый элемент с пустой строкой.

  • D. A, и B верны.


Вопрос 93. Какой из следующих вариантов не является допустимым идентификатором Python?

  • A. _myvar

  • B. 2myvar

  • C. my_var

  • D. myVar


Вопрос 94. Каков вывод следующего фрагмента кода?

101 игра на python. Вопросы собеседований. 91 - 100 Программирование, Python, Гайд, Отдел кадров, IT, Длиннопост
  • A. Pythonisawesome

  • B. Python is awesome

  • C. ['Python', 'is', 'awesome']

  • D. None


Вопрос 95. Как в Python управляется память?

  • A. Только с помощью ручного управления памятью.

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

  • C. Исключительно через операционную систему.

  • D. С помощью модели распределения памяти стека.


Вопрос 96. Что упрощает оператор with в Python?

  • A. Обработку ошибок

  • B. Операции чтения и записи файлов

  • C. Синтаксис объявлений функций

  • D. Реализацию циклов


Вопрос 97. Что делает ключевое слово yield в Python?

  • A. Завершает функцию.

  • B. Возвращает значение из функции и приостанавливает ее состояние.

  • C. Предотвращает выполнение цикла.

  • D. Пропускает текущую итерацию цикла.


Вопрос 98. Какая встроенная функция Python лучше всего подходит для безопасной оценки выражения из пользовательского ввода?

  • A. eval()

  • B. exec()

  • C. input()

  • D. ast.literal_eval()


Вопрос 99. В Python, что делает декоратор @classmethod с методом?

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

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

  • C. Он позволяет вызывать метод у самого класса, а не только у экземпляров класса.

  • D. Он делает метод приватным, так что к нему нельзя получить доступ извне класса.


Вопрос 100. Каков результат следующей операции с использованием метода update() словаря Python?

101 игра на python. Вопросы собеседований. 91 - 100 Программирование, Python, Гайд, Отдел кадров, IT, Длиннопост

Что будет содержать dict1 после обновления?

  • A. {'a': 1, 'b': 2, 'c': 4}

  • B. {'a': 1, 'b': 3, 'c': 4}

  • C. {'b': 3, 'c': 4}

  • D. {'a': 1, 'b': 2}


Ответы

91. Правильный ответ: A

Объяснение:

В Python, когда оператор * применяется к списку, он используется для создания нового списка путем повторения исходного списка указанное количество раз.

  • Вариант A верен: Оператор * повторяет список указанное количество раз, создавая новый список.

  • Вариант B не верен: Для удаления элементов используется clear(), del и другие методы, а не оператор *.

  • Вариант C не верен: Для умножения каждого элемента списка используется списковое включение с использованием цикла.

  • Вариант D не верен: Оператор * создает новый список, а не указатель.

Как работает * со списками:

  1. Оператор * берет список (левый операнд).

  2. Он повторяет его содержимое указанное число раз (правый операнд).

  3. Возвращает новый список.

Пример:

101 игра на python. Вопросы собеседований. 91 - 100 Программирование, Python, Гайд, Отдел кадров, IT, Длиннопост

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

  • my_list * 2 повторяет элементы списка my_list дважды, создавая новый список [1, 2, 3, 1, 2, 3].

  • my_list * 3 повторяет элементы списка my_list трижды, создавая новый список [1, 2, 3, 1, 2, 3, 1, 2, 3].

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


92, Правильный ответ: D

Объяснение:

Существует несколько способов преобразования списка целых чисел в список строк в Python.

  • Вариант A верен: Функция str() может быть применена к каждому элементу списка по отдельности для преобразования в строку.

  • Вариант B верен: Функция map() позволяет применить функцию str() к каждому элементу списка, что эффективно преобразует все элементы в строки.

  • Вариант C не верен: Конкатенация с пустой строкой, не всегда будет корректно работать с числами (нужно использовать функцию str()).

  • Вариант D верен: Так как варианты A и B верны.

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

  1. str(): Функция str() принимает на вход любой объект и преобразует его в строковое представление.

  2. Цикл: В цикле, поочередно каждый элемент списка может быть преобразован в строку.

  3. map(): Функция map() принимает функцию и итерируемый объект (список) и применяет эту функцию к каждому элементу списка.

  4. Списковое включение: Также можно использовать списковое включение с преобразованием типов.

Примеры:

101 игра на python. Вопросы собеседований. 91 - 100 Программирование, Python, Гайд, Отдел кадров, IT, Длиннопост

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

  • Все три способа (цикл, map() и списковое включение) приведут к созданию списка строк.

  • Конкатенация с пустой строкой работает, но выглядит менее читаемо.

Таким образом, вариант D является верным, поскольку и вариант A, и вариант B являются правильными способами преобразования списка целых чисел в список строк.


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

Объяснение:

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

  • Вариант A верен: _myvar является допустимым идентификатором. Он начинается с подчеркивания, за которым следуют буквы.

  • Вариант B не верен: 2myvar является недопустимым идентификатором. Он начинается с цифры.

  • Вариант C верен: my_var является допустимым идентификатором. Он начинается с буквы и содержит буквы и подчеркивания.

  • Вариант D верен: myVar является допустимым идентификатором. Он начинается с буквы и может содержать буквы в разных регистрах.

Правила для идентификаторов Python:

  1. Начинаются с буквы или подчеркивания: Идентификаторы должны начинаться с буквы (a-z, A-Z) или подчеркивания _.

  2. Содержат буквы, цифры или подчеркивания: После первого символа идентификаторы могут содержать буквы, цифры (0-9) и подчеркивания.

  3. Регистрозависимые: myVar, MyVar и MYVAR будут разными идентификаторами.

  4. Не могут быть ключевыми словами: Нельзя использовать ключевые слова Python (например, if, else, for, while, def, class и т. д.) в качестве идентификаторов.

Пример:

101 игра на python. Вопросы собеседований. 91 - 100 Программирование, Python, Гайд, Отдел кадров, IT, Длиннопост

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

_myvar, my_var и myVar являются допустимыми идентификаторами, а 2myvar вызывает ошибку синтаксиса, так как начинается с цифры.

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


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

Объяснение:

В Python метод join() используется для объединения элементов итерируемой структуры (например, списка строк) в одну строку с помощью разделителя. В данном случае метод join() вызывается у пустой строки '', что означает, что все элементы списка x будут соединены без каких-либо разделителей.

  • Вариант A верен: join() без разделителя объединит все строки в одну: "Pythonisawesome"

  • Вариант B не верен: join() с пробелом как разделителем выведет "Python is awesome", а не в данном примере.

  • Вариант C не верен: Функция join() не вернет список, а строку.

  • Вариант D не верен: Функция join() не вернет None.

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

  1. Метод join() вызывается у объекта строки (разделителя).

  2. Он принимает итерируемый объект (список, кортеж, множество) в качестве аргумента.

  3. Он объединяет все элементы итерируемого объекта в одну строку, используя строку, у которой вызывался метод, в качестве разделителя.

Пример:

101 игра на python. Вопросы собеседований. 91 - 100 Программирование, Python, Гайд, Отдел кадров, IT, Длиннопост

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

  • ''.join(x) объединяет элементы списка x в одну строку без пробелов.

  • ' '.join(x) объединяет элементы списка x в одну строку с пробелами между элементами.

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


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

Объяснение:

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

  • Вариант A не верен: Python не использует ручное управление памятью, как, например, язык C.

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

  • Вариант C не верен: Python не передаёт управление памятью целиком операционной системе.

  • Вариант D не верен: Python не использует модель распределения памяти стека.

Механизмы управления памятью в Python:

  1. Частная куча (private heap): Python использует частную область памяти, где хранятся все объекты Python и структуры данных. Разработчики не имеют прямого доступа к этой памяти.

  2. Автоматическая сборка мусора (automatic garbage collection): Python использует сборщик мусора для обнаружения и освобождения памяти, которая больше не используется. Сборщик мусора работает в автоматическом режиме.

  3. Подсчет ссылок (reference counting): Python отслеживает количество ссылок на каждый объект в памяти. Когда количество ссылок достигает 0, объект удаляется из памяти.

  4. Управление через менеджер памяти Python: Распределением памяти занимается внутренний менеджер памяти, который эффективно управляет выделением и освобождением памяти.

Пример:

101 игра на python. Вопросы собеседований. 91 - 100 Программирование, Python, Гайд, Отдел кадров, IT, Длиннопост

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

  • При создании my_list память выделяется в частной куче, и Python отслеживает эту память.

  • Переменная my_list_2 также ссылается на эту область памяти.

  • После удаления my_list, объект по прежнему доступен через ссылку my_list_2. Сборщик мусора (GC) освободит память, когда счетчик ссылок объекта станет равен 0.

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


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

Объяснение:

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

  • Вариант A не верен: with упрощает процесс управления ресурсами, а не обработки ошибок. Хотя with может косвенно помочь в отлове ошибок при работе с ресурсами, но это не его основная задача.

  • Вариант B верен: with упрощает операции ввода-вывода с файлами, а так же работу с другими ресурсами.

  • Вариант C не верен: with не влияет на синтаксис объявлений функций.

  • Вариант D не верен: with не используется для упрощения циклов.

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

  1. Менеджер контекста: Оператор with работает с объектами, которые реализуют протокол менеджера контекста (методы __enter__ и __exit__).

  2. Управление ресурсами: Когда выполняется блок кода с with, вызывается метод __enter__ объекта, который подготавливает ресурс к использованию. После завершения блока кода (даже если возникло исключение), вызывается метод __exit__, который освобождает ресурс.

Основные применения with:

  • Файлы: Гарантирует, что файл будет закрыт после его использования, даже если произойдет ошибка.

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

  • Блокировки потоков: Управление блокировками в многопоточном коде.

Пример:

101 игра на python. Вопросы собеседований. 91 - 100 Программирование, Python, Гайд, Отдел кадров, IT, Длиннопост

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

  • Файл "my_file.txt" автоматически закрывается, как только выполнится код в блоке with, или возникнет исключение.

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


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

Объяснение:

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

  • Вариант A не верен: yield не завершает функцию, а приостанавливает ее выполнение.

  • Вариант B верен: yield возвращает значение и приостанавливает состояние функции.

  • Вариант C не верен: yield не предотвращает выполнение цикла.

  • Вариант D не верен: yield не пропускает итерации цикла.

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

  1. Функция, содержащая yield, становится генератором.

  2. При вызове генератора, он не выполняет код функции сразу, а возвращает итератор.

  3. Когда метод __next__ вызывается на итераторе, генератор выполняет код до оператора yield.

  4. После yield функция возвращает значение и приостанавливает свое состояние, сохраняя все локальные переменные.

  5. При повторном вызове __next__ или когда запрашивается следующий элемент в цикле for, выполнение функции продолжается с места приостановки.

Преимущества yield:

  1. Ленивая генерация: Значения создаются по мере необходимости, что позволяет экономить память.

  2. Поддержка больших наборов данных: Генераторы идеально подходят для работы с большими объемами данных, которые могут не поместиться в памяти.

  3. Потоковая обработка данных: Генераторы могут эффективно обрабатывать данные по мере их поступления.

Пример:

101 игра на python. Вопросы собеседований. 91 - 100 Программирование, Python, Гайд, Отдел кадров, IT, Длиннопост

В результате: Функция my_generator() использует yield для генерации значений по одному. Цикл for получает значения из генератора и обрабатывает их.

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


98, Правильный ответ: D

Объяснение:

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

  • Вариант A не верен: eval() выполняет строку кода Python, что может быть небезопасно, если строка получена от пользователя (так как пользователь может ввести произвольный код)

  • Вариант B не верен: exec() похожа на eval(), но выполняет произвольный код, также небезопасна при использовании пользовательского ввода.

  • Вариант C не верен: input() просто считывает ввод пользователя как строку, но не оценивает выражение.

  • Вариант D верен: ast.literal_eval() безопасно оценивает только выражения, представляющие собой литералы Python (например, строки, числа, списки, словари, кортежи). Он не позволяет выполнять произвольный код.

eval() vs. ast.literal_eval():

  • eval():

    • Выполняет строку как код Python.

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

  • ast.literal_eval():

    • Безопасно оценивает только выражения, представляющие собой литералы Python.

    • Ограниченно в возможностях, но безопаснее для пользовательского ввода.

Пример:

101 игра на python. Вопросы собеседований. 91 - 100 Программирование, Python, Гайд, Отдел кадров, IT, Длиннопост

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

  • ast.literal_eval() безопасно преобразует строку в словарь.

  • eval() выполняет строку "10 + 20" и выдает результат 30.

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

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


99, Правильный ответ: C

Объяснение:

Декоратор @classmethod в Python используется для преобразования обычного метода класса в метод класса.

  • Вариант A не верен: Он преобразует метод в метод класса, а не в статический метод.

  • Вариант B не верен: Декораторы не влияют на возможность переопределения метода.

  • Вариант C верен: @classmethod позволяет вызывать метод непосредственно у класса, а не только через экземпляр.

  • Вариант D не верен: Декоратор не меняет видимость метода.

Ключевые свойства методов класса:

  1. Связывание с классом: Метод класса связан с самим классом, а не с его экземплярами.

  2. Аргумент cls: Метод класса автоматически получает ссылку на класс (conventionally named cls) в качестве первого аргумента, это отличие от обычных методов (self).

  3. Доступ к атрибутам класса: Он может получать доступ к атрибутам класса и модифицировать их.

  4. Вызов через класс или экземпляр: Метод класса можно вызывать как у самого класса ClassName.method(), так и у экземпляра instance.method().

Типичные применения методов класса:

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

Пример:

101 игра на python. Вопросы собеседований. 91 - 100 Программирование, Python, Гайд, Отдел кадров, IT, Длиннопост

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

  • Метод create_with_default_value вызывается через класс и возвращает новый экземпляр.

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

  • Класс метод modify_class_variable изменяет переменную класса.

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

Подпишись, чтобы не пропустить следующие вопросы из интервью разработчика на pythpn

Удачи!

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

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


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

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

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

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

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

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


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

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

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

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

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