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. Каков вывод следующего фрагмента кода?
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?
Что будет содержать 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 не верен: Оператор * создает новый список, а не указатель.
Как работает * со списками:
Оператор * берет список (левый операнд).
Он повторяет его содержимое указанное число раз (правый операнд).
Возвращает новый список.
Пример:
В результате:
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 верны.
Как это работает:
str(): Функция str() принимает на вход любой объект и преобразует его в строковое представление.
Цикл: В цикле, поочередно каждый элемент списка может быть преобразован в строку.
map(): Функция map() принимает функцию и итерируемый объект (список) и применяет эту функцию к каждому элементу списка.
Списковое включение: Также можно использовать списковое включение с преобразованием типов.
Примеры:
В результате:
Все три способа (цикл, map() и списковое включение) приведут к созданию списка строк.
Конкатенация с пустой строкой работает, но выглядит менее читаемо.
Таким образом, вариант D является верным, поскольку и вариант A, и вариант B являются правильными способами преобразования списка целых чисел в список строк.
93, Правильный ответ: B
Объяснение:
Идентификаторы в Python — это имена, используемые для обозначения переменных, функций, классов и других объектов. Существуют определенные правила для создания допустимых идентификаторов.
Вариант A верен: _myvar является допустимым идентификатором. Он начинается с подчеркивания, за которым следуют буквы.
Вариант B не верен: 2myvar является недопустимым идентификатором. Он начинается с цифры.
Вариант C верен: my_var является допустимым идентификатором. Он начинается с буквы и содержит буквы и подчеркивания.
Вариант D верен: myVar является допустимым идентификатором. Он начинается с буквы и может содержать буквы в разных регистрах.
Правила для идентификаторов Python:
Начинаются с буквы или подчеркивания: Идентификаторы должны начинаться с буквы (a-z, A-Z) или подчеркивания _.
Содержат буквы, цифры или подчеркивания: После первого символа идентификаторы могут содержать буквы, цифры (0-9) и подчеркивания.
Регистрозависимые: myVar, MyVar и MYVAR будут разными идентификаторами.
Не могут быть ключевыми словами: Нельзя использовать ключевые слова Python (например, if, else, for, while, def, class и т. д.) в качестве идентификаторов.
Пример:
В результате:
_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():
Метод join() вызывается у объекта строки (разделителя).
Он принимает итерируемый объект (список, кортеж, множество) в качестве аргумента.
Он объединяет все элементы итерируемого объекта в одну строку, используя строку, у которой вызывался метод, в качестве разделителя.
Пример:
В результате:
''.join(x) объединяет элементы списка x в одну строку без пробелов.
' '.join(x) объединяет элементы списка x в одну строку с пробелами между элементами.
Таким образом, вариант A является правильным.
95, Правильный ответ: B
Объяснение:
Python использует автоматическое управление памятью для большинства случаев. Это означает, что разработчикам не нужно явно выделять и освобождать память.
Вариант A не верен: Python не использует ручное управление памятью, как, например, язык C.
Вариант B верен: Python использует частную кучу, которая содержит все объекты Python и структуры данных.
Вариант C не верен: Python не передаёт управление памятью целиком операционной системе.
Вариант D не верен: Python не использует модель распределения памяти стека.
Механизмы управления памятью в Python:
Частная куча (private heap): Python использует частную область памяти, где хранятся все объекты Python и структуры данных. Разработчики не имеют прямого доступа к этой памяти.
Автоматическая сборка мусора (automatic garbage collection): Python использует сборщик мусора для обнаружения и освобождения памяти, которая больше не используется. Сборщик мусора работает в автоматическом режиме.
Подсчет ссылок (reference counting): Python отслеживает количество ссылок на каждый объект в памяти. Когда количество ссылок достигает 0, объект удаляется из памяти.
Управление через менеджер памяти Python: Распределением памяти занимается внутренний менеджер памяти, который эффективно управляет выделением и освобождением памяти.
Пример:
В результате:
При создании 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:
Менеджер контекста: Оператор with работает с объектами, которые реализуют протокол менеджера контекста (методы __enter__ и __exit__).
Управление ресурсами: Когда выполняется блок кода с with, вызывается метод __enter__ объекта, который подготавливает ресурс к использованию. После завершения блока кода (даже если возникло исключение), вызывается метод __exit__, который освобождает ресурс.
Основные применения with:
Файлы: Гарантирует, что файл будет закрыт после его использования, даже если произойдет ошибка.
Соединения с базами данных: Автоматическое закрытие соединений.
Блокировки потоков: Управление блокировками в многопоточном коде.
Пример:
В результате:
Файл "my_file.txt" автоматически закрывается, как только выполнится код в блоке with, или возникнет исключение.
Таким образом, вариант B является правильным ответом.
97, Правильный ответ: B
Объяснение:
Ключевое слово yield в Python используется для определения генераторов. Генераторы — это особый вид функций, которые позволяют ленивую итерацию, то есть возвращают значения по одному, приостанавливая свое выполнение между вызовами.
Вариант A не верен: yield не завершает функцию, а приостанавливает ее выполнение.
Вариант B верен: yield возвращает значение и приостанавливает состояние функции.
Вариант C не верен: yield не предотвращает выполнение цикла.
Вариант D не верен: yield не пропускает итерации цикла.
Как работает yield:
Функция, содержащая yield, становится генератором.
При вызове генератора, он не выполняет код функции сразу, а возвращает итератор.
Когда метод __next__ вызывается на итераторе, генератор выполняет код до оператора yield.
После yield функция возвращает значение и приостанавливает свое состояние, сохраняя все локальные переменные.
При повторном вызове __next__ или когда запрашивается следующий элемент в цикле for, выполнение функции продолжается с места приостановки.
Преимущества yield:
Ленивая генерация: Значения создаются по мере необходимости, что позволяет экономить память.
Поддержка больших наборов данных: Генераторы идеально подходят для работы с большими объемами данных, которые могут не поместиться в памяти.
Потоковая обработка данных: Генераторы могут эффективно обрабатывать данные по мере их поступления.
Пример:
В результате: Функция 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.
Ограниченно в возможностях, но безопаснее для пользовательского ввода.
Пример:
В результате:
ast.literal_eval() безопасно преобразует строку в словарь.
eval() выполняет строку "10 + 20" и выдает результат 30.
Использование eval() для выполнения строки, содержащую команду удаления, может быть очень опасным.
Таким образом, вариант D является правильным.
99, Правильный ответ: C
Объяснение:
Декоратор @classmethod в Python используется для преобразования обычного метода класса в метод класса.
Вариант A не верен: Он преобразует метод в метод класса, а не в статический метод.
Вариант B не верен: Декораторы не влияют на возможность переопределения метода.
Вариант C верен: @classmethod позволяет вызывать метод непосредственно у класса, а не только через экземпляр.
Вариант D не верен: Декоратор не меняет видимость метода.
Ключевые свойства методов класса:
Связывание с классом: Метод класса связан с самим классом, а не с его экземплярами.
Аргумент cls: Метод класса автоматически получает ссылку на класс (conventionally named cls) в качестве первого аргумента, это отличие от обычных методов (self).
Доступ к атрибутам класса: Он может получать доступ к атрибутам класса и модифицировать их.
Вызов через класс или экземпляр: Метод класса можно вызывать как у самого класса ClassName.method(), так и у экземпляра instance.method().
Типичные применения методов класса:
Фабричные методы: Методы класса часто используются для создания альтернативных конструкторов, то есть для создания объектов класса разными способами.
Пример:
В результате:
Метод create_with_default_value вызывается через класс и возвращает новый экземпляр.
Метод instance_method выводится значение атрибута экземпляра и класса.
Класс метод modify_class_variable изменяет переменную класса.
Таким образом, вариант C является правильным.
Подпишись, чтобы не пропустить следующие вопросы из интервью разработчика на pythpn
Удачи!
Программирование на python
883 поста11.9K подписчика
Правила сообщества
Публиковать могут пользователи с любым рейтингом. Однако!
Приветствуется:
• уважение к читателям и авторам
• конструктивность комментариев
• простота и информативность повествования
• тег python2 или python3, если актуально
• код публиковать в виде цитаты, либо ссылкой на специализированный сайт
Не рекомендуется:
• допускать оскорбления и провокации
• распространять вредоносное ПО
• просить решить вашу полноценную задачу за вас
• нарушать правила Пикабу