101 вопрос, на которые должен ответить Python-разработчик

Аватарка пользователя ᴀɪᴏʙᴏʏ

Подборка из 101 вопроса для Python-разработчиков, на которые должен знать ответы любой специалист.

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. Что такое слайс(slice)?

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

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

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

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

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

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

>>> -30 % 10

31. Для чего нужен метод id()?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>> [0, 1][10:]

47. Как создать класс без слова class?

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

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

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

>>> len(' '.join(list(map(str, [[0], [1]]))))

51. Python — легкий язык. Согласны?

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

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

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

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

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

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

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

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

			import sys
arr_1 = []
arr_2 = arr_1
print(sys.getrefcount(arr_1))
		

60. Что такое GIL? Почему GIL всё ещё существует?

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

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

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

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

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

			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
		

66. Что такое интернирование строк? Почему это есть в python?

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

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

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

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

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

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

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

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

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

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

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

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

			def f_g():
   yield 43
   return 66

print(f_g())
		

79. Как имплементировать словарь с нуля?

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

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

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

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

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

			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)
		

85. Какие переменные среды, влияющие на поведение интерпретатора python, вы знаете?

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

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

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

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

>>> print(_)

90. Чем фреймворк отличается от библиотеки?

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

			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)]
		

92. Произошла утечка памяти в рабочем приложении. Как бы вы начали отладку?

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

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

			if __debug__:
   assert False, ("error")
		

95. Что такое магические методы(dunder)?

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

			_MangledGlobal__mangled = "^_^"

class MangledGlobal:

   def test(self):
       return __mangled

assert MangledGlobal().test() == "^_^"
		

97. Что такое monkey patching? Приведите пример использования.

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

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

			<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>
		

100. Какие новые функции добавлены в python 3.10?

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

Нашли ответы на все вопросы?
Да, с лёгкостью
Нет, некоторые вопросы оказались непростыми
Языки программирования
Python
23482