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

  Рет қаралды 9,756

it-interview

it-interview

Күн бұрын

Потренироваться проходить собеседования: clck.ru/3ASssc
Курсы по программированию: clck.ru/3ASt6y
Mock-собеседование от старшего разработчика из Авито секции по языку Golang на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать!
KZfaq канал Олега: / @olezhek28go
Telegram канал Олега: t.me/olezhek28go
Telegram канал Шемистана: t.me/golang_to_way
Таймкоды:
00:00 - Знакомство
01:39 - Задача на слайсы в Go
15:25 - Задача на интерфейсы в Go
25:52 - Задача на замыкания в Go
32:53 - Задача на горутины в Go
48:31 - Отзыв о собеседовании
[[ Отзыв о кандидате ]]
Рекомендовать этого человека на следующий этап? ДА
Каковы были его технические навыки? 4/5
Каковы были его способности решать проблемы? 5/5
Каковы были его коммуникативные способности? 5/5
За время собеседования решили четыре задачи:
- На слайсы
- На интерфейсы
- На замыкание
- На горутины и хорошие практики их применения
Шемистан показал себя хорошо. Видны знания языка и опыт в разработке. Местами что-то сразу не мог понять, но догадывался применяя свои знания, а это куда ценнее, чем просто знать ответ. Также видно, что он знаком с некоторыми best practies, что помогает делать код более читаемым и расширяемым. В общении приятен и содержателен. Считаю, что уровню мидла в golang он соответствует.
Первая задача на слайсы
Всё грамотно расписал по шагам. Четко воспроизвел то, как работает слайс под капотом и уверенно применил эти знания на практике. Не попался на ловушки этой задачи и выдал правильный ответ, обосновав его.
Вторая задача на интерфейсы
Сразу догадался, что в этой задачке нам помогут интерфесы и шустро накидал решение. По ходу дела рассказал и базовую теорию об интерфейсах в golang. Однако, на более глубокий вопрос по работе с ними немного затруднился ответить, но я не считаю это чем-то критичным.
Третья задача на замыкание
Хоть в новой версии golang эта задача несколько теряет свою актуальность, спросить её было интересно. Шемистан без заметных трудностей рассказал в чём основная проблема и выдал верный ответ.
Четвертая задача на горутины и хорошие практики их применения
Это была самая сложная задача, так как требовалось не просто дать ответ что выведет программа или внести небольшие правки. Требовалось пописать значительное количество нового кода, который бы решал конкретную задачу. Шемистан сперва озвучил свои идеи, как это можно сделать и получит моё согласие принялся реализовывать задуманное. По ходу написания кода возникали мелкие опечатки или неточности, но по итогу он всё исправил и выдал качественное решение.
Рекомендации для кандидата:
Я бы посоветовал уделить внимание тонкостям языка. Штука это конечно не первостепенная и далеко не каждый день нужна, но кажется по мере развития инженера углубление знаний в своих инструментах важно. Как вариант, почитать книжку "100 ошибок в Go". В ней достаточно емко и содержательно рассказываются основные подводные камни языка и дает понимание корней некоторых best practies.
#собеседование #mockсобеседование #golang #go

Пікірлер: 69
@mchekalov
@mchekalov 4 ай бұрын
Шемистан крут, мне до такого уровня пока рости.
@Barrrash
@Barrrash 4 ай бұрын
Отлично для интервью на 50 минут! + Сразу дал расклад, что будет на интервью. + Дружелюбно. + Заинтересовал кандидата, пояснил особенности решения и поведения среды + Запросил фидбэк + Дал фидбэк - Не выделил время для вопросов от кандидата. *Если расширить интервью на 10-15 минут, то можно ещё по софт-скилам пройти. Заметно лучше, чем первое интервью на канале (см. коммент там).
@olezhek28go
@olezhek28go 3 ай бұрын
Я привык, что для софтов отдельная секция собеса есть, чтоб основательно поговорить об этом:) а так, спасибо за фидбек)
@olezhek28go
@olezhek28go 4 ай бұрын
Вай, какой красавчик в кепке😂
@chesscat553
@chesscat553 4 ай бұрын
Марти Макфлай из 1985 года.
@user-qp3lt4ps8c
@user-qp3lt4ps8c 3 ай бұрын
А какой у него кот)
@olezhek28go
@olezhek28go 3 ай бұрын
@@user-qp3lt4ps8c дааа)
@kafychannel
@kafychannel 3 ай бұрын
Great interview, thx !
@user-nl7fw3yp8p
@user-nl7fw3yp8p 4 ай бұрын
рассуждал так же в первой задаче, когда убрали третий аргумент из make, но оказалось, что это не работает при именно 5 элементах, потому что он создаётся с capacity=6. Если их 4 или 6, то capacity будет 4 и 6 соответственно. Если их 7, то cap=8, 14-14, 15-16
@Dmitry-ug1zq
@Dmitry-ug1zq 3 ай бұрын
Не все так просто, если бы было 3 элемента при добавлении, то тогда бы так и сработало, cap/len были бы по 3)
@calculaction
@calculaction 2 ай бұрын
Полезно! Жду ещё! пс: на опечатки время я бы не тратил и на кучу лишних слов о кружках и к!отиках (имхо)^^
@murad_shafii
@murad_shafii 2 ай бұрын
поддерживаю
@user-qp3lt4ps8c
@user-qp3lt4ps8c 3 ай бұрын
Олег, выздоравливай!
@olezhek28go
@olezhek28go 3 ай бұрын
спасибо)
@user-nl7fw3yp8p
@user-nl7fw3yp8p 4 ай бұрын
для третьей задачи теперь нужно всегда спрашивать, какая версия go :)
@nonesnonoperos9504
@nonesnonoperos9504 3 ай бұрын
Да, для 1.22 есть нюансики как говорится)
@user-nl7fw3yp8p
@user-nl7fw3yp8p 2 ай бұрын
так сосредоточились на очепятках, что забыли вызвать анонимную горутину в конце)
@millerov
@millerov 4 ай бұрын
Если я не ошибаюсь, в последней задаче, при выходе из функции по таймауту, горутина останется висеть и ждать завершения запроса, тратить ресурсы:) Я бы просто повесил тайм-аут на реквест без каналов и кейсов. Было бы и проще и правильнее
@pav5000
@pav5000 4 ай бұрын
Это в реальном мире, но по условию задачи было запрещено что-то менять в функции, которая запрос выполняет.
@olezhek28go
@olezhek28go 4 ай бұрын
справедливое замечание) Однако, есть пару нюансов. 1- мы не контролируем вызываемую сторону и не факт, что таймаут будет там обработан. 2 - в такой шустрый формат интервью сложно уложить продумывание всего) В целом можно в комментах поразмышлять как ещё можно докрутить код)
@user-qd7wb2ti5j
@user-qd7wb2ti5j 2 ай бұрын
@@pav5000 Странное условие, как по мне. http запрос всегда можем сделать с таймаутом или контекстом. Если прям нужно подобное решение, то пример следует подобрать по удачнее.
@JIexaPol
@JIexaPol 4 ай бұрын
В последней задаче при срабатывании ctx.Done мы получаем утечку горутин, так как после этого запись в канал ch заблокирует горутину на 91 строчке. Разве нет? Горутина, которая захочет записать результат в канал ch, уже не сможет этого сделать, если основная функция уже прочитала ctx.Done и завершилась и больше не читает ch.
@olezhek28go
@olezhek28go 4 ай бұрын
Речь идёт о ситуации, когда отмена контекста происходит одновременно с записью в канал?)
@JIexaPol
@JIexaPol 4 ай бұрын
@@olezhek28go нет, я про ситуацию, когда getDiscountWithContext завершился, поймав закрытие канала ctx.Done, и больше никто не читает канал ch, а горутина, вызвавшая getDiscount позже попытается записать туда значение.
@JIexaPol
@JIexaPol 4 ай бұрын
@@olezhek28go нет, я про то, что функция, которая пишет в канал ch, может никогда не завершится, если мы отвалились по таймауту. Ведь читателя у канала не будет, когда придет результат от getDiscount()
@user-tm5sp3qw7g
@user-tm5sp3qw7g 4 ай бұрын
@@olezhek28go тут скорее про то, что в случае таймаута мы в select попадаем в блок с ctx.Done(), возвращаем результат и из канала ch уже никто не читает, соответственно горутина с записью в такой канал будет вечно ждать, пока из канала кто-то прочитает (а уже никто не прочитает). если бы канал был с буфером, таких проблем бы можно было избежать)
@olezhek28go
@olezhek28go 4 ай бұрын
@@user-tm5sp3qw7g а понял) согласен) тут стоит ещё подумать о закрытии канала
@yami_curr
@yami_curr 14 күн бұрын
12:20 я так и не понял, как у вас а2 и а3 тут получаются разными. Я проверил сам и а2 и а3 должны выходят одинаковыми с cap = 6
@luckytima2315
@luckytima2315 3 ай бұрын
Братик ты как всегда выглядишь как булочка сладкая :p
@olezhek28go
@olezhek28go 3 ай бұрын
ахаха) пирожок)
@user-zl1zv9wi3m
@user-zl1zv9wi3m 2 ай бұрын
Вопрос к Авито. А что у вас за разработчики такие, что доказывают мне, что при передаче ссылки на структуру в метод, на новый стектрейс помимо передачи ссылки происходит еще и копирование на куче! Был у вас на собеседовании (N этапов) и на кодинге после такого не знал что ответить. А позиция у человека была далеко не старший =)
@evg1605
@evg1605 3 ай бұрын
в последней задаче - канал создать с емкостью 1 нужно - иначе горутинка утечет ))) понятно что если случай с main то все равно все завершиться, но все же... 88 строчка
@EvgeniiSuvorov
@EvgeniiSuvorov 2 ай бұрын
и как это прервет горутину?
@evg1605
@evg1605 2 ай бұрын
@@EvgeniiSuvorov не прервет, а гарантировано даст записать в канал и завершиться…
@Artem.Alalykin
@Artem.Alalykin 3 ай бұрын
Так, Олег... Кажется, у тебя был ранее канал несколько другой тематики. Мне ведь не кажется? :-)
@olezhek28go
@olezhek28go 3 ай бұрын
всё верно)
@megauspexx
@megauspexx 3 ай бұрын
Запустите код из первой задачи, вторая часть решена неправильно
@artemkas4191
@artemkas4191 4 күн бұрын
В этом и весь прикол, слайсы в go настолько через задницу спроектированы, что заранее не знаешь, где может выстрелить, поведение у них абсолютно непредсказуемое
@yushkinelizar1280
@yushkinelizar1280 4 ай бұрын
Невызванная горутина в ласт задаче *🫤*
@olezhek28go
@olezhek28go 3 ай бұрын
Эх, ускользнуло от взгляда
@user-cs3db6ct2o
@user-cs3db6ct2o 2 ай бұрын
Я б обернул select в for, потому что вместо долгого ответа получили ошибку отмены таймаута. Как была низкой стабильность метода, так и осталась.
@lauhG3
@lauhG3 Ай бұрын
зачем? ты в селекте ждешь канал который быстрее сработает. Там нету смысла обрабатывать другой код в этот момент
@savvinovan
@savvinovan 4 ай бұрын
ох, я бы сам все это решил, они вообще нихрена не понимают
@olezhek28go
@olezhek28go 4 ай бұрын
😂сто пудов
@shamistanaliyev5678
@shamistanaliyev5678 4 ай бұрын
Шамистаны в общем то крутые))
@olezhek28go
@olezhek28go 3 ай бұрын
😂однозначно
@shemistan11
@shemistan11 3 ай бұрын
Согласен😁
@shamistanaliyev5678
@shamistanaliyev5678 3 ай бұрын
@@olezhek28go ты мне как то в линкедыне писал, что твоего близкого друга зовут также как и меня, Шамистан Алиев, я сначала не поверил, но теперь я точно знаю, что это правда 😂😂
@olezhek28go
@olezhek28go 3 ай бұрын
@@shamistanaliyev5678 да, точно:)
@mikemerinoff
@mikemerinoff 4 ай бұрын
- Найди опечатку в своем коде * засаживает еще две опечатки, пока искал *
@olezhek28go
@olezhek28go 4 ай бұрын
случается)
@user-zm7bk8ri3y
@user-zm7bk8ri3y Ай бұрын
без очепаток никуда
@artemkas4191
@artemkas4191 4 күн бұрын
Классика - исправил 1 баг, получил 10 новых багов😂
@user-xt2jl1gs8i
@user-xt2jl1gs8i 4 ай бұрын
А разве горутина не продолжит висеть в последней задаче?
@JIexaPol
@JIexaPol 4 ай бұрын
продолжит
@Kotl1n
@Kotl1n 4 ай бұрын
А на должность SRE/Devops в avito алгоритмы спрашивают?
@shemistan11
@shemistan11 3 ай бұрын
Именно алгоритмы вроде нет, но это не точно)
@mchekalov
@mchekalov 4 ай бұрын
А где традиционное, в одной из задач ошибка, найдите ее?
@olezhek28go
@olezhek28go 4 ай бұрын
На все время не хватило, но если есть варианты кидай сюда:)
@Varkatel
@Varkatel 4 ай бұрын
ошибка, что константу внизу переименовал, а вверху не
@olezhek28go
@olezhek28go 4 ай бұрын
@@Varkatel ага и ещё лучше, чтоб там была в одном месте русская с, а в другом английская)
@user-yl1nt9jf8b
@user-yl1nt9jf8b 3 ай бұрын
Можете еще mock-собеседование было на языке Java
@artartov2018
@artartov2018 3 ай бұрын
2 дкнь изучаю Го, изи решил все задачи! )))
@user-ln2ft2mo3c
@user-ln2ft2mo3c 4 ай бұрын
Красавчик к кепке!, во первых задачи - полное фУфлЕ, во-вторых если ты картавый щупленький малыш как на картинке, то ты вызвал у меня чувство недоумения и сострадания, в третьих твои придирки к опечаткам выдают в тебе чувство собственной неуверенности
@olezhek28go
@olezhek28go 3 ай бұрын
Так все так, я забитый маменькин сынок и вылез в интернет, чтобы раздражать таких как ты:) Выходит на собес или зассал?😂
Why You Should Always Help Others ❤️
00:40
Alan Chikin Chow
Рет қаралды 115 МЛН
Countries Treat the Heart of Palestine #countryballs
00:13
CountryZ
Рет қаралды 28 МЛН
Как быстро замутить ЭлектроСамокат
00:59
ЖЕЛЕЗНЫЙ КОРОЛЬ
Рет қаралды 14 МЛН
Задачка с реального Golang собеса 2023: ВЗРЫВ МОЗГА!
7:48
Почему ты НЕ СТАНЕШЬ тестировщиком в 2024 году?
11:15
Горящий Тестер Антон Дуенин
Рет қаралды 6 М.
Собеседование в IT
3:39
Воинствующие Аметисты
Рет қаралды 2,1 МЛН
Антон Сергеев, «Go под капотом»
36:37
Kolesa Group
Рет қаралды 90 М.
Задача из Ozon: Golang собеседование
18:20
Олег Козырев
Рет қаралды 20 М.
Открытое собеседование на Go-разработчика | Навыки
2:01:31
Эйч Навыки — менторская программа
Рет қаралды 34 М.
Mock-собеседование по Go от Team Lead Ozon
48:28
it-interview
Рет қаралды 2,5 М.