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

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

Вариант 3130432830.


Ваше имя*:


Вопрос 1

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

 
import numpy as np
…
 

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


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

Вопрос 2

В каких точках программы необходимо выполнять acquire() и release() замка Z, чтобы функция f могла правильно работать в многопоточном приложении? (Как обычно, нужно минимизировать общее время, на которое запирается замок)

def f(x, y, z):
  global d
  # 1
  d[(x, y)] = z
  # 2
  res = len(d)
  # 3
  return res


  1.  1: Z.acquire(), 2: Z.release()
  2.  1: Z.acquire(), 2: Z.release(), Z.acquire(), 3: Z.release()
  3.  1: Z.acquire(), 3: Z.release()
  4.  замок не нужен

Вопрос 3

Имеется следующий генератор для слияния двух отсортированных последовательностей:

def merge(a1, a2):
 a1 = list(a1)
 a2 = list(a2)
 while a1 or a2:
   if a1 and (not a2 or a1[0] < a2[0]):
     r = a1
   else:
     r = a2
   yield r[0]
   del r[0]

Какие ошибки или особенности имеет эта программа?


  1.  генератор будет портить переданные ему списки
  2.  ошибок нет
  3.  генератор оставит за собой временный список, так как «del» происходит после «yield»
  4.  в последней строке каждый раз удаляется элемент из временного списка, а не из «a1» или «a2»: генератор зациклится

Вопрос 4

Сколько символов будет содержать строка S после выполнения следующего кода:

S = "\n123\\"
  1.  6
  2.  сообщение об ошибке
  3.  7
  4.  5
  5.  3
  6.  4

Вопрос 5

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

 
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

Вопрос 6

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

Вопрос 7

Какую роль играет xx в Python-программе, и чему должен быть равен XXX:

 
class A(object):
  def xx(cls, x):
    ...
  xx = XXX(xx)
 
  1.  функция, XXX можно опустить
  2.  статический метод, XXX равен staticmethod
  3.  метод класса, XXX равен classmethod
  4.  метод, XXX равен instancemethod

Вопрос 8

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

from sre import *
from string import *
split('a', 'b')
  1.  из re
  2.  из sre.string
  3.  возникнет ошибка (конфликт имен)
  4.  из string

Вопрос 9

Какую роль играет «xx» в Python-программе, и чему должен быть равен «XXX»:

 
class A:
  def xx():
    return A.__name__
  xx = XXX(xx)
 
  1.  функция, XXX можно опустить
  2.  метод, XXX равен instancemethod
  3.  метод класса, XXX равен classmethod
  4.  статический метод, XXX равен staticmethod

Вопрос 10

Получен новый пакет (в виде исходных кодов) для Python. Какова рекомендуемая процедура установки нового модуля, если известно, что он использует «distutils»?

  1.  выполнить в каталоге с развернутым пакетом команду «python setup.py install»
  2.  выполнить «distutils --install имя модуля»
  3.  в Windows — запустить установщик
  4.  скопировать содержимое в каталог .../site-packages