Advertisement
Guest User

Untitled

a guest
Jun 13th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.59 KB | None | 0 0
  1. # Review questionnaires
  2.  
  3. > **TODO** добавить вопросы по
  4. >
  5. > * базам данных
  6. > * http протоколу
  7.  
  8.  
  9. ## SE1
  10.  
  11. * какими python framework'ми приходилось пользоваться
  12. * основные компоненты django /models, views, forms, middlewares, context processors etc./
  13. * как работают middleware в django
  14. * какие знаете методы оптимизации запросов в django
  15. * какие есть типы перечисляемых данных в python
  16. * mutable/immutable
  17. * чем отличаются list от tuple
  18. * для чего удобно использовать set
  19. * что такое декораторы, зачем нужны
  20. * `@property`/`@classmethod`/`@staticmethod` зачем нужны, в чем разница
  21. * что такое генераторы/итераторы, зачем нужны
  22. * для чего используется python пакет `copy`
  23. * какие "магические" методы вы знаете
  24. * написать код который поменяет ключи и значения местами в dict'е
  25. * для чего нужны функции map и filter
  26. * какие еще встроенные функции вы знаете
  27. * приходилось ли использовать Redis? какие задачи решали?
  28. * reverse a list [1, 2, 3, 4, 5, 6]
  29. > Answer:
  30. ```python
  31. ll[::-1]
  32. ```
  33.  
  34.  
  35. ## SE2
  36.  
  37. * приходилось ли работать с formset'ми, для чего они нужны и как их использовать
  38. * есть ли опыт написания кастомных field'ов модели, какие задачи выполняют field'ы
  39. * как узнать где должны располагать python пакеты
  40. * для чего используется конструкция `__name__ == '__main__'`
  41. * посчитать суму чисел заданых списком строк используя `map` и `reduce`
  42. * написать пример генератора
  43. * что выведет последння строка
  44. ```python
  45. d = {
  46. 'key1': 1,
  47. 'key2': {
  48. 'key21': 22,
  49. 'key22': 33,
  50. },
  51. }
  52. dcopy = copy.copy(d)
  53. dcopy['key1'] = 5
  54. dcopy['key2']['key21'] = 55
  55. print(d)
  56. ```
  57. * что такое контекст процессор, для чего он нужен, как написать свой
  58. ```python
  59. >>> c = cycle(['odd', 'even'])
  60. >>> c.next()
  61. odd
  62. >>> c.next()
  63. even
  64. >>> c.next()
  65. odd
  66. ```
  67. * написать mixin который добавит все переданные именованные аргументы в конструктор как атрибуты инстанса класса
  68. * какие вы знаете отличия между python 2 и 3. что делает приведенный ниже код в обоих версиях
  69. ```python
  70. rcpts = ['user1@email.com', 'user2@email.com', 'user3@email.com']
  71. map(send_notification, rcpts)
  72. ```
  73. * Чем отличается строка в Python 2.x и Python 3.x ? Что такое unicode и зачем он нужен?
  74. * структура моделей для отеля(комнаты и букинг, как проверить что комната свободна в определенный промежуток дат/времени)
  75. * AsyncIO
  76. * что из себя представляет? на что расчитано? за счет чего приемущество?
  77. * какой есть способ выполнения синхронного кода внутри AsyncIO
  78. * что такое generator "send"? Что выведет следующий блок кода?
  79. ```python
  80. def counter(maximum):
  81. i = 0
  82. while i < maximum:
  83. print('~~~~~~~~~~')
  84. val = (yield i*2)
  85. print("Val: {}".format(val))
  86. if val is not None:
  87. i = val
  88. else:
  89. i += 1
  90.  
  91. it = counter(9)
  92. print(it.__next__())
  93. print(it.__next__())
  94. print(it.send(8))
  95. print(it.__next__())
  96. ```
  97. * Для чего нужен ThreadPoolExecutor. Чем отличается ThreadPoolExecutor от ProcessPoolExecutor? Какой для чего используется и в чем плюсы/минусы каждого?
  98.  
  99.  
  100. * Local and Global variables: what will be the output of the following programs?
  101.  
  102. ```python
  103. x = 1
  104. def f():
  105. x = 2
  106. return x
  107. print x
  108. print f()
  109. print x
  110. ```
  111. > As x is defined inside f() method, it use local variable. The result will be 1,2,1
  112.  
  113. ```python
  114. x = 1
  115. def f():
  116. y = x
  117. x = 2
  118. return x + y
  119. print x
  120. print f()
  121. print x
  122. ```
  123. > Answer: As x is defined in f() method, but it is done after assigning it to y, we will have an error "local variable 'x' referenced before assignment"
  124.  
  125.  
  126. * Conditional expressions. What happens when the following code is executed? Will it give any error? Explain the reasons.
  127. ```python
  128. x = 2
  129. if x == 2:
  130. print x
  131. else:
  132. print y
  133. ```
  134.  
  135. > No, it will not, because the first block will be executed, and it will not be found that y isn’t assigned
  136.  
  137. ```python
  138. x = 2
  139. if x == 2:
  140. print x
  141. else:
  142. x +
  143. ```
  144. > Answer: There will be an error «SyntaxError: invalid syntax» because it will be found on compile phase
  145.  
  146. * Write iterator that reverses passed list:
  147.  
  148. ```python
  149. >>> it = reverse_iter([1, 2, 3, 4])
  150. >>> it.next()
  151. 4
  152. >>> it.next()
  153. 3
  154. >>> it.next()
  155. 2
  156. >>> it.next()
  157. 1
  158. >>> it.next()
  159. Traceback (most recent call last):
  160. File "<stdin>", line 1, in <module>
  161. StopIteration
  162. ```
  163.  
  164. > Answer:
  165. ```python
  166. class reverse_iter:
  167. def __init__(self, iterable_obj):
  168. self.i = len(iterable_obj) - 1
  169. self.iterable_obj = iterable_obj
  170. def __iter__(self):
  171. return self
  172. def next(self):
  173. if self.i > 0:
  174. i = self.i
  175. self.i -= 1
  176. return self.iterable_obj[i]
  177. else:
  178. raise StopIteration()
  179. ```
  180.  
  181. * Write generator that reverses list
  182. > Answer:
  183. ```python
  184. def reverse_generator(iterable_obj):
  185. for x in iterable_obj[::-1]:
  186. yield x
  187. ```
  188.  
  189.  
  190. ## SE3
  191.  
  192. * написать класс, который бы по всем внешним признакам был бы словарем, но позволял обращаться к ключам как к атрибутам
  193. * написать функцию-фабрику возвращающую функцию суммирования передаваемых аргументов
  194. ```python
  195. >>> add1 = addition(1)
  196. >>> add1(2)
  197. 3
  198. >>> add1(5)
  199. 8
  200. ```
  201. * Local, Global and Nonlocal (introduced in python3) variables: what will be the output of the following programs?
  202.  
  203. ```python
  204. def f():
  205. x = 42
  206. def g():
  207. nonlocal x
  208. x = 43
  209. print("Before calling g: " + str(x))
  210. print("Calling g now:")
  211. g()
  212. print("After calling g: " + str(x))
  213. x = 3
  214. f()
  215. print("x in main: " + str(x))
  216. ```
  217. > Answer:
  218. Before calling g: 42
  219. Calling g now:
  220. After calling g: 43
  221. x in main: 3
  222.  
  223. * AsyncIO
  224. * в чем разница между двумя примерами
  225. ```python
  226. import asyncio
  227. from datetime import datetime
  228. from concurrent.futures import ThreadPoolExecutor
  229.  
  230.  
  231. async def not_sleep():
  232. print('NOT SLEEP', datetime.now())
  233.  
  234. async def factorial(name, number):
  235. f = 1
  236. for i in range(2, number+1):
  237. print('Task {}: Compute factorial({})'.format(name, i))
  238. await not_sleep()
  239. f *= i
  240. print('Task {}: factorial({}) is {}'.format(name, number, f))
  241.  
  242.  
  243. loop = asyncio.get_event_loop()
  244. loop.set_default_executor(ThreadPoolExecutor(4))
  245. tasks = [
  246. asyncio.ensure_future(factorial("A", 2)),
  247. asyncio.ensure_future(factorial("B", 3)),
  248. asyncio.ensure_future(factorial("C", 4)),
  249. ]
  250. loop.run_until_complete(asyncio.wait(tasks))
  251. loop.close()
  252. ```
  253.  
  254. ```python
  255. import asyncio
  256. from datetime import datetime
  257. from concurrent.futures import ThreadPoolExecutor
  258.  
  259.  
  260. async def custom_sleep():
  261. print('SLEEP', datetime.now())
  262. await asyncio.sleep(1)
  263.  
  264. async def factorial(name, number):
  265. f = 1
  266. for i in range(2, number+1):
  267. print('Task {}: Compute factorial({})'.format(name, i))
  268. await custom_sleep()
  269. f *= i
  270. print('Task {}: factorial({}) is {}'.format(name, number, f))
  271.  
  272.  
  273. loop = asyncio.get_event_loop()
  274. loop.set_default_executor(ThreadPoolExecutor(4))
  275. tasks = [
  276. asyncio.ensure_future(factorial("A", 2)),
  277. asyncio.ensure_future(factorial("B", 3)),
  278. asyncio.ensure_future(factorial("C", 4)),
  279. ]
  280. loop.run_until_complete(asyncio.wait(tasks))
  281. loop.close()
  282.  
  283. ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement