Продолжаем публиковать вопросы, которые часто задают на собеседованиях по Python. В этой части рассмотрим задачи посложнее, для программистов уровня Middle. Вопросы других уровней можно посмотреть по ссылкам:
- Python: вопросы собеседования. Часть I. Junior
- Python: вопросы собеседования. Часть II. Middle
- Python: вопросы собеседования. Часть III. Senior
Вопросы
- Какой будет результат операции
-12 % 10
? - Какой будет результат операции
-12 // 10
? - Какая последовательность вызова операторов в выражении
a * b * c
? - Почему нельзя сделать пустой список аргументом по умолчанию?
- Что делает функция
id()
? - Для чего зарезервировано ключевое слово
yield
? - Что такое итераторы в Python?
- Что такое генераторы в Python? Чем они отличаются от итераторов?
- В чем разница между
__iter__
и__next__
? - Как вы создадите словарь, который может сохранять порядок элементов (пар ключ-значение)?
- Что такое контекстный менеджер в Python? Чем он отличается от конструкции
try ... finally
? - Какие функции нужно переопределить в классе А, чтобы экземпляры этого класса могли реализовать протокол контекстного менеджера?
- Что такое синхронный код? А асинхронный? Как написать асинхронное приложение?
- Что такое
unittest
в Python? - Что такое проверка типов? Какие есть типы в Python?
- Как осуществляется управление памятью в Python?
- Как в Python работает сборщик мусора? Опишите вкратце его деятельность.
- Как можно расширить зону видимости глобальных переменных на другие модули?
- Что такое атрибут
__slots__
? - Что такое метаклассы в Python?
- Как создать класс без инструкции
class
?
Вопросы с кодом
- Каким будет результат выполнения данного кода?
list = ['a', 'b', 'c', 'd', 'e'] print list[10:] # []
- Как мне перезагрузить уже импортированный модуль? (Предполагается, что модуль это отдельный файл).
- Каким будет результат выполнения данного кода?
a = [[]]*3 a[1].append(1) print(a) # [[1], [1], [1]]
- Что не так в этом коде?
def foo(): from .module import * print(f"{bar()}")
- Файл с программой на языке Python находится здесь:
/usr/lib/python/person.py
. Он запускается следующим образом:python /usr/lib/python/person.py
. Что получится в результате? Код программы ниже:
class Person: def __init__(self, name): __name__ = name def getAge(self): print(__name__) p = Person("John") p.getAge()
- Напишите декоратор
timeit
для измерения времени работы функции. - Напишите настраиваемый декоратор
repeater
, который будет перехватывать повторяющиеся ошибки. - Какой будет результат выполнения данного кода?
class parent: def __init__(self, param): self.v1 = param class child: def __init__(self, param): self.v2 = param obj = child(11) print(obj.v1 + " " + obj.v2)
- Добавьте код, чтобы программа ниже заработала.
class Repeater: ... class RepeaterIterator: ... repeater = Repeater("Hello") for i in repeater: print(i) # hello
- Напишите программу для получения списка с уникальными элементами из списка с различными типами данных.
- У нас есть следующий код с неизвестной функцией
f()
. Мы не хотим использовать в функцииf()
return
, а хотим, чтобы она была генератором.
for x in f(5): print x
- Результат выполнения данного кода следующий:
0 1 8 27 64
. Напишите функциюf()
, в результате работы которой будет получаться такой результат. - Каким будет результат выполнения данного кода?
x = [[0], [1]] print(len(' '.join(list(map(str, x)))))
- Напишите программу, которая выводит на экран числа от 1 до 20. Но для чисел, кратных трем, вместо числа надо вывести “Fizz”, а для чисел, кратных пяти, — “Buzz”. Если число кратно и трем, и пяти, то нужно вывести на экран “FizzBuzz”.
- Каким будет результат выполнения данного кода? Что здесь не так и как это можно исправить?
class Developer: coffee_cups = 0 def __init__(self, name): self.name = name self.coffee_cups += 1 def speak(self): print(f"I'm {self.name} and I've had {self.coffee_cups} cups of coffee today") rover = Developer("Steve") spot = Developer("Bob")
Предыдущая статья: Python: вопросы собеседования. Часть I. Junior
Следующая статья: Python: вопросы собеседования. Часть III. Senior