Mock-собеседование старшего Go разработчика из Тинькофф | Самое полное интервью

  Рет қаралды 21,825

Vladimir Balun - Programming

Vladimir Balun - Programming

Күн бұрын

Курсы по программированию: clck.ru/37iG2b
Потренироваться проходить собеседования: it-interview.io
Присоединиться к моему сообществу: boosty.to/vladimir_balun
Консультации:
getmentor.dev/mentor/vladimir...
solvery.io/ru/mentor/vladimir...
Консультации от Дениса:
solvery.io/ru/mentor/de_maksimov
Таймкоды:
00:00 - Введение
00:20 - Горутины под капотом
01:37 - Расширение стэка горутины
02:36 - Разница потоков и горутин
05:00 - Context switching
06:08 - Планировщик в Go под капотом
06:58 - Системные вызовы с горутинами
08:21 - Work sharing и work stealing
09:16 - Кооперативная и вытесняющая многозадачнось
09:55 - Алгоритмы планирования
11:50 - Примитивы синхронизации
12:23 - Мьютексы под капотом
14:25 - Spinlock
15:07 - Deadlock, livelock, data race
16:23 - Каналы под капотом
18:29 - Семафоры
18:45 - Compare and swap (CAS)
19:25 - Контексты под капотом в Go
21:43 - Параллельное выполнение кода на одном ядре
22:45 - Когерентность кэшей
23:51 - Синхронизация map
25:36 - Архитектура web сервера
29:10 - Синхронизация связного списка
VK: vladimir_balun_program...
Telegram: t.me/vladimir_balun_programming
Instagram: / vladimir_balun_program...
KZbin: / @vladimir_balun_progra...
YandexZen: zen.yandex.ru/id/623b6c964da9...
RuTube: rutube.ru/channel/25079714/
Golang собеседование. Golang уроки. Golang. Golang с нуля. Go программирование. Go программист. Go Junior собеседование. Go Middle собеседование. Go Senior собеседование. Ozon Go собеседование. Tinkoff Golang. Тинькофф Golang. Tinkoff Go. Тинькофф Go.
#программирование #айти #golang #mockinterview

Пікірлер: 57
@vladimir_balun_programming
@vladimir_balun_programming 9 ай бұрын
Какие вопросы вы бы еще задали на собеседовании по теме Concurrency в Go?
@user-ji1rp1tt2t
@user-ji1rp1tt2t 9 ай бұрын
Аксиомы каналов?
@Igor-ale
@Igor-ale 9 ай бұрын
Как организовать Lock-Free и Wait-Free алгоритмы на Go и зачем они нужны
@maksimbiriukov5483
@maksimbiriukov5483 9 ай бұрын
Lock-free semaphore. Cond var. Модель памяти и ее гарантии(но мне кажется это могло быть продолжением ABA problem)
@user-jf3iu8vi7k
@user-jf3iu8vi7k 8 ай бұрын
а давайте такие темы - редис, кафка, паттерны pub-sub, сложные sql, nosql, паттерны проектирования в ооп, аспекты, инфрастуктура, логстеш, эластик? это бы я смотрел постоянно вообще. зачем надо горутины и мьютексы под капотом спрашивать?.. планировщик, мьютексы под капотом..это учится наизусть перед собеседованием и забывается потом как ненужное.
@user-jf3iu8vi7k
@user-jf3iu8vi7k 8 ай бұрын
тем более ты как я вижу любишь и умеешь копать все вглубину - это оочень круто! давай эти темы также копнем, это же в работе гораздо полезнее !
@gebiete
@gebiete 6 ай бұрын
Я понял, это интервью на позицию разработчика драйверов на Golang (шучу), или в разработчики самого Golang. CAS, spinlocks, устройство стека, самих горутин, векторизация иструкций - нафиг оно нужно Golang разработчику? Постоянно ловлю себя на мысли, что я вроде все это знаю из предыдущего опыта, но оно лежит в glacier storage и в ежедневной рутине нафиг не впарилось. Верьте мне, я поднялся с самого дна кернел спейса к свету распределенных транзакций в k8s кластерах.
@yashkevich8164
@yashkevich8164 2 ай бұрын
Наверно потому что все вопросы которые уже можно было задать, были заданы. Надо же что то новое спрашивать))) А вообще круто что у вас вся эта информация сохраняется в голове. Я вот могу что то такое помнить только в контексте подготовки именно к собесу, через не продолжительное время все выветривается. С другой стороны какая вероятность именно мне это встретить на собесе?) и нужно ли это специально себе вкладывать в память
@yakomisar
@yakomisar 8 ай бұрын
Владимир, можешь дать ссылки на литературу, где покрыты темы из интервью? Хотелось бы почитать.
@maksimbiriukov5483
@maksimbiriukov5483 9 ай бұрын
Отличные вопросы. Очень понравилось интервью!
@antoniusupov
@antoniusupov 9 ай бұрын
Владимир, очень жду видео про базы данных
@ilyahontarau7759
@ilyahontarau7759 9 ай бұрын
про Context Switching потоков и потоки, горутины как мне кажется не сильно точно описали TLB и вообще кеши не обязательно могут вымываться, если потоки одного процесса и на одном и том же ядре процессора. еще непонятно про какие потоки в юзер-спейсе, в кернал-спейсе или какой-то гибридный вариант идет речь. если про kernal space, то не указали одну из главных причин - syscall и все накладные расходы. в user space switching потокв будет столько же стоить как и горутин. в любом случае вопросы интересные и заставляют покопаться
@Serj1c
@Serj1c 5 ай бұрын
отличная беседа, спасибо Владимир, почерпнул новое для себя как в плане техники, так и в плане того, что надо поизучать тему конкуретности поглубже, не на все твои вопросы ответил бы)
@hurricane-rus
@hurricane-rus 9 ай бұрын
За интервью спасибо, было интересно) Для критиков - ну, собственно никто и не говорил, что это пример типового сеньорного Go-собеседования. Это была проверка знаний довольно узкого профиля, которые нужны, если мы хотим выжать из Go максимум производительности (например, в каком-нибудь хайлоаде Авито или Озона). И понятно, что во всех остальных случаях почти все это не нужно, и большая часть времени будет уходить на решение бизнесовых, а не таких высокотехнических задач.
@vladimir_balun_programming
@vladimir_balun_programming 9 ай бұрын
Не за что!
@user-qx3km6wp1p
@user-qx3km6wp1p 9 ай бұрын
За авито не скажу, а в озоне, если кто-то начнет оптимизировать продуктовый сервис на таком уровне, то его пошлют сначала оптимизировать логику и работу с памятью, т.к. проблема практически всегда там. Если этого не хватит - поскейлят поды. Устраивать в микросервисе жесть с оптимизацией, об которую потом сломают голову другие разработчики - никто не будет.
@yakomisar
@yakomisar 8 ай бұрын
@@user-qx3km6wp1pтак и есть))
@ep4sh
@ep4sh 7 ай бұрын
Владимир, здравствуйте! Такой вопрос - во многих компаниях сейчас устраивают подобные собеседования, возникает ощущение, что нанимают системного программиста, применяют ли ребята свои знания на работе, или же это не уходит дальше собеседования? Или вопросы, так скажем, требующие просто общей эрудиции?
@user-uj6oi5sf6b
@user-uj6oi5sf6b 5 ай бұрын
Знания этих нюансов в 99% случаев никак вам не поможет в реальной работе. Это только для собесов, чтобы как-то синьёров от остальных отделить. Всё, что вам надо знать про concurrency в GO в реальной жизни - это когда её НЕ использовать, т.е. когда нужно выставить GOMAXPROCS=1. Скорее всего вы с такой ситуацией не столкнетесь. В остальных же Go Runtime сделает всё за вас очень эффективно. Оптимизация в GO - это в первую очередь работа с памятью. В этом видео эта тема совсем не раскрыта.
@arturivnwch
@arturivnwch 9 ай бұрын
ку! давно смотрю твои видео! можешь сделать2 часть "как правильно составить резюме"?
@batpyiiikob7245
@batpyiiikob7245 5 ай бұрын
GPT ЧАТ в помощь
@arturivnwch
@arturivnwch 5 ай бұрын
уже давно составил)) в топ банк залетел@@batpyiiikob7245
@sodz5144
@sodz5144 9 күн бұрын
@@batpyiiikob7245 Это не работает.
@user-qx3km6wp1p
@user-qx3km6wp1p 9 ай бұрын
Конечно знание всех этих деталей работы потоков и горутин - здорово. Но какое это имеет отношение к 99% задач, которые решает пусть и синьор го? Если нужна супер оптимизация кода, то возможно выбран не тот инструмент?
@cruisecontrol1489
@cruisecontrol1489 9 ай бұрын
Тут очевидно человек проникся частью низкоуровневых концепций и теперь эта инфа просачивается в любом его вопросе
@sodz5144
@sodz5144 9 күн бұрын
Я проходил эту стадию. Был проект с широким использованием многопоточности и конечно конкуренции(Биллинг с большим потоком данных и очень узким окном расчета). Так вот новоприбывшие разработчики очень слабо разбирались в теме(по сравнению с дедами конечно). Проблема заключалась в том, что такому человеку не поручишь основные задачи проекта, только рутину. Приходилось натаскивать. Позже эти новички становились матерыми и очень уверенными в себе(иногда не оправдано), т.к. другие задачи выглядели просто рутиной. На самом деле многопоточность очень проста когда ты её переварил и понял.
@zhaisansarsengaliyev
@zhaisansarsengaliyev 9 ай бұрын
Ку, а всегда ли на собесах на высокие должности проходят так больше по операционным системам? Просто если чисто по Go, или Backend разработку спрашивать, то видимо изи и неинтересно да или как?)
@user-hk1pj2nf3f
@user-hk1pj2nf3f 9 ай бұрын
меня недавно спрашивали по ОСке на стажера фронта))) Зависят от компании, если не в помойку, то может и спрашивают
@maximgrigorev3621
@maximgrigorev3621 9 ай бұрын
Есть книги уровня Рихтера, но под го?
@antoniusupov
@antoniusupov 9 ай бұрын
Вот это вообще в тему
@vladimir_balun_programming
@vladimir_balun_programming 9 ай бұрын
Спасибо!
@user-qi6vq3gb9s
@user-qi6vq3gb9s 4 ай бұрын
Небуферизированный канал чуть быстрее, но ведь если в момент записи в буферезированный канал, у него есть читатель, то передача данных выполняется ровно также, как и с буферезированным каналом
@ghettoar2529
@ghettoar2529 8 ай бұрын
А что значит в горутинах стэк динамический в отличие от потоков. В потоках он статический? Это про стек регистров или чё то такое?
@vladimir_balun_programming
@vladimir_balun_programming 8 ай бұрын
В горутинах он растет, в потоках он фиксированный (абстрактно говоря)
@ghettoar2529
@ghettoar2529 8 ай бұрын
@@vladimir_balun_programming А не подскажите какую нибудь статью, чтобы разобраться что есть поток в горутине
@user-sp9lg6pj4x
@user-sp9lg6pj4x 9 ай бұрын
Привет. Я только начинаю изучать Golang и мне правда интересно, каким образом я могу изучить такие нюансы Go, достаточно изучать документацию и соответствующую литературу?
@vladimir_balun_programming
@vladimir_balun_programming 9 ай бұрын
Нужно изучать не язык, а Computer Science с использованием этого языка программирования
@user-sp9lg6pj4x
@user-sp9lg6pj4x 9 ай бұрын
@@vladimir_balun_programming, благодарю за ответ
@Roman-oc9df
@Roman-oc9df 9 ай бұрын
@@vladimir_balun_programming Какие ресурсы посоветуете, и где сами изучали, если не секрет?
@murikame817
@murikame817 9 ай бұрын
@@Roman-oc9df на канале есть видео про это :)
@vadimkogay8681
@vadimkogay8681 9 ай бұрын
Посмотрите лекции Роман Липовский он все хорошо объясняет в течении курса создают свои корутины, мутексы, шедулеры (правда это там все на сях) и да там уже не о go, java, php там даются фундаментальные знания
@MAGAVHEBRON
@MAGAVHEBRON 6 ай бұрын
Если у P будет одна общая очередь, при записи в нее, они будут инвалидировать локальные кеши очереди на ядрах, и всем придется ожидать новой подгрузки пр обращении в нее, это была основная причина создания локальных очередей. Например у одного экземпляра sync.Pool под капотом на каждый P свой пул, по тем же причинам.
@doingwell5629
@doingwell5629 9 ай бұрын
Респект собеседующему. Знайте, когда у вас спрашивают про cpu pipeline и механизмы синхронизации кешей - вы хотите работать в такой компании, когда у вас спрашивают про solid - вы не хотите работать в такой компании.
@vladimir_balun_programming
@vladimir_balun_programming 9 ай бұрын
Ну не всегда так)
@xxxvita
@xxxvita 9 ай бұрын
Задач бы посложнее на конкаренси в виде кода и решение накодить.
@sodz5144
@sodz5144 9 күн бұрын
мед для ушей....многопоточность.
@klasdtigra
@klasdtigra 8 ай бұрын
Судя по тому что сеньор не знал многих вопросов эти вопросы либо не нужны в реальной работе либо сеньор слабоват Но все же кажется скорее что это не интервью, а просто толк о программировании Если не понимать зачем эти вопросы задавать (ну часть из них) то это совершенно бесполезное интервью на котором нормальный сеньор будет выглядит бледно хотя в реальности он вполне компетентен
@rerurkful
@rerurkful 5 ай бұрын
Самое гдавное в go, за быть что есть append!!!
@xxxvita
@xxxvita 9 ай бұрын
Интересно, если сама идея и вопросы нравятся, а как собеседуемый отвечал не нравится- это лайк или дизлайк?
@rays14
@rays14 9 ай бұрын
Это - написать, что конкретно не понравилось, чтобы была польза от комментария)
@learngolang-od2qp
@learngolang-od2qp 9 ай бұрын
Дизлайк же пойдёт не собеседуемому
@xxxvita
@xxxvita 9 ай бұрын
@@learngolang-od2qp согласен.
@user-jf3iu8vi7k
@user-jf3iu8vi7k 8 ай бұрын
а давайте такие темы - редис, кафка, паттерны pub-sub, сложные sql, nosql, паттерны проектирования в ооп, аспекты, инфрастуктура, логстеш, эластик? это бы я смотрел постоянно вообще. зачем надо горутины и мьютексы под капотом спрашивать?.. планировщик, мьютексы под капотом..это учится наизусть перед собеседованием и забывается потом как ненужное.
@user-he4st2ro5h
@user-he4st2ro5h 6 ай бұрын
Потому что это база. Что ты собрался «учить» в редисе и кафке?
@MAGAVHEBRON
@MAGAVHEBRON 6 ай бұрын
Mutex в Go 3 стадийный, сначала атомиками проверяем можем ли захватить замок, этой же операцией и лочим, если можем. Потом идем и делаем банальный, но очень короткий спин лок, это позваляет в большенстве случаев не уйти на парковку. Затем опять атомиком пытаемся захватить замок. Если не вышло, паркуем рутину.
@maximdumbov9110
@maximdumbov9110 7 ай бұрын
Смешно. Они все заучивают "как устроены горутины", а как дошло до реального программирования оба мычат какую-то херь. "Проще взять спинлок", ога.
Cat story: from hate to love! 😻 #cat #cute #kitten
00:40
Stocat
Рет қаралды 13 МЛН
ISSEI funny story😂😂😂Strange World | Magic Lips💋
00:36
ISSEI / いっせい
Рет қаралды 193 МЛН
КАКОЙ ВАШ ЛЮБИМЫЙ ЦВЕТ?😍 #game #shorts
00:17
Открытое собеседование на Golang разработчика
1:42:02
Эйч Навыки — менторская программа
Рет қаралды 3,3 М.
КАРЬЕРА В АЙТИ: стать мидлом и не состариться
16:41
Александр Алексеев | Папочка Дотнета
Рет қаралды 557
Открытое собеседование на Go-разработчика | Анонс менторской программы
1:17:29
Эйч Навыки — менторская программа
Рет қаралды 28 М.
Вопросы собеседования на C# программиста
21:04
Програмысли Влог
Рет қаралды 61 М.
Антон Сергеев, «Go под капотом»
36:37
Kolesa Group
Рет қаралды 88 М.
Открытое собеседование на Junior Golang разработчика
1:34:29
Эйч Навыки — менторская программа
Рет қаралды 2,1 М.
Cat story: from hate to love! 😻 #cat #cute #kitten
00:40
Stocat
Рет қаралды 13 МЛН