Тёмный

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

it-interview
Подписаться 3,7 тыс.
Просмотров 14 тыс.
50% 1

Опубликовано:

 

27 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 86   
@mchekalov
@mchekalov 7 месяцев назад
Шемистан крут, мне до такого уровня пока рости.
@АлекСневар
@АлекСневар 20 дней назад
Да, пока по русскому лучше запотей.
@yami_curr
@yami_curr 3 месяца назад
12:20 я так и не понял, как у вас а2 и а3 тут получаются разными. Я проверил сам и а2 и а3 должны выходят одинаковыми с cap = 6
@calculaction
@calculaction 6 месяцев назад
Полезно! Жду ещё! пс: на опечатки время я бы не тратил и на кучу лишних слов о кружках и к!отиках (имхо)^^
@murad_shafii
@murad_shafii 6 месяцев назад
поддерживаю
@arturdumchev3055
@arturdumchev3055 Месяц назад
Вообще все равно до опечаток, никто не пишет код в блокноте
@olezhek28go
@olezhek28go 7 месяцев назад
Вай, какой красавчик в кепке😂
@chesscat553
@chesscat553 7 месяцев назад
Марти Макфлай из 1985 года.
@АлександрВасильев-в1е
@АлександрВасильев-в1е 6 месяцев назад
А какой у него кот)
@olezhek28go
@olezhek28go 6 месяцев назад
@@АлександрВасильев-в1е дааа)
@Barrrash
@Barrrash 7 месяцев назад
Отлично для интервью на 50 минут! + Сразу дал расклад, что будет на интервью. + Дружелюбно. + Заинтересовал кандидата, пояснил особенности решения и поведения среды + Запросил фидбэк + Дал фидбэк - Не выделил время для вопросов от кандидата. *Если расширить интервью на 10-15 минут, то можно ещё по софт-скилам пройти. Заметно лучше, чем первое интервью на канале (см. коммент там).
@olezhek28go
@olezhek28go 7 месяцев назад
Я привык, что для софтов отдельная секция собеса есть, чтоб основательно поговорить об этом:) а так, спасибо за фидбек)
@millerov
@millerov 7 месяцев назад
Если я не ошибаюсь, в последней задаче, при выходе из функции по таймауту, горутина останется висеть и ждать завершения запроса, тратить ресурсы:) Я бы просто повесил тайм-аут на реквест без каналов и кейсов. Было бы и проще и правильнее
@pav5000
@pav5000 7 месяцев назад
Это в реальном мире, но по условию задачи было запрещено что-то менять в функции, которая запрос выполняет.
@olezhek28go
@olezhek28go 7 месяцев назад
справедливое замечание) Однако, есть пару нюансов. 1- мы не контролируем вызываемую сторону и не факт, что таймаут будет там обработан. 2 - в такой шустрый формат интервью сложно уложить продумывание всего) В целом можно в комментах поразмышлять как ещё можно докрутить код)
@Евгений-н6р8х
@Евгений-н6р8х 5 месяцев назад
@@pav5000 Странное условие, как по мне. http запрос всегда можем сделать с таймаутом или контекстом. Если прям нужно подобное решение, то пример следует подобрать по удачнее.
@АлександрВасильев-в1е
@АлександрВасильев-в1е 6 месяцев назад
Олег, выздоравливай!
@olezhek28go
@olezhek28go 6 месяцев назад
спасибо)
@JIexaPol
@JIexaPol 7 месяцев назад
В последней задаче при срабатывании ctx.Done мы получаем утечку горутин, так как после этого запись в канал ch заблокирует горутину на 91 строчке. Разве нет? Горутина, которая захочет записать результат в канал ch, уже не сможет этого сделать, если основная функция уже прочитала ctx.Done и завершилась и больше не читает ch.
@olezhek28go
@olezhek28go 7 месяцев назад
Речь идёт о ситуации, когда отмена контекста происходит одновременно с записью в канал?)
@JIexaPol
@JIexaPol 7 месяцев назад
@@olezhek28go нет, я про ситуацию, когда getDiscountWithContext завершился, поймав закрытие канала ctx.Done, и больше никто не читает канал ch, а горутина, вызвавшая getDiscount позже попытается записать туда значение.
@JIexaPol
@JIexaPol 7 месяцев назад
@@olezhek28go нет, я про то, что функция, которая пишет в канал ch, может никогда не завершится, если мы отвалились по таймауту. Ведь читателя у канала не будет, когда придет результат от getDiscount()
@АнтроповАлексей-ы7г
@АнтроповАлексей-ы7г 7 месяцев назад
@@olezhek28go тут скорее про то, что в случае таймаута мы в select попадаем в блок с ctx.Done(), возвращаем результат и из канала ch уже никто не читает, соответственно горутина с записью в такой канал будет вечно ждать, пока из канала кто-то прочитает (а уже никто не прочитает). если бы канал был с буфером, таких проблем бы можно было избежать)
@olezhek28go
@olezhek28go 7 месяцев назад
@@АнтроповАлексей-ы7г а понял) согласен) тут стоит ещё подумать о закрытии канала
@АлександрЛобов-ю6ж
@АлександрЛобов-ю6ж 7 месяцев назад
для третьей задачи теперь нужно всегда спрашивать, какая версия go :)
@nonesnonoperos9504
@nonesnonoperos9504 6 месяцев назад
Да, для 1.22 есть нюансики как говорится)
@olezhek28go
@olezhek28go 2 месяца назад
всё верно)
@megauspexx
@megauspexx 7 месяцев назад
Запустите код из первой задачи, вторая часть решена неправильно
@artemkas4191
@artemkas4191 3 месяца назад
В этом и весь прикол, слайсы в go настолько через задницу спроектированы, что заранее не знаешь, где может выстрелить, поведение у них абсолютно непредсказуемое
@КириллПоздоровкин-г9л
@@artemkas4191надо просто в кишочках покопаться)
@luckytima2315
@luckytima2315 7 месяцев назад
Братик ты как всегда выглядишь как булочка сладкая :p
@olezhek28go
@olezhek28go 6 месяцев назад
ахаха) пирожок)
@shamistanaliyev5678
@shamistanaliyev5678 7 месяцев назад
Шамистаны в общем то крутые))
@olezhek28go
@olezhek28go 7 месяцев назад
😂однозначно
@shemistan11
@shemistan11 7 месяцев назад
Согласен😁
@shamistanaliyev5678
@shamistanaliyev5678 7 месяцев назад
@@olezhek28go ты мне как то в линкедыне писал, что твоего близкого друга зовут также как и меня, Шамистан Алиев, я сначала не поверил, но теперь я точно знаю, что это правда 😂😂
@olezhek28go
@olezhek28go 7 месяцев назад
@@shamistanaliyev5678 да, точно:)
@Elijah-xe2he
@Elijah-xe2he Месяц назад
Я не GOшник, но во 2 задаче кандидат упомянул, что под переменные для if/for выделяются отдельные области памяти и эта память живёт только в блоке if/for. Раз мы в second кладем ссылки на v и после цикла область памяти для v умрёт, откуда тогда в println возьмутся значения?
@yushkinelizar1280
@yushkinelizar1280 7 месяцев назад
Невызванная горутина в ласт задаче *🫤*
@olezhek28go
@olezhek28go 7 месяцев назад
Эх, ускользнуло от взгляда
@evg1605
@evg1605 7 месяцев назад
в последней задаче - канал создать с емкостью 1 нужно - иначе горутинка утечет ))) понятно что если случай с main то все равно все завершиться, но все же... 88 строчка
@EvgeniiSuvorov
@EvgeniiSuvorov 6 месяцев назад
и как это прервет горутину?
@evg1605
@evg1605 6 месяцев назад
@@EvgeniiSuvorov не прервет, а гарантировано даст записать в канал и завершиться…
@maratbaisultan6915
@maratbaisultan6915 Месяц назад
18:35 челик инициализирует структуру с приватным полем лол
@Artem.Alalykin
@Artem.Alalykin 6 месяцев назад
Так, Олег... Кажется, у тебя был ранее канал несколько другой тематики. Мне ведь не кажется? :-)
@olezhek28go
@olezhek28go 6 месяцев назад
всё верно)
@Kotl1n
@Kotl1n 7 месяцев назад
А на должность SRE/Devops в avito алгоритмы спрашивают?
@shemistan11
@shemistan11 7 месяцев назад
Именно алгоритмы вроде нет, но это не точно)
@olezhek28go
@olezhek28go 2 месяца назад
смотря где, думаю)
@НурмагомедТалайлов
@НурмагомедТалайлов 7 месяцев назад
Можете еще mock-собеседование было на языке Java
@artartov2018
@artartov2018 6 месяцев назад
2 дкнь изучаю Го, изи решил все задачи! )))
@IvanFedulov
@IvanFedulov 2 месяца назад
пиздишь😅
@olezhek28go
@olezhek28go 2 месяца назад
красава)
@ЕвгенийГригорьев-ш9ц
@ЕвгенийГригорьев-ш9ц 7 месяцев назад
Красавчик к кепке!, во первых задачи - полное фУфлЕ, во-вторых если ты картавый щупленький малыш как на картинке, то ты вызвал у меня чувство недоумения и сострадания, в третьих твои придирки к опечаткам выдают в тебе чувство собственной неуверенности
@olezhek28go
@olezhek28go 7 месяцев назад
Так все так, я забитый маменькин сынок и вылез в интернет, чтобы раздражать таких как ты:) Выходит на собес или зассал?😂
@АлександрЛобов-ю6ж
@АлександрЛобов-ю6ж 5 месяцев назад
так сосредоточились на очепятках, что забыли вызвать анонимную горутину в конце)
@olezhek28go
@olezhek28go 2 месяца назад
даа, есть такое)
@johnquest82
@johnquest82 18 часов назад
человек то ли сильно нервничал, иначе я не понимаю, как можно так часто делать опечатки и не видеть этого...
@savvinovan
@savvinovan 7 месяцев назад
ох, я бы сам все это решил, они вообще нихрена не понимают
@olezhek28go
@olezhek28go 7 месяцев назад
😂сто пудов
@АлександрЛобов-ю6ж
@АлександрЛобов-ю6ж 7 месяцев назад
рассуждал так же в первой задаче, когда убрали третий аргумент из make, но оказалось, что это не работает при именно 5 элементах, потому что он создаётся с capacity=6. Если их 4 или 6, то capacity будет 4 и 6 соответственно. Если их 7, то cap=8, 14-14, 15-16
@Dmitry-ug1zq
@Dmitry-ug1zq 6 месяцев назад
Не все так просто, если бы было 3 элемента при добавлении, то тогда бы так и сработало, cap/len были бы по 3)
@ТестБлаБла
@ТестБлаБла 7 месяцев назад
А разве горутина не продолжит висеть в последней задаче?
@JIexaPol
@JIexaPol 7 месяцев назад
продолжит
@МихаилКовалышев
@МихаилКовалышев 5 месяцев назад
Вопрос к Авито. А что у вас за разработчики такие, что доказывают мне, что при передаче ссылки на структуру в метод, на новый стектрейс помимо передачи ссылки происходит еще и копирование на куче! Был у вас на собеседовании (N этапов) и на кодинге после такого не знал что ответить. А позиция у человека была далеко не старший =)
@notfust
@notfust 2 месяца назад
Почему в задаче на замыкания при выводе будут обращаться к памяти b102? Что происходит с памятью, когда программа выходит из ее области видимости? Понятно, что сама физическая память никуда не исчезнет, и second как ссылалась, так и будет ссылаться на эту ячейку, пока новое значение не присвоят. Но разве нет такого, что если память была очищена, то в результате ссылаться будет не на что, она будет помечена, как нулевой указатель. Или она все-таки будет доставать мусор, который лежит по этому адресу?
@olezhek28go
@olezhek28go 2 месяца назад
там просто эскейп анализ при выходе из функции производится и если он видит, что локальный указатель кому-то нужен, например, его возвращают из функции, то он его со стека в хип переложит и ничего не перетрется)
@kafychannel
@kafychannel 7 месяцев назад
Great interview, thx !
@ПётрОлегов-о6ы
@ПётрОлегов-о6ы 5 месяцев назад
Я б обернул select в for, потому что вместо долгого ответа получили ошибку отмены таймаута. Как была низкой стабильность метода, так и осталась.
@lauhG3
@lauhG3 4 месяца назад
зачем? ты в селекте ждешь канал который быстрее сработает. Там нету смысла обрабатывать другой код в этот момент
@mchekalov
@mchekalov 7 месяцев назад
А где традиционное, в одной из задач ошибка, найдите ее?
@olezhek28go
@olezhek28go 7 месяцев назад
На все время не хватило, но если есть варианты кидай сюда:)
@Varkatel
@Varkatel 7 месяцев назад
ошибка, что константу внизу переименовал, а вверху не
@olezhek28go
@olezhek28go 7 месяцев назад
@@Varkatel ага и ещё лучше, чтоб там была в одном месте русская с, а в другом английская)
@mikemerinoff
@mikemerinoff 7 месяцев назад
- Найди опечатку в своем коде * засаживает еще две опечатки, пока искал *
@olezhek28go
@olezhek28go 7 месяцев назад
случается)
@НикаАрхипова-в7й
@НикаАрхипова-в7й 4 месяца назад
без очепаток никуда
@artemkas4191
@artemkas4191 3 месяца назад
Классика - исправил 1 баг, получил 10 новых багов😂
Далее
Собеседование в IT
3:39
Просмотров 2,2 млн
My Initial Impresson Of Go
12:39
Просмотров 91 тыс.