101 вопрос Python-разработчику
Tags: python, questions, development, interview
Published: 2023-04-01 21:23:36


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) Каким будет результат следующего выражения?
```python
>>> -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) Каким будет результат следующего выражения?
```python
>>> [0, 1][10:]
```
47) Как создать класс без слова class?
48) Как перезагрузить импортированный модуль?
49) Напишите декоратор, который будет перехватывать ошибки и повторять функцию максимум N раз.
50) Каким будет результат следующего выражения?
```python
>>> 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) Что будет напечатано в результате выполнения следующего кода?
```python
import sys
arr_1 = []
arr_2 = arr_1
print(sys.getrefcount(arr_1))
```
60) Что такое GIL? Почему GIL всё ещё существует?
61) Опишите процесс компиляции в python.
62) Как тиражировать python код?
63) Что такое дескрипторы? Есть ли разница между дескриптором и декоратором?
64) Почему всякий раз, когда python завершает работу, не освобождается вся память?
65) Что будет напечатано в результате выполнения следующего кода?
```python
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) Что будет напечатано в результате выполнения следующего кода?
```python
def f_g():
   yield 43
   return 66

print(f_g())
```
79) Как имплементировать словарь с нуля?
80) Напишите однострочник, который будет подсчитывать количество заглавных букв в файле.
81) Что такое файлы .pth? 
82) Какие функции из collections и itertools вы используете?
83) Что делает флаг PYTHONOPTIMIZE?
84) Что будет напечатано в результате выполнения следующего кода?
```python
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) Что будет напечатано в результате выполнения кода?
```python
>>> print(_)
```
90) Чем фреймворк отличается от библиотеки?
91) Расположите функции в порядке эффективности, объясните выбор.
```python
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) Что не так с этим кодом? Зачем это нужно?
```python
if __debug__:
   assert False, ("error")
```
95) Что такое магические методы(dunder)?
96) Объясните, почему такое возможно?
```python
_MangledGlobal__mangled = "^_^"

class MangledGlobal:

   def test(self):
       return __mangled

assert MangledGlobal().test() == "^_^"
```
97) Что такое monkey patching? Приведите пример использования.
98)  Как работать с транзитивными зависимостями?
99) Что будет напечатано в окне браузера?
```html
<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)?