Mock-собеседование по Go от Старшего разработчика из Авито

Поделиться
HTML-код
  • Опубликовано: 28 ноя 2024

Комментарии • 92

  • @Barrrash
    @Barrrash 9 месяцев назад +11

    Отлично для интервью на 50 минут!
    + Сразу дал расклад, что будет на интервью.
    + Дружелюбно.
    + Заинтересовал кандидата, пояснил особенности решения и поведения среды
    + Запросил фидбэк
    + Дал фидбэк
    - Не выделил время для вопросов от кандидата.
    *Если расширить интервью на 10-15 минут, то можно ещё по софт-скилам пройти.
    Заметно лучше, чем первое интервью на канале (см. коммент там).

    • @olezhek28go
      @olezhek28go 9 месяцев назад +1

      Я привык, что для софтов отдельная секция собеса есть, чтоб основательно поговорить об этом:) а так, спасибо за фидбек)

  • @calculaction
    @calculaction 8 месяцев назад +6

    Полезно! Жду ещё!
    пс: на опечатки время я бы не тратил и на кучу лишних слов о кружках и к!отиках (имхо)^^

    • @murad_shafii
      @murad_shafii 8 месяцев назад +1

      поддерживаю

    • @arturdumchev3055
      @arturdumchev3055 3 месяца назад

      Вообще все равно до опечаток, никто не пишет код в блокноте

  • @mchekalov
    @mchekalov 9 месяцев назад +9

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

    • @АлекСневар
      @АлекСневар 2 месяца назад +2

      Да, пока по русскому лучше запотей.

  • @olezhek28go
    @olezhek28go 9 месяцев назад +31

    Вай, какой красавчик в кепке😂

  • @АлександрЛобов-ю6ж
    @АлександрЛобов-ю6ж 9 месяцев назад +7

    рассуждал так же в первой задаче, когда убрали третий аргумент из make, но оказалось, что это не работает при именно 5 элементах, потому что он создаётся с capacity=6. Если их 4 или 6, то capacity будет 4 и 6 соответственно. Если их 7, то cap=8, 14-14, 15-16

    • @Dmitry-ug1zq
      @Dmitry-ug1zq 8 месяцев назад

      Не все так просто, если бы было 3 элемента при добавлении, то тогда бы так и сработало, cap/len были бы по 3)

  • @АлександрВасильев-в1е
    @АлександрВасильев-в1е 8 месяцев назад +1

    Олег, выздоравливай!

  • @millerov
    @millerov 9 месяцев назад +6

    Если я не ошибаюсь, в последней задаче, при выходе из функции по таймауту, горутина останется висеть и ждать завершения запроса, тратить ресурсы:) Я бы просто повесил тайм-аут на реквест без каналов и кейсов. Было бы и проще и правильнее

    • @pav5000
      @pav5000 9 месяцев назад

      Это в реальном мире, но по условию задачи было запрещено что-то менять в функции, которая запрос выполняет.

    • @olezhek28go
      @olezhek28go 9 месяцев назад

      справедливое замечание) Однако, есть пару нюансов. 1- мы не контролируем вызываемую сторону и не факт, что таймаут будет там обработан. 2 - в такой шустрый формат интервью сложно уложить продумывание всего) В целом можно в комментах поразмышлять как ещё можно докрутить код)

    • @Евгений-н6р8х
      @Евгений-н6р8х 7 месяцев назад

      @@pav5000 Странное условие, как по мне. http запрос всегда можем сделать с таймаутом или контекстом. Если прям нужно подобное решение, то пример следует подобрать по удачнее.

  • @yami_curr
    @yami_curr 5 месяцев назад +9

    12:20 я так и не понял, как у вас а2 и а3 тут получаются разными. Я проверил сам и а2 и а3 должны выходят одинаковыми с cap = 6

    • @lifepainqa308
      @lifepainqa308 14 дней назад

      Согласен , кто то тут врет :D

  • @АлександрЛобов-ю6ж
    @АлександрЛобов-ю6ж 7 месяцев назад +6

    так сосредоточились на очепятках, что забыли вызвать анонимную горутину в конце)

    • @olezhek28go
      @olezhek28go 4 месяца назад +2

      даа, есть такое)

  • @KonstantinIppolitov
    @KonstantinIppolitov 25 дней назад

    Здравствуйте, Олег. У меня в конце недели собеседование в Avito. Я изначально писал на PHP и мне сказали, что задачи на собеседовании будут по PHP, хотя я проходил курсы по Golang на Coursera и в Вашу компанию подавался на Golang разработчика. Вот теперь думаю к чему готовиться.

  • @JIexaPol
    @JIexaPol 9 месяцев назад +9

    В последней задаче при срабатывании ctx.Done мы получаем утечку горутин, так как после этого запись в канал ch заблокирует горутину на 91 строчке. Разве нет?
    Горутина, которая захочет записать результат в канал ch, уже не сможет этого сделать, если основная функция уже прочитала ctx.Done и завершилась и больше не читает ch.

    • @olezhek28go
      @olezhek28go 9 месяцев назад

      Речь идёт о ситуации, когда отмена контекста происходит одновременно с записью в канал?)

    • @JIexaPol
      @JIexaPol 9 месяцев назад

      @@olezhek28go нет, я про ситуацию, когда getDiscountWithContext завершился, поймав закрытие канала ctx.Done, и больше никто не читает канал ch, а горутина, вызвавшая getDiscount позже попытается записать туда значение.

    • @JIexaPol
      @JIexaPol 9 месяцев назад

      @@olezhek28go нет, я про то, что функция, которая пишет в канал ch, может никогда не завершится, если мы отвалились по таймауту. Ведь читателя у канала не будет, когда придет результат от getDiscount()

    • @АнтроповАлексей-ы7г
      @АнтроповАлексей-ы7г 9 месяцев назад +3

      @@olezhek28go тут скорее про то, что в случае таймаута мы в select попадаем в блок с ctx.Done(), возвращаем результат и из канала ch уже никто не читает, соответственно горутина с записью в такой канал будет вечно ждать, пока из канала кто-то прочитает (а уже никто не прочитает). если бы канал был с буфером, таких проблем бы можно было избежать)

    • @olezhek28go
      @olezhek28go 9 месяцев назад

      @@АнтроповАлексей-ы7г а понял) согласен) тут стоит ещё подумать о закрытии канала

  • @АлександрЛобов-ю6ж
    @АлександрЛобов-ю6ж 9 месяцев назад +4

    для третьей задачи теперь нужно всегда спрашивать, какая версия go :)

    • @nonesnonoperos9504
      @nonesnonoperos9504 8 месяцев назад

      Да, для 1.22 есть нюансики как говорится)

    • @olezhek28go
      @olezhek28go 4 месяца назад

      всё верно)

  • @luckytima2315
    @luckytima2315 9 месяцев назад +2

    Братик ты как всегда выглядишь как булочка сладкая :p

    • @olezhek28go
      @olezhek28go 8 месяцев назад

      ахаха) пирожок)

  • @kafychannel
    @kafychannel 9 месяцев назад +1

    Great interview, thx !

  • @megauspexx
    @megauspexx 9 месяцев назад +6

    Запустите код из первой задачи, вторая часть решена неправильно

    • @artemkas4191
      @artemkas4191 5 месяцев назад +1

      В этом и весь прикол, слайсы в go настолько через задницу спроектированы, что заранее не знаешь, где может выстрелить, поведение у них абсолютно непредсказуемое

    • @КириллПоздоровкин-г9л
      @КириллПоздоровкин-г9л 3 месяца назад

      @@artemkas4191надо просто в кишочках покопаться)

  • @Elijah-xe2he
    @Elijah-xe2he 3 месяца назад

    Я не GOшник, но во 2 задаче кандидат упомянул, что под переменные для if/for выделяются отдельные области памяти и эта память живёт только в блоке if/for. Раз мы в second кладем ссылки на v и после цикла область памяти для v умрёт, откуда тогда в println возьмутся значения?

  • @notfust
    @notfust 4 месяца назад

    Почему в задаче на замыкания при выводе будут обращаться к памяти b102? Что происходит с памятью, когда программа выходит из ее области видимости? Понятно, что сама физическая память никуда не исчезнет, и second как ссылалась, так и будет ссылаться на эту ячейку, пока новое значение не присвоят. Но разве нет такого, что если память была очищена, то в результате ссылаться будет не на что, она будет помечена, как нулевой указатель. Или она все-таки будет доставать мусор, который лежит по этому адресу?

    • @olezhek28go
      @olezhek28go 4 месяца назад

      там просто эскейп анализ при выходе из функции производится и если он видит, что локальный указатель кому-то нужен, например, его возвращают из функции, то он его со стека в хип переложит и ничего не перетрется)

  • @rerurkful
    @rerurkful 15 дней назад

    Вот когда есть кот, тот всё понятно)

  • @evg1605
    @evg1605 9 месяцев назад

    в последней задаче - канал создать с емкостью 1 нужно - иначе горутинка утечет ))) понятно что если случай с main то все равно все завершиться, но все же...
    88 строчка

    • @EvgeniiSuvorov
      @EvgeniiSuvorov 8 месяцев назад

      и как это прервет горутину?

    • @evg1605
      @evg1605 8 месяцев назад +1

      @@EvgeniiSuvorov не прервет, а гарантировано даст записать в канал и завершиться…

  • @Artem.Alalykin
    @Artem.Alalykin 8 месяцев назад +1

    Так, Олег... Кажется, у тебя был ранее канал несколько другой тематики. Мне ведь не кажется? :-)

    • @olezhek28go
      @olezhek28go 8 месяцев назад

      всё верно)

  • @shamistanaliyev5678
    @shamistanaliyev5678 9 месяцев назад +2

    Шамистаны в общем то крутые))

    • @olezhek28go
      @olezhek28go 9 месяцев назад

      😂однозначно

    • @shemistan11
      @shemistan11 9 месяцев назад

      Согласен😁

    • @shamistanaliyev5678
      @shamistanaliyev5678 9 месяцев назад

      @@olezhek28go ты мне как то в линкедыне писал, что твоего близкого друга зовут также как и меня, Шамистан Алиев, я сначала не поверил, но теперь я точно знаю, что это правда 😂😂

    • @olezhek28go
      @olezhek28go 9 месяцев назад

      @@shamistanaliyev5678 да, точно:)

  • @Lokidon
    @Lokidon Месяц назад

    Когда компилятор в голове с ide, получается код с ошибками, мы же не роботы. 😢

  • @ТестБлаБла
    @ТестБлаБла 9 месяцев назад +1

    А разве горутина не продолжит висеть в последней задаче?

    • @JIexaPol
      @JIexaPol 9 месяцев назад +1

      продолжит

  • @ПётрОлегов-о6ы
    @ПётрОлегов-о6ы 7 месяцев назад

    Я б обернул select в for, потому что вместо долгого ответа получили ошибку отмены таймаута. Как была низкой стабильность метода, так и осталась.

    • @lauhG3
      @lauhG3 6 месяцев назад

      зачем? ты в селекте ждешь канал который быстрее сработает. Там нету смысла обрабатывать другой код в этот момент

  • @МихаилКовалышев
    @МихаилКовалышев 7 месяцев назад

    Вопрос к Авито.
    А что у вас за разработчики такие, что доказывают мне, что при передаче ссылки на структуру в метод, на новый стектрейс помимо передачи ссылки происходит еще и копирование на куче!
    Был у вас на собеседовании (N этапов) и на кодинге после такого не знал что ответить. А позиция у человека была далеко не старший =)

    • @erwererwrwr
      @erwererwrwr 27 дней назад

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

  • @savvinovan
    @savvinovan 9 месяцев назад +2

    ох, я бы сам все это решил, они вообще нихрена не понимают

    • @olezhek28go
      @olezhek28go 9 месяцев назад

      😂сто пудов

  • @yushkinelizar1280
    @yushkinelizar1280 9 месяцев назад +2

    Невызванная горутина в ласт задаче
    *🫤*

    • @olezhek28go
      @olezhek28go 9 месяцев назад

      Эх, ускользнуло от взгляда

  • @Kotl1n
    @Kotl1n 9 месяцев назад

    А на должность SRE/Devops в avito алгоритмы спрашивают?

    • @shemistan11
      @shemistan11 9 месяцев назад

      Именно алгоритмы вроде нет, но это не точно)

    • @olezhek28go
      @olezhek28go 4 месяца назад

      смотря где, думаю)

  • @mchekalov
    @mchekalov 9 месяцев назад +1

    А где традиционное, в одной из задач ошибка, найдите ее?

    • @olezhek28go
      @olezhek28go 9 месяцев назад

      На все время не хватило, но если есть варианты кидай сюда:)

    • @Varkatel
      @Varkatel 9 месяцев назад

      ошибка, что константу внизу переименовал, а вверху не

    • @olezhek28go
      @olezhek28go 9 месяцев назад +1

      @@Varkatel ага и ещё лучше, чтоб там была в одном месте русская с, а в другом английская)

  • @maratbaisultan6915
    @maratbaisultan6915 3 месяца назад

    18:35 челик инициализирует структуру с приватным полем лол

  • @mikemerinoff
    @mikemerinoff 9 месяцев назад

    - Найди опечатку в своем коде
    * засаживает еще две опечатки, пока искал *

    • @olezhek28go
      @olezhek28go 9 месяцев назад

      случается)

    • @НикаАрхипова-в7й
      @НикаАрхипова-в7й 6 месяцев назад

      без очепаток никуда

    • @artemkas4191
      @artemkas4191 5 месяцев назад

      Классика - исправил 1 баг, получил 10 новых багов😂

  • @johnquest82
    @johnquest82 2 месяца назад

    человек то ли сильно нервничал, иначе я не понимаю, как можно так часто делать опечатки и не видеть этого...

  • @НурмагомедТалайлов
    @НурмагомедТалайлов 9 месяцев назад

    Можете еще mock-собеседование было на языке Java

  • @artartov2018
    @artartov2018 8 месяцев назад +1

    2 дкнь изучаю Го, изи решил все задачи! )))

  • @ЕвгенийГригорьев-ш9ц
    @ЕвгенийГригорьев-ш9ц 9 месяцев назад +4

    Красавчик к кепке!, во первых задачи - полное фУфлЕ, во-вторых если ты картавый щупленький малыш как на картинке, то ты вызвал у меня чувство недоумения и сострадания, в третьих твои придирки к опечаткам выдают в тебе чувство собственной неуверенности

    • @olezhek28go
      @olezhek28go 9 месяцев назад

      Так все так, я забитый маменькин сынок и вылез в интернет, чтобы раздражать таких как ты:) Выходит на собес или зассал?😂

    • @erwererwrwr
      @erwererwrwr 2 дня назад

      вы здоровы, в принципе? а если человек инвалид без ног, но гений-программист, он что перестал быть гением программистом, у вас с логикой и рассудком в порядке всё?