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

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

Вариант 3486788685.


Ваше имя*:


Вопрос 1

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

Вопрос 2

Какие из приведенных ниже сравнений обязательно дадут True, если объекты x и y имеют одинаковые значения?

  1.  x is y
  2.  hash(x) == hash(y)
  3.  id(x) == id(y)

Вопрос 3

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

 
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() в главном потоке

Вопрос 4

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

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

Вопрос 5

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

0 < [1, 4][1] < 3 or None
  1.  0
  2.  None
  3.  1
  4.  2
  5.  это синтаксическая ошибка

Вопрос 6

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

 
import numpy as np
…
 

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


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

Вопрос 7

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

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

Вопрос 8

Сколько общедоступных методов будет иметь экземпляр класса ABC и что возвратит вызов метода a()?

class A: 
    def a(self): 
        return 'a'
 
class B: 
    def b(self): 
        return 'b'  
 
class C: 
    def c(self): 
        return 'c'  
 
class AB(A, B): 
    def a(self): 
        return 'ab'
 
class BC(B, C): 
    def a(self): 
        return 'bc'
 
class ABC(AB, B, C): 
    def a(self): 
        return 'abc'
 


  1.  5, возвратит a
  2.  3, возвратит ab
  3.  3, возвратит a
  4.  3, возвратит abc

Вопрос 9

Какая операция выполняет пересечение множеств:

A = set([1, 2, 3])
B = set([2, 3, 7])
  1.  «A ^ B»
  2.  «A * B»
  3.  «A | B»
  4.  «A & B»

Вопрос 10

Что будет выведено следующей программой?

S = 0
for i in range(1, 10, 2):
  if i % 2 == 0:
    S = S + i 
print(S)
  1.  0
  2.  сообщение об ошибке
  3.  1024
  4.  1
  5.  10
  6.  20