Задача из Ozon: Golang собеседование

  Рет қаралды 29,172

Oleg Kozyrev - life in IT

Oleg Kozyrev - life in IT

Күн бұрын

Пікірлер: 164
@Erdaulet100
@Erdaulet100 10 ай бұрын
Олег вырост, когда-то смотрел собеседование на middle разработка, а уже ведущий разраб и сам уже контент пилит)
@olezhek28go
@olezhek28go 10 ай бұрын
Как говорится: «все течет, все изменяется»
@Halatam610
@Halatam610 8 ай бұрын
Ждём курсы )))
@tendz1n
@tendz1n 3 ай бұрын
@@olezhek28go если у меня не было опыта в других языках. что бы вы советовали для бекенда учить нод джс или все же го?
@ampership
@ampership 10 ай бұрын
Очень понравился стиль изложения, и задачка интересная. Хотелось бы видеть еще подобные видео с Гошными премудростями )
@olezhek28go
@olezhek28go 10 ай бұрын
Спасибо:))) думаю еще будет
@fictusaurum
@fictusaurum 3 ай бұрын
Скоро мое первое техническое собеседование на разработчика go ,недавно решал эту задачу ,решил ,но после вашего объяснения подчеркнул много нового для себя и все стало гораздо понятнее ! Посмотрел на одном дыхании в 5 утра и вместо усталости или сонливости только больше загорелся всем этим ,спасибо !
@olezhek28go
@olezhek28go 3 ай бұрын
Как здорово!) Удачи на собесвх)
@ghvddacvasfxghefc3988
@ghvddacvasfxghefc3988 Жыл бұрын
for range возвращает index, value. Если запрашиваем одну переменную, то индекс. Поэтому 0,1,2,3,4
@olezhek28go
@olezhek28go Жыл бұрын
верно)))
@aleksanderpeshkin2266
@aleksanderpeshkin2266 6 ай бұрын
Покажи конечный продукт где такое применяется с горктинами и каналами !! А то весь Ютуб показывает код , а где это работает и какую пользу несёт не ясно . Чтобы понимать зачем вообще такое спрашивают
@maxtheguy9783
@maxtheguy9783 5 ай бұрын
@@aleksanderpeshkin2266 без разницы от того понимаем мы или нет зачем такое спрашивают - спрашивать все равно будут) и если хочешь устроиться - знать должен
@СергейМарущенко-р6н
@СергейМарущенко-р6н 3 ай бұрын
@@aleksanderpeshkin2266 многие вещи, которые спрашивают на собесах, нужно знать только для того, чтобы отвечать на вопросы на собесах
@xinitru
@xinitru 3 күн бұрын
@@aleksanderpeshkin2266 спрашивают, чтобы показать кандидату, что он нифига не знает, и дать меньше денег.
@egesihora4761
@egesihora4761 Жыл бұрын
Олег объясняет как боженька. Так чётко и просто всё разложил, спасибо!
@olezhek28go
@olezhek28go Жыл бұрын
Спасибо, рад что понравилось:)
@Torbjorn-ph7rt
@Torbjorn-ph7rt 2 ай бұрын
Спасибо, очень полезный разбор, лайк подписка телега все дела. По ходу просмотра ставил на паузу сразу после вопроса и отвечал, потом сверялся с правильным ответом.
@rasulikv
@rasulikv Жыл бұрын
очень понравился стиль изложения, поэтому было бы круто увидеть больше видеo про подобные тонкости🙂
@olezhek28go
@olezhek28go Жыл бұрын
Спасибо:) буду стараться делать новые видео
@АнтонДойников-р3с
@АнтонДойников-р3с Жыл бұрын
Очень классный формат, хочется больше таких примеров) Прикольно что сначала можно было попробовать самому решить задачу, а потом увидеть где не прав)
@olezhek28go
@olezhek28go Жыл бұрын
Спасибо) думаю буду периодически делать такие ролики
@SHALfEY088
@SHALfEY088 Жыл бұрын
Требуем больше познавательных роликов!
@olezhek28go
@olezhek28go Жыл бұрын
Если получится, то в эти выходные буду снимать :)
@l1mejkeee628
@l1mejkeee628 2 ай бұрын
Хотел бы добавить, что в Go 1.22 изначальное написание будет именно 0,1,2,3,4 (в рандомном порядке) как это и ожидается.)
@olezhek28go
@olezhek28go 2 ай бұрын
Все так, я это в ролике в какой-то момент упомянул:)
@spruslaks26
@spruslaks26 9 ай бұрын
Thanks for detailed explanation
@olezhek28go
@olezhek28go 9 ай бұрын
Did you read subs?) Is it helpful?
@spruslaks26
@spruslaks26 9 ай бұрын
I understand Russian, I just have difficulties with writing, so I did not use subs. @@olezhek28go
@olezhek28go
@olezhek28go 9 ай бұрын
Interesting:) Where are you from?)
@Torbjorn-ph7rt
@Torbjorn-ph7rt 2 ай бұрын
13:10 второй вариант каунтер прописанный снаружи рутин увеличивать внутри рутин. Либо передавать его по ссылке, либо создать в области видимости рутины. Но тогда надо мутексами блокировать запись другими рутинами, а потом вывести и разблокировать. В этом случае выведет по порядку, и это самый хороший исход.
@ЯнШтундер
@ЯнШтундер 10 ай бұрын
Формат отличный. Покачали задачу. Так намного интереснее
@olezhek28go
@olezhek28go 10 ай бұрын
Спасибо, рад что зашло:)
@artemkashipov9865
@artemkashipov9865 8 ай бұрын
по поводу первого вопроса все будет работать абсолютно также как и на нескольких ядрах, никакой разницы нет с точки зрения планировщика. 4 выводится первой потому что у нее по сути кеш прогрет больше всего. там вроде как есть стек размером в один как раз для этого, чтобы брать оттуда задачи первыми. Правильно?)
@olezhek28go
@olezhek28go 8 ай бұрын
Ага, все так)
@localghost09
@localghost09 Жыл бұрын
респект за инфу, про то что в замыкания по прокидываются переменные, не знал, прокидывал всегда все через аргументы функции
@olezhek28go
@olezhek28go Жыл бұрын
Круто, что узнал что-то новое:))
@victorklimov5254
@victorklimov5254 Жыл бұрын
Такое поведение (4, 0, 1, 2, 3) повторяется. У меня предположение, что горутины с 0 по 3 ставятся в локальную очередь. А горутина с 4-кой ставится в LIFO часть глобальной очереди и оттуда и исполняется первой (потому что она уже есть в кэше процессора), а уже за ней те, что локальной очереди.
@olezhek28go
@olezhek28go Жыл бұрын
Полагаю так и есть:) кстати, случаем нет статейки про это под рукой? а то я этот дивный факт знаю, но вот пытался статейку найти, чтоб кидать людям и обычно просто про очередь упрощенно пишут
@victorklimov5254
@victorklimov5254 Жыл бұрын
@@olezhek28go постарался поискать где я эту информацию взял, но не нашел сходу
@waffleboot
@waffleboot Жыл бұрын
Размер локальной очереди 256. А так гуглить runnext, это поле у P. Новые горутины получают приоритет, при этом используют остаток временного слота горутины-создателя. Каждый go stmt забрасывает новую горутину в runnext и шедулер возьмет сначала горутину из runnext и только потом начнет разгребать локальную очередь.
@johnsc4521
@johnsc4521 Жыл бұрын
На русском я не находил ни одной толковой статьи. Есть на английском. Можно почитать с браузерным переводчиком. Только тутуб комментарии с ссылками не пропускает.
@olezhek28go
@olezhek28go Жыл бұрын
@johnsc4521 странно, что ссылки не пропускает, вроде должен
@svetogor777
@svetogor777 4 ай бұрын
Супер!! Слов нет!!
@olezhek28go
@olezhek28go 4 ай бұрын
Рад, что понравилось))
@wqwwsqwsqess
@wqwwsqwsqess 11 ай бұрын
1)горутины не параллельны, а конкуренты, то бишь рантайм под коробкой решает как переключаться между ними, пока одна горутина спит другая работает 2)мы берём индексы слайса, п не сами значения, поэтому такое и поведение
@olezhek28go
@olezhek28go 11 ай бұрын
1) ну врядли на одном принте будет какое-то переключение между горутинами
@rmwk991
@rmwk991 Жыл бұрын
Спасибо, и формат супер и было полезно. Пожалуйста, не останавливайся!) Меня на собесе ещё спрашивали как оставляя горутины сделать, чтобы числа выводились последовательно и желательно было набросать и объяснить пару вариантов
@olezhek28go
@olezhek28go Жыл бұрын
Спасибо:) и какие варики в голову пришли?
@rmwk991
@rmwk991 11 ай бұрын
​@@olezhek28go через каналы или wg.Wait() поставить в конец цикла
@Argon-X
@Argon-X 10 ай бұрын
​@@olezhek28go мне кажется тут можно канал использовать и читать из него числа
@soundcloudlover
@soundcloudlover Жыл бұрын
будут ли ролики по внутрянкам го? типа работа gc, аллокаторы памяти, планировщик горутин и тд
@olezhek28go
@olezhek28go Жыл бұрын
Все может быть, но пока точно ответить не могу)
@MikhailRumyantsev-r1n
@MikhailRumyantsev-r1n 10 ай бұрын
Чтоб в выводе было 1-5, надо так: for _, i := range
@olezhek28go
@olezhek28go 10 ай бұрын
Верно!:)
@MikhailRumyantsev-r1n
@MikhailRumyantsev-r1n 10 ай бұрын
@@olezhek28go Спасибо за задачки!:) Кстати, я решил оставить в Print() вывод адреса WaitGroup. Результат меня удивил 0_o Адреса либо были разными все, либо частично были совпадения, либо все одинаковые. Вопрос: Потому ли это, что WaitGroup на стек попадает?:)
@Erdaulet100
@Erdaulet100 10 ай бұрын
Что-то не совсем понял, то есть вывод ключей или индексов слайса, дает последовательность?
@MikhailRumyantsev-r1n
@MikhailRumyantsev-r1n 10 ай бұрын
@@Erdaulet100 Привет) У слайса нет ключей (ключи есть у map). Слайс - это абстракция над массивом. У массивов и слайсов есть элементы, а у элементов есть индексы. В Go существует 2 способа пройтись по слайсу: 1) использовать обычный цикл for: for i := 0; i < len(things); i++ { things[i] = } 2) использовать цикл for range (что работает как с последовательностью в Python, но в Go это всегда либо слайс, либо массив): for i, v := range things { // i - это копия индекса текущей итерации 0...len(things)-1 // v - это копия значения элемента things по индексу i (как будто v = things[i]) } Записывать в копии i и v нет смысла в цикле for range. Они используются для чтения из них. Если нужно записать в элемент слайса в этом цикле, то, как обычно, используется запись things[i] =
@madbad1310
@madbad1310 Жыл бұрын
Очень понравилось, спасибо
@olezhek28go
@olezhek28go Жыл бұрын
Здорово!:)
@kamex3102
@kamex3102 11 ай бұрын
Спасибо, позновательно! 17:40 Можно предположить что планировкщик задач GO в любом случае использует какой то алгоритм для выбора порядка выполненния задач в отведенное ему процессорное время. И он не просто выполняет их по порядку, а например пытается "усреднить" нагрузку дергая из разных частей списка задач. 15:59 Если правильно понимаю первая переменная при исользовании range - индекс записи. ( индек, значение := range слайс) А вот почему такой вывод в 22 версии непонимаю. При планировании горутины делается снимок используемых переменных? Если выводить адрес переменной в 21 и 22 версии, наблюдается разное поведение. В 21 он в каждой горутине одинаковый. В 22 - каждый раз новый адрес. Причем как если передавать его как аргумент и если через замыкание. Не наткнулся в патч ноуте с ходу на это. Есть какой то док описывающий поведение?
@Alexey-gp7vc
@Alexey-gp7vc 11 ай бұрын
Загугли "Fixing For Loops in Go 1.22", ещё там внизу статьи есть раздел More Information с ссылками на дизайн-док и фак. А если вкратце и на пальцах - раньше переменная цикла имела областью видимости весь цикл, а теперь областью видимости будет только итерация цикла.
@mrApelsin4ikGaming
@mrApelsin4ikGaming 5 ай бұрын
не, там прикол том, что в шедулере у каждой М есть очередь фифо и одноэлементный лифо, мы в него кладем последний элемент, но и брать будем сначала из него
@victorkochkarev2576
@victorkochkarev2576 Жыл бұрын
Спасибо за рассказ о фигче loopvar.
@olezhek28go
@olezhek28go Жыл бұрын
Наконец то нашел повод попробовать:)
@victorkochkarev2576
@victorkochkarev2576 Жыл бұрын
@@olezhek28go Штука интересная, но она вызывает у меня настороженность. Уже представляю ситуации, когда девелопер пишет код и этой активированной функцией, а в билд пайплайне это причуда не активирована - и код уходит в продакшн.
@olezhek28go
@olezhek28go Жыл бұрын
С февраля это будет по дефолту в языке
@misterzurg7874
@misterzurg7874 3 ай бұрын
Олег, я крутой гоандмастер бит!
@olezhek28go
@olezhek28go 3 ай бұрын
Ееее!)))
@Torbjorn-ph7rt
@Torbjorn-ph7rt 2 ай бұрын
6:40 значит wg.Done надо делать с defer в самом начале рутины
@Mak_Sim0
@Mak_Sim0 7 ай бұрын
Привет. Мне предлодили оффер в озон. Можешь рассказать чтото про перфоманс ревью и индексацию зп? Думаю отказаться только изза этого. Начитался отзывов на дримджоб
@olezhek28go
@olezhek28go 7 ай бұрын
Напиши мне в личку в тг - olezhek28
@medall1st
@medall1st 4 ай бұрын
А можно мне такой же оффер
@Mak_Sim0
@Mak_Sim0 4 ай бұрын
@@medall1st можно. Я отказался
@saprykinzxc
@saprykinzxc 3 ай бұрын
Я правильно понял, что ответ на первую задачу примерно такой: го выбрал последнюю горутину из-за кеша, а потом выполнил остальные в последовательном порядке?
@olezhek28go
@olezhek28go 3 ай бұрын
Ага, типо того:)
@ПавелМишин-ц1в
@ПавелМишин-ц1в 2 ай бұрын
Может быть ошибка с тем что i = 5 для всех выводов актуально до какой то версии go? У меня версия 1.23 и не воспроизводится ошибка о которой вы говорите, i передаётся в горутину будто копия, чуть пошаманив выглядит так, что на каждй итерации в горутине захватывается новый указатель на i и из-за этого и не воспроизводится ошибка, будто при изменении значения i - захватывается(в замыкании) новый указатель, что не производит того эффекта, что мы ожидали (вывод 5 из каждой горутины)
@ПавелМишин-ц1в
@ПавелМишин-ц1в 2 ай бұрын
Сорян не доконца досмотрел)
@AlexMazhaika
@AlexMazhaika 2 ай бұрын
Fixing For Loops in Go 1.22
@xinitru
@xinitru 3 күн бұрын
@@AlexMazhaika так это не Fixing, это Breaking. Добавили магии и сидят довольные.
@obereg2282
@obereg2282 4 ай бұрын
Ответ на первый вопрос - параллелизма нет, но есть конкуренция. Ответ на второй вопрос: если для рэнджа указана одна переменная, то это индекс, а индексы с нуля идут
@Disorrder
@Disorrder 2 ай бұрын
13 минут мучали передачу счетчика в аргумент 🤣 восторг
@olezhek28go
@olezhek28go 2 ай бұрын
А потом такой - ну это починили уже за нас:)
@Disorrder
@Disorrder 2 ай бұрын
@@olezhek28go слишком много воды, бро
@xinitru
@xinitru 3 күн бұрын
@@olezhek28go кстати, а каким образом они это "починили"? Получается, теперь "под капотом" на каждую итерацию цикла создается свой локальный контекст с копией счетчика, который и захватывается в замыкании?
@yarbersheer8559
@yarbersheer8559 Жыл бұрын
при log.Fatal defer не вызовется, поэтому пишет log.Panic )
@olezhek28go
@olezhek28go Жыл бұрын
Как варик)
@Torbjorn-ph7rt
@Torbjorn-ph7rt 2 ай бұрын
0:40 ничего не выведет. Функция main закончится до начала вывода в го рутинах, может быть даже раньше запуска первой из них.
@Torbjorn-ph7rt
@Torbjorn-ph7rt 2 ай бұрын
7:40 нет, не всегда, в горутине может что то вечнозациклиться. Тогда вроде даже паники не будет, просто будет висеть вечно. или рутина начнёт ждать чтение/запись канала тогда поидее может быть паника и дефер таки выполнится но это не точно, надо б проверить.
@Torbjorn-ph7rt
@Torbjorn-ph7rt 2 ай бұрын
8:15, а спасибо, не знал. Теперь знаю.
@Ra1nist
@Ra1nist Жыл бұрын
Когда примерно будет старт курса по разработке микросервисов?
@olezhek28go
@olezhek28go Жыл бұрын
Второй поток сейчас заканчивается, а новый будет уже после НГ думаю
@N-zk7vw
@N-zk7vw 11 ай бұрын
Задача топ! Да, простая. Да, боянистая. Но даже на таких задачах можно завалиться.
@olezhek28go
@olezhek28go 11 ай бұрын
Ага, иногда люди на ней такую базу выдают)
@Alexey-gp7vc
@Alexey-gp7vc 11 ай бұрын
Стиль изложения - огонь! На Go не пишу, но почти ни с чем не ошибся. Могу только предположить, сколько тысяч человеко-лет гоферы потратили на дебаг таких ошибок)) Впрочем, этот наш простой пайтон - тоже нифига не простой)
@olezhek28go
@olezhek28go 11 ай бұрын
Спасибо:))) на самом деле многие ошибки подобные в бест практисах учтены и некоторые люди не косячат в них и даже не понимают почему ахаха
@emotional_stuff
@emotional_stuff 3 ай бұрын
От 0 до 4 потому что i это индекс элемента в слайсе. 4,0,1,2,3 потому что 4 как ты говорил в других видосах кладется сначала lifo очередь, т.к она ближе всего к контексту горутины из которой запускается.
@olezhek28go
@olezhek28go 3 ай бұрын
Все верно))
@nikitajolobov4591
@nikitajolobov4591 11 ай бұрын
На сколько известно в GO рутины легковесные (2к) и одном ядре может быть несколько рутин, поэтому параллелизм сохраняется даже с одним ядром, поэтому и вывод такой
@olezhek28go
@olezhek28go 11 ай бұрын
Все так, но горутины то в очередь последовательно кладутся)
@kidayano
@kidayano 10 ай бұрын
параллелизм невозможен на одном ядре))) ядро физически не может выполнять больше одной операции за один тик процессора
@olezhek28go
@olezhek28go 10 ай бұрын
@@kidayano всё так, если мы гипертрединг не берем в расчёт)
@saimonshaplygin7867
@saimonshaplygin7867 Жыл бұрын
интересно, автор видео согласовывал нейминг видео? не будет ли каких-либо юридических проблем, так как Олег ранее работал в Озон?
@olezhek28go
@olezhek28go Жыл бұрын
Это ж больше внимание привлечь, задачу то эту где угодно спросить могу , ибо уж очень популярная)
@sverdloff
@sverdloff 11 ай бұрын
Всё, теперь в озоне разрешили defer ?))
@olezhek28go
@olezhek28go 11 ай бұрын
А запрещали?
@retvain
@retvain Жыл бұрын
пока смотрел видео, постоянно переключался на телеграмм свой думал что мне пришло сообщение и никак не мог понять, wtf, потом как дошло)
@olezhek28go
@olezhek28go Жыл бұрын
Там реально слышно?) я че-то при монтаже не заметил(
@КириллЧе-я5ы
@КириллЧе-я5ы Жыл бұрын
Тот случай, когда основной синтаксис языка видишь быстрей, чем читаешь в учебнике🥴
@olezhek28go
@olezhek28go Жыл бұрын
Это хорошо?:)
@boriskorotaev2038
@boriskorotaev2038 8 ай бұрын
хех, а я думал алгосики спросят на го, а нет - собес как старые джава собесы, где квиз на квизе
@olezhek28go
@olezhek28go 8 ай бұрын
Ахаха алгосики в другой секции)
@TheDavBag
@TheDavBag Жыл бұрын
азазза голову ломал, откуда 0 и нет 5 угар, всем бобер кувра!
@olezhek28go
@olezhek28go Жыл бұрын
Ахаха
@ДенисОтраднов-ъ9с
@ДенисОтраднов-ъ9с 6 ай бұрын
Всё элементарно просто, 4 ядерный процессор. Поэтому и получается такая последовательность. Четвёртое ядро 1, 2,3,4
@ДенисОтраднов-ъ9с
@ДенисОтраднов-ъ9с 6 ай бұрын
Специально не смотрю комментарии. Верный ответ?
@olezhek28go
@olezhek28go 6 ай бұрын
А это на какой вопрос?) про ситуацию с го макс проц?
@nickkim9479
@nickkim9479 6 ай бұрын
Олег, можно консультацию получить у тебя, по дису например, если да то где контакт спросить?
@olezhek28go
@olezhek28go 6 ай бұрын
В телеге olezhek28
@96kw3
@96kw3 Жыл бұрын
нет тайной ложи, есть явная лажа, если задаваться вопросом назовите где может быть использован этот алгоритм на практике или в жизни, как часто этот алгоритм пользуется в проектах? а на собеседованиях обычно спрашивают то что сами в компаниях не пользуются и тогда появляется мысль может это не имеет значение от слова совсем
@olezhek28go
@olezhek28go Жыл бұрын
А вы это мнение со стороны высказываете или сами на гошке пишете?) на мой взгляд почти все аспекты языка, которые вскрывает эта задача, регулярно встречаются на практике.
@96kw3
@96kw3 Жыл бұрын
@@olezhek28go побольше практических примеров для каких целей и я Вас благодарю и целую монитор с вашим кодом
@yarbersheer8559
@yarbersheer8559 Жыл бұрын
загадки для джунов ))) кто ж так range пишет)) вопрос в догонку к GOMAXPROC(1). А какой порядок будет если мы перед wg.Wait() time.Sleep(1) добавим?) А если потом перед time.Sleep(1) добавим runtime.Gosched() ?)
@olezhek28go
@olezhek28go Жыл бұрын
Исходя из моих прикидок, кажется что такой же, но может что-то упускаю) хотя… Слип это системный вызов, стало быть впору переключить контекст, дальше идет выполнение горутин в том же порядке и даже если секунды не хватит, то маин горотина же по идее залетит в глобальную очередь и оттуда наврядли раньше успеет вычитаться чем остальные, 1 к 61 как никак) но это так мысли в слух) надо завтра поиграть
@yarbersheer8559
@yarbersheer8559 Жыл бұрын
@@olezhek28go а вот тут и есть прикол ) Если делать слип без Gosched, то вывод будет 0 1 2 3 4, а если хоть раз до этого сделать Goshed, то уже 4 01 2 3 ) Если просто порассуждать т.к. истинная причина не ясна, то получается при Sleep последний стек будет не не наших горутин, а слипа, поэтому исполнение горутин будет FIFO, а Gosched в свою очередь переключит на последнюю вызванную горутину т.е. будет 4 0 1 2 3 )
@waffleboot
@waffleboot Жыл бұрын
Получается 0,1,... Наверное потому что schedule прежде чем жертву выбрать проверяет таймеры. Видимо sleep(1) проходит слишком быстро и schedule опять выбирает main горутину в checkTimers. Можно увеличивать время сна и в какой-то момент 4 из runnext запуститься, но если таймер успеет сработать, то main горутина через checkTimers может влезть вперед local queue, в любом месте. Если Gosched добавить, то текущая горутина уйдет в конец local queue, а scheduler возьмет 4 из runnext. В данном примере с глобальной очередью вообще ничего не должно происходить, ведь capacity локальной очереди 256 + timers heap у каждого P свой. P.S. Sleep(1) это не 1 секунда, а 1 наносекунда. Duration в наносекундах. Там где duration не стоит указывать просто int, об этом 75 глава 100 Go Mistakes
@olezhek28go
@olezhek28go Жыл бұрын
Я видать вечером не заметил, что там секунда не стояла) забавно то, что с секундой все ведет себя также) я из этой предпосылки исходил
@yarbersheer8559
@yarbersheer8559 Жыл бұрын
@@olezhek28go оу... слип 1*time.Second это перебор для смены контекста) просто time.Sleep(1) ) вот такая у нас уличная магия... в рот мне ноги.
@JIexaPol
@JIexaPol Жыл бұрын
Это задача для миддла или джуна?
@olezhek28go
@olezhek28go Жыл бұрын
Да такое и на сеньора спросить могут, просто ответ разной глубины устроит и конечно эта задача будет не единственной:)
@ВалдисПельш-е4в
@ВалдисПельш-е4в Жыл бұрын
дейстивительно боянистая задача. на первом же собесе по го ее спросили)
@olezhek28go
@olezhek28go Жыл бұрын
Ага) тем и удивительнее, что еще не все научились ее решать
@metua
@metua 7 ай бұрын
а откуда взялся 0?
@olezhek28go
@olezhek28go 7 ай бұрын
С нуля же цикл)
@metua
@metua 7 ай бұрын
@@olezhek28goа точно, я подумал i это значения массива
@alexgorodecky1661
@alexgorodecky1661 Жыл бұрын
Последняя загадка настолько меня впечатлила, что я понял что не писать на голанге выбор правильный 🤨 даже JavaScript привели в чувство, по сравнению с этим вашим Го
@olezhek28go
@olezhek28go Жыл бұрын
Да на самом то деле это больше интересный момент, чем что-то важное на практике
@AkramAzizmurodov
@AkramAzizmurodov Жыл бұрын
Я ещё не понял loopvar. Что это?
@olezhek28go
@olezhek28go Жыл бұрын
это просто значение переменной окружения, которая позволяет врубить экспериментальный функционал языка) с февраля это будет в дефолтной версии языка
@it1860
@it1860 Жыл бұрын
1
@olezhek28go
@olezhek28go Жыл бұрын
поздравляю)
@luckytima2315
@luckytima2315 Жыл бұрын
Братик это хайлвл, это только учу гошку мне трудно понять что происходит =/
@olezhek28go
@olezhek28go Жыл бұрын
Придет время и все поймешь;)
@luckytima2315
@luckytima2315 Жыл бұрын
@@olezhek28go да это вообще фэйл =/ я знал питон, пришел в универ там были ++ и java, я пострадал может недели 2 и все ок стало. Java даже понравилась, начала ковырять Go, начитался комментариев “go самый простой язык ко ко” но пока мне он больше боли доставляет =/
@vp_arth
@vp_arth 8 ай бұрын
Устарело) Теперь итератор per-iteration, а не per-loop upd: а, блин, досмотрел) А загадка про конкурентность vs параллельность.
@olezhek28go
@olezhek28go 8 ай бұрын
Ахах) Загадка про один тред то?
@vp_arth
@vp_arth 8 ай бұрын
В js вообще всего один поток. И тем не менее конкурентности хватает)
@ПавелШведко-ч8г
@ПавелШведко-ч8г 10 ай бұрын
серьезно? ноги целовать за знание элементарной базы? что не так в этом мире? хотя чему тут удивляться безработному программисту с 20 летнем стажем
@olezhek28go
@olezhek28go 10 ай бұрын
Ну камон, ирония же была:)
How does the golang scheduler work? golang scheduler internals
20:00
Олег Козырев
Рет қаралды 13 М.
GOLANG СОБЕСЕДОВАНИЕ LAMODA НА 300К
1:54:35
nilchanpub
Рет қаралды 20 М.
За кого болели?😂
00:18
МЯТНАЯ ФАНТА
Рет қаралды 2,9 МЛН
Hoodie gets wicked makeover! 😲
00:47
Justin Flom
Рет қаралды 131 МЛН
New 2025 Nissan Kicks Fredericksburg, VA #QSL300193
0:40
Pohanka Nissan of Fredericksburg
Рет қаралды 17
Как работает Интернет
1:02:42
Taydvax
Рет қаралды 15 М.
Как стать ЛУЧШИМ тестировщиком: от учителя до QA-инженера в Т-Банк
1:14:20
Руслан Масленников | Подкаст "экcпириенс"
Рет қаралды 7 М.
РЕАЛЬНЫЕ ВОПРОСЫ НА СОБЕСЕДОВАНИИ ПО GOLANG
9:15
Ваня Ио про разработку
Рет қаралды 50 М.
За кого болели?😂
00:18
МЯТНАЯ ФАНТА
Рет қаралды 2,9 МЛН