Простой тест на знание Python — вопросы

Материал из DISCOPAL
Перейти к: навигация, поиск
12345678910
Простой тест на знание Python

Вариант 1671103326.


Ваше имя*:


Вопрос 1

Даны матрицы a и b.

 
import numpy as np
…
 

Как получить произведение матриц?


  1.  np.dot(a, b)
  2.  a * b
  3.  np.vdot(a, b)
  4.  np.product(a, b)

Вопрос 2

Что делает следующая программа?

 
import threading
ready = threading.Event()
 
def proc():
  ready.wait()
  print("Done!")
 
for i in range(5):
  p = threading.Thread(target=proc)
  p.start()
 
print("Prepare!")
ready.set()
 
  1.  программа запускает пять дополнительных потоков, печатающих "Done!" после выполнения ready.set(), то есть, после печати "Prepare!"
  2.  программа создает пять дополнительных потоков, которые запускаются после выполнения ready.set() в главном потоке
  3.  программа запускает пять дополнительных потоков, один из которых печатает "Done!" после выполнения ready.set(), а остальные ждут следующего ready.set()
  4.  программа запускает пять дополнительных потоков, печатающих "Done!" одновременно

Вопрос 3

Может ли возникнуть deadlock в следующей программе:

 
import threading
 
res_A = threading.Lock()
res_B = threading.Lock()
res_C = threading.Lock()
 
def proc1():
   res_A.acquire(); res_B.acquire(); res_C.acquire()
   # ...
   res_B.release(); res_C.release(); res_A.release()
 
def proc2():
   res_B.acquire(); res_C.acquire(); res_A.acquire()
   # ...
   res_C.release(); res_B.release(); res_A.release()
 
def proc3():
   res_C.acquire(); res_A.acquire(); res_B.acquire()
   # ...
   res_A.release(); res_B.release(); res_C.release()
 
p1 = threading.Thread(target=proc1, name="t1")
p2 = threading.Thread(target=proc2, name="t2")
p3 = threading.Thread(target=proc3, name="t3")
p1.start(); p2.start(); p3.start()
p1.join(); p2.join(); p3.join();
 


  1.  нет, не возникнет
  2.  да, обязательно
  3.  да, возможно

Вопрос 4

Может ли возникнуть deadlock в следующей программе:

import threading
 
res_A = threading.Lock()
res_B = threading.Lock()
res_C = threading.Lock()
 
def proc1():
   res_A.acquire(); res_B.acquire(); res_C.acquire()
   # ...
   res_B.release(); res_C.release(); res_A.release()
 
def proc2():
   res_A.acquire(); res_B.acquire(); res_C.acquire()
   # ...
   res_C.release(); res_B.release(); res_A.release()
 
def proc3():
   res_A.acquire(); res_B.acquire(); res_C.acquire()
   # ...
   res_A.release(); res_B.release(); res_C.release()
 
p1 = threading.Thread(target=proc1, name="t1")
p2 = threading.Thread(target=proc2, name="t2")
p3 = threading.Thread(target=proc3, name="t3")
p1.start(); p2.start(); p3.start()
p1.join(); p2.join(); p3.join();
 


  1.  нет, не возникнет
  2.  да, возможно
  3.  да, обязательно

Вопрос 5

Класс имеет методы «__iter__()» и «next()».

О чем это говорит и как пользоваться этим методом?

 
class A:
  #...
  def __iter__(self): 
    #...
  def next(self):
    #...
a = A(1, 2, 3)
 
  1.  генератор. Пользоваться можно так: for i in a(): print i
  2.  итератор. Пользоваться можно так: for i in a: print i
  3.  последовательность. Пользоваться можно так: print a[2]
  4.  нет особого названия. Пользоваться можно так: print a.next()

Вопрос 6

Что делает следующая программа?

import threading
l = threading.Lock()
 
def proc(nm, n=0):
  l.acquire()
  try:
    if n < 5:
      print("*", end='')
      return proc(nm, n+1)
    else:
      return nm
  finally:
    l.release() 
 
for i in range(5):
  threading.Thread(target=proc, args=(str(i),)).start()
  1.  печатает 5 звездочек
  2.  печатает 1 звездочку и зависает
  3.  аварийно завершается при попытке выполнить l.acquire() во второй раз
  4.  печатает 25 звездочек
  5.  беспрерывно печатает звездочки

Вопрос 7

Какого типа значение получится в результате вычисления следующего выражения:

(" ")
  1.  это синтаксическая ошибка
  2.  str (строка)
  3.  tuple (кортеж)
  4.  unicode (Unicode-строка)

Вопрос 8

Из какого модуля будет работать функция «replace()» в следующем примере:

from sre import sub as replace
from string import replace
  1.  из sre.string
  2.  возникнет ошибка (конфликт имен)
  3.  из string
  4.  sre.sub

Вопрос 9

Сокрытие информации о внутреннем устройстве объекта, при котором вся работа с объектом ведется только через общедоступный интерфейс называется

  1.  инкапсуляцией
  2.  абстракцией
  3.  декомпозицией
  4.  агрегацией

Вопрос 10

Чему будет равно значение следующего выражения:

 
import numpy as np
print( np.shape(np.transpose(np.ones((2, 3, 4)))) )
 
  1.  (4, 3, 2)
  2.  (3, 4, 2)
  3.  (2, 4, 3)
  4.  (3, 2, 4)