Продолжаем публиковать вопросы, которые часто задают на собеседованиях по 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

