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

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

Вариант 737949650.


Ваше имя*:


Вопрос 1

Какие встроенные функции возвращают в качестве значения словарь (или подобный объект)?

  1.  vars()
  2.  enumerate()
  3.  globs()

Вопрос 2

Может ли возникнуть 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.  нет, не возникнет

Вопрос 3

Имеются следующие определения:

 
def m1(self):
  print("m1")
 
class M:
  def m2(self):
    print("m2")
 
m = M()
 


Какой из фрагментов кода содержит ошибки?


  1.   m.m1 = m.m2; m.m1()
  2.   m.m1 = m1; m.m1(m)
  3.   m.m1 = m1; m.m1()
  4.   M.m1 = m1; m.m1()

Вопрос 4

Укажите набор атрибутов, которые считаются общедоступными, для экземпляров следующего класса:

 
class Example:
  def __init__(self, x, y):
    xy = x, y
    self.position = xy
    self._length = self.__len(x, y)
  def __len(self, x, y):
    return abs(x) + abs(y)
  def getlen(self):
    return self._length
 


  1.   getlen, _length, position
  2.   getlen, position
  3.   position
  4.   getlen, _length, position, __len, xy

Вопрос 5

В каких местах допущены ошибки в генераторном выражении, выдающем список координат полей шахматной доски?

(j+str(i) for i in range(1, 9) for j in "abcdefgh")
  1.  ошибка в «for j in "abcdefgh"»
  2.  ошибка в «j+str(i)»
  3.  ошибок нет
  4.  ошибка в «for i in range(1, 9)»

Вопрос 6

Как называется отношение, которое имеют следующие два класса:

 
class A(type):
  def __init__(cls, name, bases, dict):
    return super(A, cls).__init__(cls, name, bases, dict)
 
B = A("B", (), {})
 
  1.  наследование. B получается наследованием A
  2.  метакласс. B является метаклассом для A
  3.  метакласс. A является метаклассом для B
  4.  ассоциация. A содержит ссылки на B

Вопрос 7

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

[ " "]
  1.  tuple (кортеж)
  2.  array (массив)
  3.  list (список)
  4.  str (строка)
  5.  это синтаксическая ошибка

Вопрос 8

Имеется массив c, для которого shape(c) равна (2, 2, 2).

Какие из приведенных ниже операций получения среза вызовут ошибку?

  1.  c[::2,1]
  2.  c[:,-1]
  3.  c[...,1]
  4.  c[1,2]

Вопрос 9

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

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


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

Вопрос 10

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

 
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!" одновременно
  2.  программа запускает пять дополнительных потоков, печатающих "Done!" после выполнения ready.set(), то есть, после печати "Prepare!"
  3.  программа запускает пять дополнительных потоков, один из которых печатает "Done!" после выполнения ready.set(), а остальные ждут следующего ready.set()
  4.  программа создает пять дополнительных потоков, которые запускаются после выполнения ready.set() в главном потоке