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

preview_player
Показать описание


Таймкоды:
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.

Собеседование. Golang. Golang уроки. Golang собеседование. Собеседование Golang. Язые программирования Go.

#собеседование #mockсобеседование #golang #go
Рекомендации по теме
Комментарии
Автор

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

Barrrash
Автор

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

mchekalov
Автор

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

nlfwypp
Автор

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

calculaction
Автор

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

yami_curr
Автор

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

nlfwypp
Автор

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

millerov
Автор

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

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

JIexaPol
Автор

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

zlzvwim
Автор

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

megauspexx
Автор

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

notfust
Автор

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

nlfwypp
Автор

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

xtjlgsi
Автор

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

csdbcto
Автор

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

luckytima
Автор

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

mchekalov
Автор

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

evg
Автор

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

Kotln
Автор

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

Artem.Alalykin
Автор

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

mikemerinoff