文本记录Russian

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

1h 28m 40s13,174 字数2,317 segmentsRussian

完整文本记录

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 переменная, там мы назначаем.

解锁更多

免费注册以访问高级功能

互动查看器

观看带有同步字幕、可调节叠加层和完整播放控制的视频。

免费注册以解锁

AI 摘要

获取由 AI 立即生成的视频内容摘要、要点和结论。

免费注册以解锁

翻译

一键将字幕翻译成 100 多种语言。以任何格式下载。

免费注册以解锁

思维导图

将字幕可视化为交互式思维导图。一目了然地了解结构。

免费注册以解锁

与字幕聊天

提出关于视频内容的问题。直接从字幕中获取由 AI 驱动的答案。

免费注册以解锁

从您的字幕中获得更多

免费注册并解锁交互式查看器、AI 摘要、翻译、思维导图等。无需信用卡。

    Собеседование Python Middle / S… - 完整文字记录 | YouTubeTranscript.dev