1. Что такое python?

  2. В каком году написана первая статья про python?

  3. Какие типы данных есть в python? На какие классы делятся?

  4. Что такое лямбда-функция? Какое у неё назначение?

  5. Что такое PEP 8?

  6. Как получить документацию по атрибутам объекта?

  7. Что такое docstring?

  8. В чём разница между типами list и tuple?

  9. Может ли быть индекс списка отрицательным?

  10. Что значит конструкция pass?

  11. Чем отличаются многопоточное и многопроцессорное приложение?

  12. Как просмотреть методы объекта?

  13. Что такое *args и **kwargs в определении функции?

  14. Python полностью поддерживает ООП?

  15. Что такое globals() и locals()?

  16. Что хранится в атрибуте __dict__?

  17. Как проверить файл .py на синтаксические ошибки, не запуская его?

  18. Зачем в python используется ключевое слово self?

  19. Что такое декоратор? Как написать собственный?

  20. Что может быть ключом в словаре?

  21. В чём разница между пакетами и модулями?

  22. Как перевести строку, содержащую двоичный код (1 и 0), в число?

  23. Для чего используется функция __init__?

  24. Что такое слайс?

  25. Как проверить, что один кортеж содержит все элементы другого кортежа?

  26. Почему пустой список нельзя использовать как аргумент по умолчанию?

  27. Что такое @classmethod, @staticmethod, @property?

  28. Что такое синхронный код?

  29. Что такое асинхронный код? Приведите пример.

  30. Каким будет результат следующего выражения?

>>> -30 % 10
  1. Для чего нужен метод id()?

  2. Что такое итератор?

  3. Что такое генератор? Чем отличается от итератора?

  4. Для чего используется ключевое слово yield?

  5. Чем отличаются __iter__ и __next__?

  6. Что такое контекстный менеджер?

  7. Как сделать python-скрипт исполняемым в различных операционных системах?

  8. Как сделать копию объекта? Как сделать глубокую копию объекта?

  9. Опишите принцип работы сборщика мусора в python.

  10. Как использовать глобальные переменные? Это хорошая идея?

  11. Для чего в классе используется атрибут __slots__?

  12. Какие пространства имен существуют в python?

  13. Как реализуется управление памятью в python?

  14. Что такое метаклассы и в каких случаях их следует использовать?

  15. Зачем нужен pdb?

  16. Каким будет результат следующего выражения?

>>> [0, 1][10:]
  1. Как создать класс без слова class?

  2. Как перезагрузить импортированный модуль?

  3. Напишите декоратор, который будет перехватывать ошибки и повторять функцию максимум N раз.

  4. Каким будет результат следующего выражения?

>>> len(' '.join(list(map(str, [[0], [1]]))))
  1. Python — легкий язык. Согласны?

  2. Какие проблемы есть в python?

  3. Когда будет выполнена ветка else в конструкции try...except...else?

  4. Поддерживает ли python множественное наследование?

  5. Как dict и set реализованы внутри? Какова сложность получения элемента? Сколько памяти потребляет каждая структура?

  6. Что такое MRO? Как это работает?

  7. Как аргументы передаются в функции: по значению или по ссылке?

  8. С помощью каких инструментов можно выполнить статический анализ кода?

  9. Что будет напечатано в результате выполнения следующего кода?

import sys
arr_1 = []
arr_2 = arr_1
print(sys.getrefcount(arr_1))
  1. Что такое GIL? Почему GIL всё ещё существует?

  2. Опишите процесс компиляции в python.

  3. Как тиражировать python код?

  4. Что такое дескрипторы? Есть ли разница между дескриптором и декоратором?

  5. Почему всякий раз, когда python завершает работу, не освобождается вся память?

  6. Что будет напечатано в результате выполнения следующего кода?

class Variable:

   def __init__(self, name, value):
      self._name = name
      self._value = value

   @property
   def value(self):
      print(self._name, 'GET', self._value)
      return self._value

   @value.setter
   def value(self, value):
      print(self._name, 'SET', self._value)
      self._value = value

var_1 = Variable('var_1', 'val_1')
var_2 = Variable('var_2', 'val_2')
var_1.value, var_2.value = var_2.value, var_1.value
  1. Что такое интернирование строк? Почему это есть в python?

  2. Как упаковать бинарные зависимости?

  3. Почему в python нет оптимизации хвостовой рекурсии? Как это реализовать?

  4. Что такое wheels и eggs? В чём разница?

  5. Как получить доступ к модулю, написанному на python из C и наоборот?

  6. Как ускорить существующий код python?

  7. Что такое __pycache__? Что такое файлы .pyc?

  8. Что такое виртуальное окружение?

  9. Python — это императивный или декларативный язык?

  10. Что такое менеджер пакетов? Какие менеджеры пакетов вы знаете?

  11. В чём преимущества массивов numpy по сравнению с (вложенными) списками python?

  12. Вам нужно реализовать функцию, которая должна использовать статическую переменную. Вы не можете писать код вне функции и у вас нет информации о внешних переменных (вне вашей функции). Как это сделать?

  13. Что будет напечатано в результате выполнения следующего кода?

def f_g():
   yield 43
   return 66

print(f_g())
  1. Как имплементировать словарь с нуля?

  2. Напишите однострочник, который будет подсчитывать количество заглавных букв в файле.

  3. Что такое файлы .pth?

  4. Какие функции из collections и itertools вы используете?

  5. Что делает флаг PYTHONOPTIMIZE?

  6. Что будет напечатано в результате выполнения следующего кода?

arr = [[]] * 5
arr_1, arr_2 = arr, arr
for k, arr in enumerate((arr_1, arr_2)):
   arr[0].append(k)
arr = (arr_1, 5, arr_2)
print(arr)
  1. Какие переменные среды, влияющие на поведение интерпретатора python, вы знаете?

  2. Что такое Cython? Что такое IronPython? Что такое PyPy? Почему они до сих пор существуют и зачем?

  3. Как перевернуть генератор?

  4. Приведите пример использования filter и reduce над итерируемым объектом.

  5. Что будет напечатано в результате выполнения кода?

>>> print(_)
  1. Чем фреймворк отличается от библиотеки?

  2. Расположите функции в порядке эффективности, объясните выбор.

def f1(arr):
   l1 = sorted(arr)
   l2 = [i for i in l1 if i < .5]
   return [i * i for i in l2]

def f2(arr):
   l1 = [i for i in arr if i < .5]
   l2 = sorted(l1)
   return [i * i for i in l2]

def f3(arr):
   l1 = [i * i for i in arr]
   l2 = sorted(l1)
   return [i for i in l1 if i < (.5 * .5)]
  1. Произошла утечка памяти в рабочем приложении. Как бы вы начали отладку?

  2. В каких ситуациях возникает исключение NotImplementedError?

  3. Что не так с этим кодом? Зачем это нужно?

if __debug__:
   assert False, ("error")
  1. Что такое магические методы?

  2. Объясните, почему такое возможно?

_MangledGlobal__mangled = "^_^"

class MangledGlobal:

   def test(self):
       return __mangled

assert MangledGlobal().test() == "^_^"
  1. Что такое monkey patching? Приведите пример использования.

  2. Как работать с транзитивными зависимостями?

  3. Что будет напечатано в окне браузера?

<html>
   <link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
   <script defer src="https://pyscript.net/alpha/pyscript.js"></script>
   <body>
      <py-script>
         print(__name__)
         print(__file__)
      </py-script>
   </body>
</html>
  1. Какие новые функции добавлены в python 3.10?

  2. Почему иногда python так долго запускается (в Windows)?