Python. Вопросы собеседований 81 - 90
Вопросы 👉 1 - 10
Вопросы 👉 11 - 20
Вопросы 👉 21 - 30
Вопросы 👉 31 - 40
Вопросы 👉 41 - 50
Вопросы 👉 51 - 60
Вопросы 👉 61 - 70
Вопросы 👉 71 - 80
Вопросы
Вопрос 81. Как можно сконкатенировать (объединить) два списка в Python?
A. Используя оператор *
B. Используя оператор +
C. Используя метод append()
D. Используя метод concat()
Вопрос 82. Какой будет результат выполнения следующего кода?
A. 1
B. 5
C. 120
D. Вызовет ошибку переполнения стека.
Вопрос 83. Что произойдет, если не указать тип исключения в блоке except конструкции try-except в Python?
A. Блок except пропустит все исключения.
B. Блок except перехватит все исключения, независимо от их типа.
C. Программа немедленно завершится с ошибкой.
D. Блок except обработает только исключения типа Exception.
Вопрос 84. Какой результат будет получен при выполнении следующего кода Python?
A. True True True True
B. True False True False
C. False True False True
D. True True False True
Вопрос 85. Что делает ключевое слово continue в цикле?
A. Немедленно выходит из цикла.
B. Пропускает оставшуюся часть кода внутри цикла для текущей итерации.
C. Приостанавливает выполнение цикла.
D. Ничего из вышеперечисленного.
Вопрос 86. Как создать множество (set) в Python?
A. set = {1, 2, 3}
B. set = [1, 2, 3]
C. set = (1, 2, 3)
D. set = '123'
Вопрос 87. Что делает функция dict() в Python?
A. Создает новый словарь.
B. Преобразует кортеж в словарь.
C. Преобразует список кортежей в словарь.
D. Оба варианта A и C верны.
Вопрос 88. Каково назначение блока else в инструкции try...except?
A. Выполнить код после блока try, если не было выброшено ни одного исключения.
B. Обработать исключение, если блок except не смог его обработать.
C. Всегда выполняться после блока try, независимо от того, было ли выброшено исключение или нет.
D. Проверить дополнительное условие после блоков try и except.
Вопрос 89. Что такое "магические методы" (magic methods) в Python и для чего они нужны?
A. Это методы, которые вызываются только в особых ситуациях, например, при обработке исключений.
B. Это методы, которые могут изменять внутреннее состояние объектов, но не видны при вызове.
C. Это методы, имена которых начинаются и заканчиваются двойным подчеркиванием, и которые вызываются неявно встроенными функциями или синтаксическими конструкциями.
D. Это методы, которые используются для отладки программ и вывода информации о переменных.
Вопрос 90. В чем разница между == и is в Python?
A. == проверяет равенство по значению, тогда как is проверяет равенство в области памяти.
B. == проверяет, указывают ли переменные на один и тот же объект, тогда как is проверяет равенство значения.
C. == используется для строк, а is — для чисел.
D. Разницы нет; оба используются взаимозаменяемо.
Ответы
81. Правильный ответ: B. Используя оператор +
Объяснение:
В Python для объединения двух списков в один новый список используется оператор +. Этот оператор создает новый список, содержащий все элементы первого списка, за которыми следуют все элементы второго списка.
Оператор +:
Создает новый список, который является результатом объединения двух исходных списков.
Исходные списки не изменяются.
Разбор вариантов:
Используя оператор *: Неправильно. Оператор * используется для повторения списка определенное количество раз.
Используя оператор +: Правильно. Оператор + используется для конкатенации (объединения) списков.
Используя метод append(): Неправильно. Метод append() добавляет один элемент в конец существующего списка, а не объединяет два списка.
Используя метод concat(): Неправильно. В Python нет встроенного метода concat() для списков.
Пример конкатенации списков с оператором +:
В результате:
Оператор + является наиболее простым и распространенным способом объединения списков в Python.
Исходные списки не изменяются, а создается новый список, который содержит все элементы двух исходных списков.
Конкатенация списков через + может быть менее эффективной для больших списков.
Таким образом, правильным ответом является Используя оператор +.
82. Правильный ответ: C
Объяснение:
Данный код реализует рекурсивную функцию для вычисления факториала числа. Функция my_function(n) возвращает n! (факториал n).
Базовый случай: Если n равно 0, функция возвращает 1 (факториал 0 равен 1).
Рекурсивный случай: Если n больше 0, функция возвращает n умноженное на результат вызова самой себя с n-1.
Таким образом, вызов my_function(5) будет выполнен следующим образом:
my_function(5) = 5 * my_function(4)
my_function(4) = 4 * my_function(3)
my_function(3) = 3 * my_function(2)
my_function(2) = 2 * my_function(1)
my_function(1) = 1 * my_function(0)
my_function(0) = 1
Подставляя значения снизу вверх, получаем:
1 * 1 * 2 * 3 * 4 * 5 = 120
Следовательно, результат вызова print(my_function(5)) будет 120.
Дополнительные замечания:
Рекурсивные функции должны иметь условие выхода из рекурсии, чтобы избежать бесконечного вызова функций и ошибки переполнения стека.
Данная рекурсивная реализация факториала вполне подходит для небольших чисел, но для очень больших чисел может быть менее эффективна, чем итеративная реализация. Вот пример итеративной реализации факториала:
83. Правильный ответ: B
Объяснение:
Если вы не укажете тип исключения в блоке except, то он будет действовать как обработчик для всех исключений, которые могут возникнуть в блоке try. Это может быть полезно для отлова любых непредвиденных ошибок, но в некоторых ситуациях это может помешать в точной отладке кода, поскольку будет трудно определить тип произошедшей ошибки.
Вариант A не верен: Блок except не пропускает исключения.
Вариант B верен: Блок except без указания типа перехватывает любое исключение.
Вариант C не верен: Программа не завершится при перехвате исключения.
Вариант D не верен: Исключения класса Exception обрабатываются только, если они указаны явно.
Пример:
В результате:
В первом примере блок except перехватывает исключение ZeroDivisionError.
Во втором примере, первое except перехватывает ValueError, а второе except не будет выполняться, так как исключение уже было обработано.
Таким образом, вариант B является правильным.
84. Правильный ответ: D
Объяснение:
Код проверяет, являются ли два слова анаграммами (состоят из одних и тех же букв, но в разном порядке).
Функция anagram(word1, word2):
Преобразует оба слова в нижний регистр (lower()).
Сортирует буквы каждого слова (sorted()).
Если отсортированные буквы одинаковы, возвращает True (слова - анаграммы), иначе False.
Результаты вызовов:
"cinema" и "iceman": Анаграммы. sorted("cinema") == sorted("iceman") -> True
"cool" и "loco": Анаграммы. sorted("cool") == sorted("loco") -> True
"men" и "women": Не анаграммы. sorted("men") != sorted("women") -> False
"python" и "pythno": Анаграммы. sorted("python") == sorted("pythno") -> True
Таким образом, вывод программы: True True False True.
85. Правильный ответ: B
Объяснение:
Ключевое слово continue в Python используется внутри циклов (например, for и while) для пропуска оставшейся части текущей итерации и перехода к следующей итерации цикла.
Вариант A не верен: continue не прерывает цикл, а только текущую итерацию. Для прерывания цикла используется break.
Вариант B верен: continue пропускает оставшийся код в текущей итерации и переходит к следующей.
Вариант C не верен: continue не приостанавливает выполнение цикла.
Вариант D не верен: Вариант B верен.
Как работает continue:
Когда интерпретатор Python встречает continue внутри цикла, он пропускает все оставшиеся операторы текущей итерации.
Выполнение программы переходит к следующей итерации цикла, то есть условие в while или следующему элементу в for цикле.
Пропуск итерации происходит только для текущей итерации, остальные итерации цикла работают как обычно.
Типичные примеры использования:
Пропуск определенной итерации: Когда нужно пропустить определенные итерации, основываясь на каком-то условии.
Фильтрация данных: Когда нужно пропустить некоторые элементы в итерируемой структуре.
Пример:
В результате:
В цикле for выводятся только нечетные числа, так как continue пропускает итерацию для четных чисел.
В цикле while выводятся все числа, кроме тех что делятся на 3.
Таким образом, вариант B является правильным.
86. Правильный ответ: A
Объяснение:
В Python множество (set) создается с использованием фигурных скобок {}, в которые помещаются уникальные, хешируемые элементы.
Вариант A верен: set = {1, 2, 3} - это корректный способ создания множества.
Вариант B не верен: set = [1, 2, 3] - создает список (list), а не множество.
Вариант C не верен: set = (1, 2, 3) - создает кортеж (tuple), а не множество.
Вариант D не верен: set = '123' - создает строку (str), а не множество.
Ключевые характеристики множества (set):
Уникальность элементов: Множество содержит только уникальные элементы, дубликаты автоматически удаляются.
Неупорядоченность: Элементы в множестве не хранятся в каком-либо определенном порядке.
Мутабельность: Множества являются изменяемыми, что позволяет добавлять и удалять элементы после создания множества.
Пример:
В результате:
my_set = {1, 2, 3} создает множество, содержащее целые числа 1, 2 и 3.
При создании множества my_set_dupl дубликаты автоматически удаляются.
Таким образом, вариант A является верным ответом.
87. Правильный ответ: D
Объяснение:
Функция dict() в Python используется для создания словаря. Она может принимать разные типы аргументов для этого.
Вариант A верен: dict() может быть вызвана без аргументов и создаст пустой словарь.
Вариант B не верен: Функция dict() не преобразует кортеж в словарь. Кортеж должен содержать пары ключ значение, чтобы был создан словарь.
Вариант C верен: dict() может преобразовать список кортежей, где каждый кортеж представляет собой пару ключ-значение, в словарь.
Вариант D верен: Так как и A, и C верны.
Как работает dict():
Без аргументов: Если dict() вызывается без аргументов, он создает пустой словарь.
С аргументами:
Если dict() вызывается с одним аргументом — списком кортежей, где каждый кортеж состоит из двух элементов (ключа и значения) то он создаст словарь из этих пар ключ-значение.
Можно передать и другие аргументы (именованные аргументы), которые станут ключами и значениями.
Примеры:
В результате:
dict() без аргументов создает пустой словарь.
dict(my_list) создает словарь из списка кортежей.
dict(a=1, b=2, c=3) создает словарь с ключами "a","b","c" и соответсвующими значениями.
Таким образом, вариант D является верным.
88. Правильный ответ: A
Объяснение:
В Python блок else в конструкции try...except выполняется только в том случае, если блок try выполнился без возникновения исключений.
Вариант A верен: else выполняется, если блок try завершился успешно без исключений.
Вариант B не верен: Если except не может обработать исключение, программа аварийно завершится. else не предназначен для обработки исключений, которые не поймал except.
Вариант C не верен: Для действий, которые выполняются всегда, независимо от наличия исключений, используется блок finally, а не else.
Вариант D не верен: Блок else не проверяет дополнительные условия, он просто выполняется при успешном выполнении блока try.
Как работает try...except...else:
Сначала выполняется код в блоке try.
Если в блоке try возникает исключение, то управление переходит в блок except (если есть соответствующий тип исключения) или далее по цепочке.
Если в блоке try не возникает исключения, то выполняется блок else, который расположен после всех блоков except.
Блок finally выполняется всегда вне зависимости от того, было ли исключение или нет.
Пример:
В результате:
При вызове process_number(2) ошибок нет и выполняется блок else, выводя "Результат деления: 5.0".
При вызове process_number(0) происходит ZeroDivisionError и код переходит в блок except, выводя "Ошибка: деление на ноль" и не выполняя блок else.
Таким образом, вариант A является верным.
89. Правильный ответ: C
Объяснение:
"Магические методы" (также известные как "dunder methods" от "double underscore") в Python - это специальные методы, которые имеют предопределенные имена, начинающиеся и заканчивающиеся двумя подчеркиваниями (например, __init__, __len__, __add__). Они используются для определения поведения объектов при применении к ним встроенных функций, операторов или синтаксических конструкций.
Определение:
Магические методы имеют имена вида __имя__.
Они не вызываются напрямую (обычно), а вызываются автоматически при выполнении определённых операций.
Назначение:
Позволяют объектам вести себя как встроенные типы данных.
Позволяют переопределять поведение операторов и функций для пользовательских типов.
Реализуют поддержку протоколов и концепций Python, таких как итерация, сложение, сравнение, строковое представление и т.д.
Примеры:
__init__(self, ...): Вызывается при создании нового объекта (конструктор).
__len__(self): Вызывается функцией len().
__add__(self, other): Вызывается оператором сложения +.
__str__(self): Вызывается функцией str() или при использовании print().
__repr__(self): Вызывается функцией repr().
__iter__(self) и __next__(self): Используются для реализации итераторов.
__getitem__(self, key): Вызывается при доступе к элементу по индексу obj[key].
Разбор вариантов:
A. Это методы, которые вызываются только в особых ситуациях, например, при обработке исключений: Неправильно. Хотя некоторые магические методы связаны с исключениями (__enter__, __exit__), их основное применение шире.
B. Это методы, которые могут изменять внутреннее состояние объектов, но не видны при вызове: Неправильно. Магические методы не только могут изменять состояние, но и вызываются неявно, а не скрыты.
C. Это методы, имена которых начинаются и заканчиваются двойным подчеркиванием, и которые вызываются неявно встроенными функциями или синтаксическими конструкциями: Правильно. Это точное определение магических методов.
D. Это методы, которые используются для отладки программ и вывода информации о переменных: Неправильно. Хотя __str__ и __repr__ могут использоваться для вывода информации, это не их основное назначение.
В результате:
Магические методы позволяют создавать гибкие и выразительные классы, которые могут взаимодействовать с Python как встроенные типы.
Они лежат в основе многих возможностей Python, позволяя переопределять поведение объектов для различных операций.
Таким образом, правильным ответом является C. Это методы, имена которых начинаются и заканчиваются двойным подчеркиванием, и которые вызываются неявно встроенными функциями или синтаксическими конструкциями.
90. Правильный ответ: A
Объяснение:
В Python операторы == и is используются для сравнения, но они делают это по-разному:
== (равно): Этот оператор сравнивает значения объектов. Он возвращает True, если значения объектов равны, и False в противном случае.
is (является): Этот оператор сравнивает идентичность объектов. Он возвращает True, если обе переменные указывают на один и тот же объект в памяти, и False в противном случае.
Вариант A верен: == проверяет равенство значений, а is проверяет идентичность (указывают ли переменные на один и тот же объект в памяти).
Вариант B не верен: Наоборот, == проверяет равенство значений, а is проверяет идентичность.
Вариант C не верен: == и is используются для любого типа данных.
Вариант D не верен: == и is не взаимозаменяемы, у них разное назначение.
Подробное объяснение:
==: Сравнивает значения объектов, используя метод __eq__(), который может быть переопределен для пользовательских классов.
is: Сравнивает идентификаторы объектов, то есть адреса памяти. Если две переменные ссылаются на один и тот же объект в памяти, то is вернет True.
Пример:
В результате:
a и b содержат списки с одинаковыми значениями, поэтому a == b дает True, но это два разных объекта в памяти, поэтому a is b дает False.
a и c ссылаются на один и тот же объект, поэтому a is c возвращает True
Для небольших чисел Python может создавать одинаковые объекты в памяти, для оптимизации работы, поэтому для num3 и num4 оператор is вернул True.
Таким образом, вариант A является правильным.
Удачи!