Открытое собеседование на Go-разработчика | Навыки

  Рет қаралды 34,595

Эйч Навыки — менторская программа

Эйч Навыки — менторская программа

Күн бұрын

Настоящее собеседование на Middle Go разработчика: реальные вопросы, кейсы, задачи. Все происходит так, если бы кандидат пришел на собеседование в команду. Расскажем почему спрашивали именно эти вопросы и как лучше всего подготовиться к собеседованию.
Проведет интервью Александр Сахаров
- Работает в Озоне, платформа Observability, команда логирования
- Опыт разработки 5 лет, за Go последние 3 года
- Интервьюирует ребят на Junior, Middle, Senior
Чтобы получать уведомления о предстоящих открытых интервью или записаться на менторскую сессию, напишите нашему боту: t.me/skills_mentee_bot?start=...
0:00-0:43 План вебинара
0:43-01:30 Бэкграунд Дмитрия
01:30-02:32 Менторская программа
02:32-03:09 Бэкграунд собеседуемого Михаила
03:09-03:41 Бэкграунд Александра
03:41-07:48 Начало интервью. Примитивы. Что такое слайсы?
07:48-14:18 Кейсы со слайсами
14:18-16:50 Маппа. Что такое хэш-таблица?
17:05-18:20 Рассуждения про ordered map
18:20-19:00 Как правильно объявлять Маппу?
19:00-20:04 Потокобезопасность Маппы
20:04-21:40 Почему Маппу не сделали более сейфовой?
21:40- 22:39 Что ты знаешь про sync.map?
22:39 -23:34 Как объединить по смыслу Маппу и Мьютексы
23:34-24:28 Чем отличается RW Мьютекс от обычного?
24:28-25:52 Индексы. Как быстро мы что-то найдём, если будем искать по индексу?
25:52-26:20 Можно ли по слайду быстрее пройти, чем по Маппе?
26:20-27:00 Каналы. Что такое каналы?
27:00-29:18 В чем разница между буферизированными и небуферизированными каналами?
29:18-30:13 Потокобезопасность каналов. Что мы можем и что мы не можем делать?
30:13-32:05 Зыкрытые каналы. Кейсы.
32:05-33:17 Как работает Select?
33:17-37:10 Контекст данных. Какие возможности?
37:10- 38:00 На какие уровни контекста распространяется отмена?
38:00-38:17 Когда в Select выполняется Default?
38:17-40:00 Heartbeat go routine
40:00-41:00 Объектная модель. Что такое интерфейс?
41:00-42:57 Как пустой интерфейс связан с обычным?
42:57-44:32 Зачем нам нужен пустой интерфейс?
44:32-49:21 Кейсы с интерфейсами. Ошибки.
49:21-53:44 Что такое горутины? Кейсы.
53:44-54:14 Какая выгода в отличии от потоков и процессов?
54:14-55:47 Tricky question с горутинами
55:47-57:49 Сборщик мусора в Го. Название механизма сборки мусора
57:49-58:40 Livelock
58:40-01:00:00 Starvation/голодание
01:00:00-01:03:01 Конструкция defer
01:03:01-01:04:30 Матированная переменная
01:04:30-01:06:58 Кейсы с переменными
01:06:58-01:06:42 Можно ли в defer поймать панику и как её лечить? Recover
01:06:42-01:08:59 как проводить удобно тестирование?
01:08:59-01:10:06 кейс с Atomic
01:10:06-01:11:36 что такое WaitGroup? ErrorGroup?
01:11:36-01:18:13 Решение задач
01:18:13-01:19:06 Операционные системы. В чему разница между потоками и процессами?
01:19:06-01:19:34 Отличие Горутины от потока
01:19:34-01:21:57 Способы общения между процессами
01:21:57-01:46:50 Виртуальная память
01:46:50-01:24:18 контейнеризация, виртуализация
01:24:18-01:34:18 Сетевые протоколы. Кейсы
01:34:18-01:40:15 Синхронная и рассинхронная репликация. Кейсы
01:40:15-01:44:40 Фидбэк собеседования от Александра
01:44:40-01:50:28 Вопросы из чата
01:50:28-01:55:22 Менторская программа
01:55:22-02:01:25 ответы на вопросы из чата

Пікірлер: 54
@wildjoe6259
@wildjoe6259 2 жыл бұрын
Как к Вам записаться на менторскую программу? В телеге вроде тема была, но проект был еще в стадии разработки (насколько я понял). Дайте контакты кому писать?
@Skills_mentor
@Skills_mentor 2 жыл бұрын
Можете запустить нашего бота: t.me/mock_interviews_bot?start=youtube_18_05_2022 И после команды /start в меню выбрать "Менторская программа".
@wildjoe6259
@wildjoe6259 2 жыл бұрын
@@Skills_mentor Спасибо!
@tumenit
@tumenit 2 жыл бұрын
Огонь, обожаю такие видосы!
@art3a
@art3a 2 жыл бұрын
http - протокол седьмого, прикладного уровня!
@nya5551
@nya5551 2 жыл бұрын
Михаил - лучший ментор в технопарке !
@user-ll9ub4pr7r
@user-ll9ub4pr7r 10 ай бұрын
Александр лучший ментор! Профессионально проведенное интервью.
@hoffmanmilo
@hoffmanmilo Жыл бұрын
Оба несут вещи, которые не понимают - "три машинных слова". здесь у меня машинное слово 4 байта, здесь уже 8. "Есть виртуальная память, есть резидентная". Пустая структура у них стала весить 8 байт, а int стал 4 байтным (в практической задаче с горутинами и каналами)🤦‍♂
@user-mw4mt2mt1r
@user-mw4mt2mt1r Жыл бұрын
Отличная аналогия livelock
@emotional_stuff
@emotional_stuff Жыл бұрын
вот это я понимаю уровень
@akolchanov83
@akolchanov83 7 ай бұрын
Не надевайте на созвоны рубашку телесного цвета, есть большая вероятность что вас запомнят именно по ней а не то как хорошо вы знаете и как много умеете.
@get_out_it
@get_out_it 2 жыл бұрын
В вычислительной и иной программируемой технике машинным словом называется единица данных, которая выбрана естественной для данной архитектуры процессора. Каким боком вы приравняли машинные слова к струтуре слайс - непонятно.
@hoffmanmilo
@hoffmanmilo Жыл бұрын
Как бальзам на душу! Смотрю и за голову хватаюсь, оба бросаются такими терминами и не понимают что это означает. Причем у кандидата машинные слова внезапно стали иметь разный размер и интервьюер это проглотил спокойно.
@flamehowk
@flamehowk Жыл бұрын
@@hoffmanmilo Парень всего 5 лет как программирует, чему Вы удивляетесь...
@hoffmanmilo
@hoffmanmilo Жыл бұрын
@@flamehowk это нормально, что он не знает много. Меня интервьюер немного расстроил, он не поправляет его, просто соглашается. Значит сам не сильно опытней.
@user-fc8vz6hx4b
@user-fc8vz6hx4b Жыл бұрын
Миша топ - senior уровень, фундаментальные вещи знает
@MrNewtasker
@MrNewtasker Жыл бұрын
Про реализацию мап, очень слабый и непонятный ответ
@user-sq4eh9ym2s
@user-sq4eh9ym2s 9 ай бұрын
про мапы да, ответы неправильные
@xDemoNStranTx
@xDemoNStranTx 2 жыл бұрын
1.25.40 - rofl - HTTP сетевой протокол.
@mytasmic
@mytasmic 8 ай бұрын
Сначала причем интервьюируемый всё правильно сказала а потом вот это =(
@alexandrfolomkin9380
@alexandrfolomkin9380 2 жыл бұрын
задача на код решена неправильно. Канал не закрыт эт раз, второе переменная i из цикла захвачена замыканием - в результате скорее всего напчает 99 везде
@aliaksandrmazhaika
@aliaksandrmazhaika Жыл бұрын
Напечатает везде 100, хоть это немного и неожиданно, попробую объяснить: запустит горутины от 0 до 99, добавит к счетчику 1 (i станет =100) убедится что 100
@user-zd9wx7ih6c
@user-zd9wx7ih6c Жыл бұрын
Хах, точно!
@AlexeyPetushkov
@AlexeyPetushkov 5 ай бұрын
Там интересней - результат исполнения будет отличаться каждый раз, но 100-к будет больше всего. Вот в JS были б одни сотки, а здесь все таки более честная параллельность
@ahmedrapira7610
@ahmedrapira7610 2 жыл бұрын
опана ) привет
@ep4sh
@ep4sh 8 ай бұрын
В какой момент времени Go программисты стали байтоориентировнными? Только и разговоры про байты, офсеты, экономию места под микроскопом. Я ни разу не видел на собесах Ruby, как спрашивают про устройство интерпретатора или про формат метаданных в гемах. Допускаю, что живу в другом измерении.
@sweetcapitan5690
@sweetcapitan5690 8 ай бұрын
В наследство от Гугл осталось, плюс в Го перешло много байтоебов из С/С++. Но сравнение не корректное. Руби сопоставим с питоном, а го берут уже когда питон начинает душить и его не хватает, по этому имеем требования к пониманию работы на низких уровнях.
@user-ek2kr3hg7m
@user-ek2kr3hg7m 4 ай бұрын
Программирую на Go с 2015 года и вот что скажу про собесы на Go - на них вы очень редко услышите вопросы по Алгоритмы, структуры данных, CI, CS, про паттерны проектирования и конкретные технологии вроде message brokers, olap, oltp и т.д. Особенно если собеседование на сениора. Вас буду спрашивать только про рантайм, обязательно не просто как работает GC в целом, а про его трехцветный алгоритм, про то, как же все таки устроена мапа в go - на списках или целиком на массиве - это ооочень важно! Обязательно спросят про устройство интерфейса, про кооперативный или нет планировщик и т.д. Скажу, что с одной стороны, какой - то уровень IQ это определяет - а код у разработчика с более высоким уровнем IQ будет среднеарифметически лучше. С другой - это реально приводит к ситуациям, когда какой - нибудь ушлый джун за одну ночь "все перечитал" и устроился на работу синиором - реальные были кейсы, когда устраивались "сениоры" которые не знают, что такое grpc, не работали с kafka, не пользовались cubectl и не знают, что такое Makefile. К примеру, по JS такого ни разу не помню - объективно, почти всегда можно выявить реальный уровень кандидата, объективно, экосистема JS на прикладном уровне намного сложнее, чем GO - и на ровне конструкций языка и на уровне фремворков. А Go - язык для микросервисов, порог вхождения для него низкий, что касается горутин и асинхронной работы - в 95% случаев разработчикам это не нужно от слова СОВСЕМ! В работе пользовался только разве что Errgroup раскидать задачи, timeAfter пару раз для таймаута ну sync Pool разок для работы с файлами, mutex с мапой - и все! 99% работы вообще не затрагивало фичи Golang. В то время как в Js если ты не знаешь, как работает асинхронный код и паттерны работы с промисами - ты как сеньор вообще далеко не уйдешь. Тебе надо знать пару фреймворков, vanilla, DOM, promises, closure, препроцессоры вроде Typescript и т.д. - а в Go, объективно, люди от нехрен делать в рантайм лезут
@sersoftin
@sersoftin 7 ай бұрын
Вопросы уровня Джуниор.
@emotional_stuff
@emotional_stuff 4 күн бұрын
крепкий чел
@misteranderson6058
@misteranderson6058 Жыл бұрын
Ого, я полумидл оказывается
@emotional_stuff
@emotional_stuff Жыл бұрын
хотел написать в бота, получил usernamenotfound
@user-rp5ej1ui4g
@user-rp5ej1ui4g 8 ай бұрын
Уже второй раз слышу вопрос "Может ли быть ситуация, когда итерироваться по слайсу быстрее чем по мате?" Вы серьезно? в моей картине мира по слайсу практические всегда быстрее итерироваться чем по мапе, Можно же сказать что итерация по слайсу это практически итерация по массиву, непрерывному участку памяти из кеша или кучи, плюс у проца есть кеш куда могут попадать участки из этого массива и не всегда придется ходит в оперативу. А меп это намного более сложная структуа, окей изначально у нас был непрерывный участок с бакетами, но он намного сложнее устроен, есть оверхед на просмотр, плюс если много коллизий, место бакета в бакете закончилось, он начинает ссылаться на другой бакет по ссылке.
@user-ek2kr3hg7m
@user-ek2kr3hg7m 4 ай бұрын
Исходя из последующего ответа собеседуемого видно, что собеседующий явно оговорился. Он очевидно хотел сказать "когда поиск по слайсу быстрее, чем по мапе". И такая ситуация может быть т.к. поиск для мапы O(n), для слайса Ω(lg n)(не рассматривая граничный случай Ω(1). И O(n) для мапы собеседуемый назвал(100% коллизии) и Ω(lg n) для слайса (бинарный поиск или дихотомия для предварительного отсортированного слайса). На самом деле был бы хороший вопрос если бы был задан корректно, т.к. как показывает практика, процентов 70 программистов не знают ни про три уровня асимптотической сложности алгоритмов, ни про то, что поиск по слайсу можно проводить быстрее, чем за линейное время, ни про то, что поиск по мапе может быть не константный, а линейный
@user-kx4gf9ch8r
@user-kx4gf9ch8r Жыл бұрын
не очень понял про сборщик мусора в контексте джавы. На сколько я понял, в го он не не то чтобы просто нормальный(stop the world, куча потребляемой памяти и прочее), так чем же он лучше джавовского? вопрос не провокационный, просто хочется понять))
@VakaramGolang
@VakaramGolang 10 ай бұрын
Учить и учить короче ) ну оооооки
@mediazador
@mediazador Жыл бұрын
Небольшой коммент по поводу того, можно ли передавать в контексте логгер. Александр говорит, что это не очень хорошая практика. Сегодня послушал выступление Нежибицкого Ильяса из Озона, с его слов, они как раз логгер передают в контексте. Противоречие какое-то получается :) Это видимо тот случай, когда в теории все хорошо и красиво, а на практике ...
@pixel9496
@pixel9496 10 ай бұрын
это называется что в каждой команде, даже внутри одной компании, может быть все по-разному
@AndreiDikun
@AndreiDikun 6 ай бұрын
В каждой команде надо учить их религиозные убеждения. И там лидер команды будет убеждать, что именно их подход самый правильный.
@user-ek2kr3hg7m
@user-ek2kr3hg7m 4 ай бұрын
Задачу можно было и намного элегантнее через atomic решить: func main() { n := 100 var cnt atomic.Int32 ch := make(chan struct{}) for i := 0; i < n; i++ { go func(i int) { fmt.Println(i) cnt.Add(1) if int(cnt.Load()) == n { ch
@luckytima2315
@luckytima2315 2 жыл бұрын
Простите за глупый вопрос, есть смысл брать занятие с ментором, если только пока разбираюсь в базовых аспектах языка.
@wskeal86
@wskeal86 2 жыл бұрын
К менторской программе я никакого отношения не имею. Но как практикующий гошник, работавший в известных (и не очень) компаниях, отвечу, нет, не стоит. Базовые аспекты изучаются за несколько недель, максимум месяц. В этот же месяц вы прочитаете Effective Go и другие рекомендации к написанию кода на go. А более глубоко вы начнете разбираться через год full-time работы на go. Вот тогда, возможно, ментор понадобится. Поскольку всякие tricky-questions из этого собеса черпаются в не официальной доке к языку, а в доп. источниках, которые не так просто найти.
@luckytima2315
@luckytima2315 2 жыл бұрын
@@wskeal86 спасибо большое
@dmitrvy
@dmitrvy 3 ай бұрын
25:00 в го нет адресной арифметики, это грубая ошибка
@user-gp9mb5jn2w
@user-gp9mb5jn2w 2 ай бұрын
Есть, но её лучше не использовать. Через uintptr
@user-gt4vp3yr5u
@user-gt4vp3yr5u 11 күн бұрын
Ну он тут скорее не про само ее использование в го, а про непосредственно механизм доступа к i-тому элементу в реализации массивов как структуры данных. так что грубой ошибки не совершил)
@forgotten_forbidden
@forgotten_forbidden 4 ай бұрын
Что за чепуху оба прогнали про контейнеризацию и виртуализацию?
@flamehowk
@flamehowk Жыл бұрын
Понятно почему невозможно устроиться на работу... Я программирую с 1992-го, а собеседуют меня ребята, которые занимаются разработкой по 5 лет. Ну да ладно, через пару лет, когда я выпущу на рынок свой продукт и он начнет зарабатывать, возможно я еще спасибо скажу таким вот "собеседователям"...
@misteranderson6058
@misteranderson6058 Жыл бұрын
А что с собесом не так?
@flamehowk
@flamehowk Жыл бұрын
@@misteranderson6058 В сообщении выше все очевиднейшим образом сказано.
@flamehowk
@flamehowk Жыл бұрын
"В слайсе поиск за 1, и в мапе тоже за 1", "В мапе есть хэши, а слайс - он тупой...". Ну, то есть, про древовидные структуры ни один ничего не знает и как ведется поиск листьев по веткам - никто понятия не имеет... скорей всего даже не понимают - зачем вообще там хэши нужны.
@PavelAAlexeev
@PavelAAlexeev 4 ай бұрын
дЕфер, хёрт бит, ну ребята, ну блин..
@sersoftin
@sersoftin 7 ай бұрын
Зачем чел качает головой все время :D
Открытое собеседование на Go-разработчика | Анонс менторской программы
1:17:29
Эйч Навыки — менторская программа
Рет қаралды 28 М.
I wish I could change THIS fast! 🤣
00:33
America's Got Talent
Рет қаралды 128 МЛН
Русалка
01:00
История одного вокалиста
Рет қаралды 5 МЛН
Wait for the last one! 👀
00:28
Josh Horton
Рет қаралды 163 МЛН
THE POLICE TAKES ME! feat @PANDAGIRLOFFICIAL #shorts
00:31
PANDA BOI
Рет қаралды 24 МЛН
Как на самом деле устроены каналы в Golang? | Golang channels internals
41:31
Открытое собеседование на Go-разработчика
1:25:59
Эйч Навыки — менторская программа
Рет қаралды 4 М.
Масштабирование бизнеса: ловушки роста выручки
1:01:36
Открытое собеседование на Go-разработчика | Тренировочные интервью
1:08:08
Эйч Навыки — менторская программа
Рет қаралды 63 М.
Открытое собеседование на Golang разработчика
1:42:02
Эйч Навыки — менторская программа
Рет қаралды 5 М.
Mock-собеседование по Go от Team Lead Ozon
48:28
ТГК: ЛОГОВО FRIENDS #россия #чатрулетка
0:21
АлексДан
Рет қаралды 8 МЛН
How is it possible? 😅 #behindthescenes? #vfx
0:19
The Quinetto's
Рет қаралды 43 МЛН
Robber Got Robbed By Former Marine Officer #trending #heros #superman
0:13
Поймал редкий кадр🤨
0:22
FERMACHI
Рет қаралды 3,3 МЛН