TRANSCRIPTRussian

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

1h 28m 40s13,174 words2,317 segmentsRussian

FULL TRANSCRIPT

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

UNLOCK MORE

Sign up free to access premium features

INTERACTIVE VIEWER

Watch the video with synced subtitles, adjustable overlay, and full playback control.

SIGN UP FREE TO UNLOCK

AI SUMMARY

Get an instant AI-generated summary of the video content, key points, and takeaways.

SIGN UP FREE TO UNLOCK

TRANSLATE

Translate the transcript to 100+ languages with one click. Download in any format.

SIGN UP FREE TO UNLOCK

MIND MAP

Visualize the transcript as an interactive mind map. Understand structure at a glance.

SIGN UP FREE TO UNLOCK

CHAT WITH TRANSCRIPT

Ask questions about the video content. Get answers powered by AI directly from the transcript.

SIGN UP FREE TO UNLOCK

GET MORE FROM YOUR TRANSCRIPTS

Sign up for free and unlock interactive viewer, AI summaries, translations, mind maps, and more. No credit card required.

    Собеседование Python M… - Full Transcript | YouTubeTranscript.dev