Не пропустите эти вопросы интервью Python, вопрос № 16 интервью Python

Python
Не пропустите эти вопросы интервью Python, вопрос № 16 интервью Python

Вопрос 1: под питоном多线程ограничения и多进程Как передать параметры в ?

Многопоточность Python имеет глобальную блокировку интерпретатора (сокращенно GIL), этот GIL не является особенностью python, это концепция, представленная только в интерпретаторе Cpython и в интерпретаторах, написанных на других языках без этого GIL, например: Jython.

Смысл этой блокировки в том, что только один поток может использовать интерпретатор в любой момент времени.Это означает запуск нескольких программ на одном процессоре.Мы все используем его по очереди.Это называется "concurrency", а не "parallel".

Почему существует ГИЛ?

Появление многоядерных процессоров, полное использование многоядерных процессоров и внедрение многопоточного программирования постепенно популяризируются.Трудность заключается в непротиворечивости данных и синхронизации состояний между потоками.

Когда речь заходит о блокировках интерпретатора GIL, легко подумать, что, когда глобальные переменные совместно используются несколькими потоками, между потоками будет конкуренция ресурсов за глобальные переменные, и модификация глобальных переменных не даст желаемых результатов. время мы использовали блокировку взаимного исключения в модуле потока в python, и в этом случае только один поток может получить глобальную переменную каждый раз, когда он работает с глобальной переменной; см. следующий код:

import threading
global_num = 0


def test1():
    global global_num
    for i in range(1000000):
        global_num += 1

    print("test1", global_num)


def test2():
    global global_num
    for i in range(1000000):
        global_num += 1

    print("test2", global_num)

t1 = threading.Thread(target=test1)
t2 = threading.Thread(target=test2)
t1.start()
t2.start()

Затем присоединитесь к мьютексу

import threading
import time
global_num = 0

lock = threading.Lock()

def test1():
    global global_num
    lock.acquire()
    for i in range(1000000):
        global_num += 1
    lock.release()
    print("test1", global_num)


def test2():
    global global_num
    lock.acquire()
    for i in range(1000000):
        global_num += 1
    lock.release()
    print("test2", global_num)

t1 = threading.Thread(target=test1)
t2 = threading.Thread(target=test2)
start_time = time.time()

t1.start()
t2.start()

В каких ситуациях подходит многопоточность:

Поскольку GIL может быть освобожден при выполнении трудоемких операций ввода-вывода, можно использовать многопоточность в коде с интенсивным вводом-выводом.

В каких ситуациях подходит использование многопроцессорности:

Для интенсивных вычислений, таких как расчет размера определенной папки

Обмен данными между несколькими процессами

Делитесь данными между несколькими процессами, вы можете использовать multiprocessing.Value и multiprocessing.Array

Вопрос 2: Объясните синтаксис питона и/или

bool and a or b

Эквивалентно bool?a:b

>>> a = "first"
>>> b = "second"
>>> 1 and a or b  # 输出内容为 'first'
>>> 0 and a or b  # 输出内容为 'second'

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

>>> a = ""
>>> b = "second"
>>> 1 and a or b # 输出内容为 'second'

Поскольку a — это пустая строка, которая Python считает ложной в логическом контексте, это выражение «не сработает» и вернет значение b. Если вы не думаете об этом как о синтаксисе типа bool ?a : b , а как о чистой логической логике, то вы правильно поняли. 1 верно, а ложно, поэтому 1 и ложно. ложь или b есть b.

Трюк и/или должен быть инкапсулирован в функцию:

def choose(bool, a, b):
    return (bool and [a] or [b])[0]

Поскольку [a] — непустой список, он никогда не будет ложным. Даже если a равно 0 или ” или другому ложному значению, list[a] является истинным, поскольку содержит один элемент.

Вопрос 3: Укажите не менее 5 спецификаций PEP8?

Официальный документ спецификации PEP8:Woohoo.Python.org/Dev/PEPs/PE…PEP8 китайский перевод:Woo Woo Woo.cn Blog On.com/ahjianbe кто-то ...

Это основано на обычном накоплении.

  • отступ. 4 пробела для отступа (все редакторы могут это делать), без тапа, не говоря уже о смеси тапа и пробелов.
  • Максимальная длина каждой строки — 79. Вы можете использовать обратную косую черту для новых строк, предпочтительно круглые скобки. Точка перевода строки - нажать Enter после оператора.
  • Две пустые строки между определениями классов и функций верхнего уровня, одна пустая строка между определениями методов в классах, одна пустая строка между логически не относящимися к делу абзацами в функциях, пустых строк больше нет в других местах.
  • Блокируйте комментарии, комментарии добавлены перед блоком кода. Добавьте пространство после «#». Абзацы разделены только «#» линиями
  • Не добавляйте все виды места до закрытия скобок.
  • Не добавляйте пробелы перед запятыми, двоеточиями или точками с запятой.
  • Не ставьте пробел перед открывающей скобкой функции.
  • Не ставьте пробел перед открывающей скобкой последовательности.
  • Добавляйте пробел слева и справа от оператора, не добавляйте пробелы для выравнивания.
  • Оператор присваивания, используемый для параметра функции по умолчанию, не содержит пробелов вокруг него.
  • Не пишите несколько операторов в одной строке, хотя использование ';' позволяет. В операторе i-f/for/while, даже если оператор выполнения представляет собой только одно предложение, он должен начинаться с новой строки.
  • Первый параметр метода класса должен быть self, а первый параметр статического метода должен быть cls.

Вопрос 4: Разница между HTTPS и HTTP:

  • Протокол https требует определенных экономических затрат, чтобы подать заявку на сертификат до ок.
  • http — это передача в открытом виде, https — зашифрованная безопасная передача
  • Порт подключения другой, http 80, https 443
  • HTTP-соединение очень простое и не имеет состояния; https — это зашифрованная передача ssl, сетевого протокола для аутентификации личности, который более безопасен, чем HTTP-передача.

Там еще много всего, разбирайтесь сами

Вопрос 5: Кратко опишите форму Джанго

ORM, все заклинания Object-Relation Mapping, что означает объектно-реляционное сопоставление

Реализована развязка модели данных и базы данных, а базу данных можно легко заменить за счет простой настройки, без необходимости модификации кода, требуется только объектно-ориентированное программирование Операции ORM по существу транслируются в соответствующие операторы SQL в соответствии с подключенным механизмом базы данных. Все проекты, разработанные с помощью Django, не должны заботиться о том, чтобы нижний уровень программы использовал MySql, Oracle, SQLite.... Если база данных переносится, необходимо только заменить механизм базы данных Django.

Вопрос 6: Следите за вопросом, недавно обновленная волшебная серия вступительных статей на официальном аккаунте

ее диплом колледжа 27 лет, изучаю языки программирования c, c++, python с нуля 29-летняя девушка пишет 100 учебных пособий по кейсам Овладеть 10 языками программирования к 30 годам, Скажу вам с опытом самообучения, чтобы научиться программировать, нужно найти ластик мечты

Добро пожаловать, обратите внимание на ее общедоступный номер, ищите - программист без бакалавриата.

серийный номер статья
Вопрос №1 на собеседовании по Python Базовое интервью по Python, прочтите эту статью, чтобы выделить ключевые моменты
Вопрос №2 на собеседовании по Python Быстрые вопросы и ответы в интервью Python, теория требует скорости и точности
Вопрос №3 на собеседовании по Python Изучая Python в течение года, я забыл основы, посмотрите вопросы интервью и воспоминания
Вопрос №4 на собеседовании по Python Чтобы взять интервью у инженера Python, вы должны быть в состоянии ответить на эти основные вопросы.
Вопрос №5 на собеседовании по Python 6 вопросов для интервью инженерам Python в 2019 году
Вопрос №6 на собеседовании по Python Вчера я пошел на собеседование и задал эти 5 вопросов для собеседования по Python.
Вопрос №7 на собеседовании по Python Во время интервью по разработке Python в среду на эти вопросы интервью Python почти не ответили неправильно, вопрос №7 интервью Python
Вопрос №8 на собеседовании по Python Собеседуя с инженерами Python, эти вопросы по кодированию нужно запомнить
Вопрос №9 на собеседовании по Python Я снова взял интервью у инженера поискового робота Python и столкнулся с множеством вопросов.
Вопрос №10 на собеседовании по Python Друзья идут брать интервью у инженеров Python, возвращаются с несколькими основными вопросами
Вопрос №11 на собеседовании по Python Только что закончил, чтобы взять интервью у инженера Python, эти вопросы слишком сложны
Вопрос №12 на собеседовании по Python Я прочитаю эти вопросы интервью Python через 4 дня, 1 мая.
Вопрос №13 на собеседовании по Python В результате на эти вопросы интервью Python не были даны правильные ответы.
Вопрос №14 на собеседовании по Python Ищете работу Python завтра, взгляните на эти вопросы интервью Python
Вопрос №15 на собеседовании по Python Эти вопросы для интервью на Python стабильны и точны