ABSCHRIFTRussian

Собеседование Python Middle / Senior. Вопросы и ответы + разбор от Техлида (IVI, VK, Avito)

1h 28m 40s13,174 Wörter2,317 segmentsRussian

VOLLSTÄNDIGE ABSCHRIFT

0:02

Да, если в двух словах о себе

0:06

писал, да, работал в Иве в ВК и в Авито.

0:10

Вот потом работал ещё менеджером в

0:12

Яндексе МТСе. Правильно преподавал в

0:14

банке, преподал в Яндекс-практикуме.

0:16

Вот. И сейчас ещё в шорткате. Вот если

0:19

это кратко про опыт, про языки,

0:21

наверное, больше всего работал с

0:21

питоном, с го. Но там помимо языка ещё

0:24

работал с другими технологиями. Вот

0:26

сегодня как раз хочется провести

0:28

медловый собис на

0:31

на питон, да, наверное, верхоуровню

0:34

хотим обсудить следующий вопрос- это как

0:36

бы процесс потоки, да, в общем, в

0:38

операционной системе и как бы с м в

0:42

Питоне, как это работает. Хочется

0:43

сегодня ещё поговорим про постгрес, а

0:45

может быть немножко заденем очереди

0:48

каширование, наверное, вот как. И если

0:50

ещё время останется, как раз поговорим

0:51

про архитектуру кода, да, про чистую

0:53

архитектуру, экснальную архитектуру. Вот

0:56

это в двух словах обо мне и что сегодня

0:57

будем обсуждать. Вот. А, Тим, можно тоже

1:00

тебя попросить вкратце описать свой

1:02

опыт? Тогда и будем тоже переходить уже

1:04

к вопросику.

1:05

>> Супер, конечно. Э, меня зовут Тимофей.

1:08

Ээ разрабатываю уже 6 лет, работал в

1:11

разных областях, компаниях, странах и в

1:16

большей степени разрабатываю бэкэнд на

1:19

основу на Python и плюс с го часто

1:23

смешанный.

1:25

Кайф. Супер. О'кей. А что? Давай тогда

1:29

пойдём с каких-нибуд классических

1:30

вопросов, да? Процессы, потоки можно

1:33

сказать вообще, как это работает на

1:34

уровне операционной системы, а потом как

1:36

раз перейдём уже к имплементации на

1:38

уровне питона.

1:39

>> На уровне операционной системы. Ну,

1:42

во-первых, когда мы говорим о процессах,

1:44

как бы стандартное, что приходит на ум,

1:46

что как бы процесс - это по сути инстан

1:48

каждого приложения, которое мы запускаем

1:51

вместе со всей э статически, динамически

1:54

выделенной память и так далее. Аа что

1:57

касается потоков, у нас как бы

2:00

процессоры многоядерные, и они могут

2:02

одновременно выполнять как бы много

2:05

работы, распаралливать. Но если у нас

2:08

даже одно ядро есть на процессоре, то у

2:10

нас есть встроенные механизмы

2:11

многопоточности, которые нам позволяют

2:14

прыгать, свичить контекст между одним

2:17

потоком и другим настолько быстро, что

2:19

это становится незаметно и таким образом

2:22

давать нам возможность параллельно

2:25

прогрессировать по нашим одновременным

2:27

задачам в приложении или во многих

2:29

приложениях.

2:31

>> Угу. А как насчёт изоляции э в процессах

2:34

и в потоках?

2:36

В процессах процесса всегда выделяется

2:39

как бы отдельная область памяти, которая

2:42

как бы тоже может расширяться. По-моему,

2:44

там оно расширяется по постранично

2:47

как-то, когда не хватает памяти. А

2:52

в потоках в потоках у нас есть э как бы

2:56

общая память процессов. Она может также

2:58

пересекаться между несколькими потоками.

3:01

То есть в одном потоке мы можем

3:03

акцессить ээ какой-то адрес памяти,

3:06

который из другого потока к нам пришёл.

3:09

То есть них в этом пла па плане есть как

3:11

бы локальная память, которая им

3:13

выделяется. Чаще всего это просто как бы

3:14

какой-то стек небольшой, но и

3:16

динамическая память, которая обычно

3:18

выделяется, она как бы доступна всем

3:21

потокам внутри одного процесса.

3:23

>> Угу. А вот как так получается, что в

3:25

рамках одного процесса мы можем

3:26

обмениваться информацией, а, например,

3:28

если у нас с тобой два процесса, мы не

3:30

можем или всё равно можем? Вот как

3:31

происходит обмен данными между

3:33

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

3:35

процессами чаще всего через очереди

3:37

происходится. Это отдельный механизм и

3:39

как бы механизм самой операционной

3:41

системы, которая позволяет нам делать

3:42

interprococess communication как бы

3:44

задачи, что мы можем вызывать из

3:47

отдельного процесса какую-то задачу и

3:49

обращаться и так обмениваться данными,

3:51

но не напрямую ссылаться на адрес

3:53

памяти.

3:55

>> А под очередью, что ты имеешь в виду,

3:56

что там у каждого процесса запускается

3:57

кавка, и вот они через кавку

3:59

обмениваются информацией. А

4:01

>> не совсем, как бы я как себе это

4:04

визуализирую. Это просто какой-то

4:07

как бы

4:08

мм отдельное хранилище. Может быть на

4:11

диске, как бы я как бы себе это мог

4:13

визуализировать. Может быть на диске,

4:15

может ещё как-то как бы в виртуальном

4:17

плане. Просто как бы какое-то хранилище,

4:20

куда можно положить какое-то значение и

4:22

достать его из другого процесса. Это

4:25

можно делать через файлы, через

4:26

interpress, communication постоянными

4:28

запросами туда-обратно.

4:30

>> А вот этот вот как раз взаимодействие

4:31

между процессами. А давай помогу. А про

4:33

сокеты может быть, ты слышал и путать с

4:35

веб-сокетами. Просто классические сокеты

4:37

>> и файловые дескрипторы. Тоже, наверное,

4:39

хочется вот об этом поговорить. Что это

4:40

такое?

4:41

>> А сокеты и файловые дескрипторы - это

4:43

как бы отдельный формат файлов, куда мы

4:45

можем поточно как бы стримить данные и

4:47

оттуда одновременно читать. То есть, в

4:49

принципе, когда мы разрабатываем

4:50

веб-сервер, мы в первую очередь когда

4:53

принимаем какой-то запрос из дня, мы

4:55

читаем из из сокетов как раз-таки

4:58

получаемые запросы, получаемые данные.

5:01

>> Угу. А файловые дескрипторы зачем нам

5:03

нужны там во всей вот этой вот истории?

5:05

>> Насколько я знаю, файловый дескриптор -

5:06

это идентификатор конкретного сокета.

5:10

>> Угу. Бывали у тебя какие-нибудь

5:12

проблемы, что там файлов дескрипторов не

5:14

хватает вообще? Что это такое за штука?

5:16

>> Не сталкивался. Не сталкивался. Так не

5:19

вспомнил.

5:19

>> Ну вот если будешь писать свой engx и

5:22

будешь делать нагрузное тестирование,

5:23

вдруг случайно можешь в это и уткнуться.

5:25

О'кей, хорошо, понял тебя. А смотри, а

5:28

давай тогда поговорим про контекст

5:29

свичинг. Да. Почему-то все говорят, что

5:31

он дорогой, что как-то вот что-то как-то

5:34

там, что-то там. Что можешь об этом

5:35

рассказать?

5:37

>> Насколько я как бы как я себе

5:39

представляю сам процесс контекст

5:40

ссвичинга, то нам в самую большую часть

5:44

времени занимает именно выгрузка нужного

5:47

фрагмента памяти, который мы используем

5:50

в другом непосредственном потоке.

5:53

>> В процессе или потоке?

5:57

>> В процессе. Ой, нет, в потоке. В потоке.

6:03

В процессе или в потоке.

6:06

>> Понял. Первый вариант больше устраивал,

6:07

но я уже ошибся, поэтому

6:10

А почему дорого? А, ну ты сказал, да,

6:12

что у нас выгружается стек на самом

6:13

деле, да? О'кей.

6:14

>> Угу.

6:15

>> А вот давай пока отсюда далеко не ушли.

6:17

Вот смотри, например, у тебя есть,

6:19

например, там 16 ядер, да? И вот,

6:22

например, э-э, когда ты делаешь

6:25

например, конфигурируешь даже неважно

6:27

Python приложение, да, или какое-то

6:29

другое приложение, а сколько ты вот в

6:31

рамках доступного примерно можешь

6:33

запустить процессов, сколько ты можешь

6:35

запустить потоков или вот там даже

6:37

вопрос о звёздочка примерно в

6:38

классически вот у тебя, наверное,

6:39

MacBook, да, сколько у тебя сейчас

6:41

запущено процессов и потоков примерно и

6:43

как там вот это всё происходит?

6:45

процессов и потоков, я думаю, я так на

6:50

шестнадцатиядерном.

6:52

Мм,

6:53

>> давай, может быть, знаешь, чуть-чуть

6:54

по-другому переконфигурирую вопрос. Вот

6:57

смотри, тебе нужно как бы у тебя тебе

6:59

вот как разработчику дали компьютер, на

7:01

котором будет запущено твоё

7:02

веб-приложение, и тебе нужно указать,

7:04

какое количество процессов, в какое

7:05

количество процессов ты будешь это

7:07

запускать. У тебя есть 16 ядер. Вот

7:09

сколько бы ты указал?

7:11

>> Сколько бы я указал? Аэ стандартно

7:13

поставил бы просто 20, а там уже смотрел

7:17

по Maxwor с переменной из э из

7:21

стандартного,

7:22

где она у нас в трейдинге, в

7:24

трейдинг-модуле.

7:27

Maxwers переменная, там мы назначаем.

MEHR FREISCHALTEN

Melden Sie sich kostenlos an, um Premium-Funktionen zu nutzen

INTERAKTIVER VIEWER

Sehen Sie sich das Video mit synchronisierten Untertiteln, anpassbarer Überlagerung und voller Wiedergabesteuerung an.

KOSTENLOS ANMELDEN ZUM FREISCHALTEN

KI-ZUSAMMENFASSUNG

Erhalten Sie eine sofortige KI-generierte Zusammenfassung des Videoinhalts, der wichtigsten Punkte und Erkenntnisse.

KOSTENLOS ANMELDEN ZUM FREISCHALTEN

ÜBERSETZEN

Übersetzen Sie das Transkript mit einem Klick in über 100 Sprachen. Download in jedem Format.

KOSTENLOS ANMELDEN ZUM FREISCHALTEN

MIND MAP

Visualisieren Sie das Transkript als interaktive Mind Map. Verstehen Sie die Struktur auf einen Blick.

KOSTENLOS ANMELDEN ZUM FREISCHALTEN

CHAT MIT TRANSKRIPT

Stellen Sie Fragen zum Videoinhalt. Erhalten Sie Antworten von der KI direkt aus dem Transkript.

KOSTENLOS ANMELDEN ZUM FREISCHALTEN

HOLEN SIE MEHR AUS IHREN TRANSKRIPTEN HERAUS

Melden Sie sich kostenlos an und schalten Sie interaktiven Viewer, KI-Zusammenfassungen, Übersetzungen, Mind Maps und mehr frei. Keine Kreditkarte erforderlich.

    Собеседование… - Vollständiges Transkript | YouTubeTranscript.dev