- 8
- 231 915
it-interview
เข้าร่วมเมื่อ 13 มิ.ย. 2022
Потренируйтесь проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать.
Mock-собеседование по Go от Team Lead из Яндекса
Потренироваться проходить собеседования: clck.ru/3ASssc
Курсы по программированию: clck.ru/3ASt6y
Mock-собеседование от Team Lead из Ozon секции по языку Golang на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать!
TH-cam канал Владимира: www.youtube.com/@vladimir_balun_programming
Таймкоды:
00:00 - Введение и условия задачи
01:58 - Обсуждения задачи
03:43 - Реализация задачи
45:45 - Реализация ретраев
58:31 - Заключение
[[ Отзыв о кандидате ]]
Рекомендовать этого человека на следующий этап? ДА
Каковы были его технические навыки? 3/5
Каковы были его способности решать проблемы? 4/5
Каковы были его коммуникативные способности? 5/5
За время собеседования успели только практически полностью написать реализацию конкурентного запроса в кластер базы данных, но на теоретические вопросы времени не хватило. Кандидат круто придумывает идеи по тому, как решать ту или иную проблему, но когда дело доходит до написания кода - начинаются определенные проблемы суета/баги/неучтенные случаи. По общению приятный, было комфортно общаться с кандидатом.
Реализация конкурентного запроса в кластер базы данных - сразу предложил использовать канал, но почему-то еще подумал и про worker pool (подсказал, что он здесь не нужен). Задал уточняющий вопрос - будет ли фиксированный или динамический набор адресов реплик. Предложил использовать дополнительный канал для ошибок. Знает про проблему с замыканием при запуске горутин из цикла (решил ее правильно). Не учел проверку на отмену контекста, что контекст может прийти уже отмененным. Долго думал над тем, где и как закрывать канал - была заметна небольшая паника и суета - предложил ему двигаться итератирвно и позже еще подсказал, что имеет смысл закрывать канал в отдельной горутине. В процессе программирования много раз сбивался и терял ход своих мыслей - возможно, связано с волнением. Не знает про неблокирующую запись в канал. С ретраями долго думал, как их сделать - дал подсказку из мира ФП, но тоже были некоторые проблемы по тому, как воплотить эту идею в жизнь до конца. По итогу посадил несколько багов, которые с подсказкой исправил, а также немного небрежно написал код (отступы поехали), но тем не менее задача была практически полностью решена.
Рекомендации для кандидата:
Я бы посоветовал кандидата больше практичоквать в программировании - писать больше кода, стараться учитывать различные пограничные случаи, а также стараться избегать багов. Помимо этого больше уделять внимания паттернам/подходам/приемам по использования тех или иных примитивов Go.
Собеседование. Golang. Golang уроки. Golang с нуля. Golang собеседование. Go новичок.
#собеседование #mockсобеседование #golang #go
Курсы по программированию: clck.ru/3ASt6y
Mock-собеседование от Team Lead из Ozon секции по языку Golang на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать!
TH-cam канал Владимира: www.youtube.com/@vladimir_balun_programming
Таймкоды:
00:00 - Введение и условия задачи
01:58 - Обсуждения задачи
03:43 - Реализация задачи
45:45 - Реализация ретраев
58:31 - Заключение
[[ Отзыв о кандидате ]]
Рекомендовать этого человека на следующий этап? ДА
Каковы были его технические навыки? 3/5
Каковы были его способности решать проблемы? 4/5
Каковы были его коммуникативные способности? 5/5
За время собеседования успели только практически полностью написать реализацию конкурентного запроса в кластер базы данных, но на теоретические вопросы времени не хватило. Кандидат круто придумывает идеи по тому, как решать ту или иную проблему, но когда дело доходит до написания кода - начинаются определенные проблемы суета/баги/неучтенные случаи. По общению приятный, было комфортно общаться с кандидатом.
Реализация конкурентного запроса в кластер базы данных - сразу предложил использовать канал, но почему-то еще подумал и про worker pool (подсказал, что он здесь не нужен). Задал уточняющий вопрос - будет ли фиксированный или динамический набор адресов реплик. Предложил использовать дополнительный канал для ошибок. Знает про проблему с замыканием при запуске горутин из цикла (решил ее правильно). Не учел проверку на отмену контекста, что контекст может прийти уже отмененным. Долго думал над тем, где и как закрывать канал - была заметна небольшая паника и суета - предложил ему двигаться итератирвно и позже еще подсказал, что имеет смысл закрывать канал в отдельной горутине. В процессе программирования много раз сбивался и терял ход своих мыслей - возможно, связано с волнением. Не знает про неблокирующую запись в канал. С ретраями долго думал, как их сделать - дал подсказку из мира ФП, но тоже были некоторые проблемы по тому, как воплотить эту идею в жизнь до конца. По итогу посадил несколько багов, которые с подсказкой исправил, а также немного небрежно написал код (отступы поехали), но тем не менее задача была практически полностью решена.
Рекомендации для кандидата:
Я бы посоветовал кандидата больше практичоквать в программировании - писать больше кода, стараться учитывать различные пограничные случаи, а также стараться избегать багов. Помимо этого больше уделять внимания паттернам/подходам/приемам по использования тех или иных примитивов Go.
Собеседование. Golang. Golang уроки. Golang с нуля. Golang собеседование. Go новичок.
#собеседование #mockсобеседование #golang #go
มุมมอง: 6 535
วีดีโอ
Mock-собеседование по C++ от Team Lead из Яндекса
มุมมอง 4.8K4 หลายเดือนก่อน
Потренироваться проходить собеседования: clck.ru/3ASssc Курсы по программированию: clck.ru/3ASt6y Mock-собеседование от Team Lead из Яндекс секции по System Design на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать! T...
Mock-собеседование по Go от Team Lead Ozon
มุมมอง 10K5 หลายเดือนก่อน
Потренироваться проходить собеседования: clck.ru/3ASssc Курсы по программированию: clck.ru/3ASt6y Mock-собеседование от Team Lead из Ozon секции по языку Golang на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать! Tele...
Mock-собеседование по System Design от Team Lead из Яндекса
มุมมอง 24K6 หลายเดือนก่อน
Потренироваться проходить собеседования: clck.ru/3ASssc Курсы по программированию: clck.ru/3ASt6y Mock-собеседование от Team Lead из Яндекс секции по System Design на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать! T...
Mock-собеседование по System Design от Team Lead из Ozon
มุมมอง 14K7 หลายเดือนก่อน
Потренироваться проходить собеседования: clck.ru/3ASssc Курсы по программированию: clck.ru/3ASt6y Mock-собеседование от Team Lead из Ozon секции по языку Golang на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать! Tele...
Mock-собеседование по Go (Junior) от Team Lead из Ozon
มุมมอง 27K9 หลายเดือนก่อน
Потренироваться проходить собеседования: clck.ru/3ASssc Курсы по программированию: clck.ru/3ASt6y Mock-собеседование от Team Lead из Ozon секции по языку Golang на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать! Tele...
Mock-собеседование по Go от Старшего разработчика из Авито
มุมมอง 16K9 หลายเดือนก่อน
Потренироваться проходить собеседования: clck.ru/3ASssc Курсы по программированию: clck.ru/3ASt6y Mock-собеседование от старшего разработчика из Авито секции по языку Golang на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит пор...
Mock-собеседование по алгоритмам от Team Lead из Яндекса
มุมมอง 129K9 หลายเดือนก่อน
Потренироваться проходить собеседования: clck.ru/3ASssc Курсы по программированию: clck.ru/3ASt6y Mock-собеседование от Team Lead из Яндекс алгоритмической секции на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать! TH...
Если абстрагироваться от необходимости шардирования. В качестве ключа для шарда может быть первый символ короткой ссылки? Или 62 шарда это много?
Ну или верхний регистр + нижний регистр одной буквы в шарде 26 шардов + все цифры допустим еще + 10
@@НиколайБондаренко-е5я в данной задаче кажется избыточно иметь 62 шарда, но опять же если бы это был сервис гугла и он сокращал ссылки для их ресурсов где бешенная посещаемость, то почему бы и нет. Но именно по символу не оочень хорошая идея, так как ссылку можно переименовать и тогда придется её перевозить, а это не очень
что за сайт используется для рисования ?
Сколько лет парню? В 40+ стали бы собеседовать и рассматривать на работу? Честно
Костыль с подписчиками в качестве совета это странно
задача на знание контекста, фигня
Чушь полная. Работа ежедневная не так строится и не так проверяется
они говорят примерно на 10:30 что var f AB = &Foo{} не преобразуется в y := f.(BC), а на самом деле преобразуется 21:00 тоже выводится 456 а не 123
1 задача sort.Slice и нет функции max 👍 я проверил код - не работает. Ласт айтем переопределяется всякий раз. Мне все это странно.
Эфемерность собеседований просто поражает, смысл их вообще тогда проводить....
Разве систему разрабатывает один человек? Смысл вообще проводить такие эфемерные собесы далекие от рабочих процессов...
- Какой DAU? - Ну пусть будет 50 миллионов Ну можно ли найти больший отрыв от реальной жизни, чем типовой сидиз собес?)
Слабенький чувачок
Вот когда есть кот, тот всё понятно)
Mock-собеседование Мэтта Деймона в яндекс 😉
его бедного по ходу заставили пройти этот собес
Здравствуйте, Олег. У меня в конце недели собеседование в Avito. Я изначально писал на PHP и мне сказали, что задачи на собеседовании будут по PHP, хотя я проходил курсы по Golang на Coursera и в Вашу компанию подавался на Golang разработчика. Вот теперь думаю к чему готовиться.
Заметьте, это мок-собес - то есть отрепетированный спектакль, который выглядит кратно лучше реального собеседования. Тут и кандидат по всем шагам прошел и не углублялся куда не надо, и слова правильные в уши залил своевременно. Интервьюер активен, а не уставший от всех этих собесов с лицом трупа. Так ЧО вас не устраивает? Если уж ИТ религия ушиблась в систем дизайн - так жрите вот такие полуторачасовые собесы в рамках многоэтапных наймов. Скорость мля ему увеличить. Очень ценный опыт, который через 3 года будет нах никому не нужен. Джуны не идите в ИТ, а то станете как эти вот: "спортсмены по собесам", "задроты по алгосам".
Во-первых мок-собес это и есть репетиция перед реальным интервью. Во-вторых кандидат готовился к собеседованию в Apple и естественно у него уже была цель и знания. В-третьих, да я действительно был выспавшийся так как это была суббота ) Ну а в-четвертых джунам не светит сисдиз. А грейдам выше приходится учиться проходить собесы с этим я согласен. Увы это реалии рынка и требования больших компаний. Но я например когда провожу данную секцию обращаю внимание не столько на технику, сколько на общую скиловость и софтовость в скупе. Оцениваю комфортно ли мне будет общаться с человеком по архитектурным вопросам, будет ли он спорить потом со мной и отстаивать свои решениях при работе в моей команде. Сможет ли он потом на архревью защитить свои фичи, которые он проектировал.
он сказал вытесняющая многозадачность и его не поправили 🤨🤌 .. там кооперативная многозадачность
А разве не совместная?
Тоесть вытесняющая многозадачность на этапе компиляции и, если не ошибаюсь, возможность явно отдать ресурс другой горутине с помощью runtime.Gosched() ?
@@Ярослав-е2ш runtime.Gosched() это пример кооперативной многозадачности ) т.к. горутина сама решает в какой момент отдать управление, в вытесняющей шедуллер может остановить поток когда посчитает нужным
как хорошо что с точки зрения "Чистой архитектуры" можно и отложить вопросы по выбору DB )
Дада 2 года коммерческой разработки, сказочник!
44:00 херня какая то... Без предметной области и понятной нагрузки - можно долго тыкать пальцем в небо... !
согласен сисдиз секция не предназначена для реального проектирования.Такие системы проектируют неделями, а то и месяцами что бы они были production ready. Но за то можно показать свой кругозор и продать себя как специалиста
@oo_ilin вчера узнал, что Пушкин был двоечником :) и настоятельно рекомендую посмотреть фильм, старенький - путеводитель по галактике!
@@IQ-120 Действительно, в свидетельстве об окончании Царскосельского лицея у Пушкина есть двойки и даже колы и нули! Но во времена учебы великого поэта эти оценки соответствовали другим характеристикам: 2 - «хорошо», 1 - «весьма хорошо». А вот 0 означал «превосходно» - такую оценку Пушкин имел по Российской и Французской словесности, а также по фехтованию.
@@oo_ilin ну, круто же :)
@@oo_ilin Ухты, титул звонкий! Не думал, что с поднебесной - челяди кто то отвечать будет... :)
Как достал этот Яндекс со своими алгоритмами на собесах
И все прочие, которые насмотрелись на гугл и его собесы. Я иногда на собесах так и говорю, когда чувствую, что не прохожу по задачам некоторым и собес идет к фейлу. Типа спортивное программирование - это конечно круто, но я нанимаюсь не олимпиады по информатике выигрывать, а решать задачи бизнесса с помощью кода. Столько разной чуши спрашивают, а по факту приходишь и штампуешь CRUDы.
Интересно было посмотреть. Спасибо!
У меня аж бошка разболелась со второй половины, я бы не выдержал такое ) Но за самокритичность +
Вот что получилось на js, первая задача: function getIntervals(intervals) { intervals = intervals.sort((a ,b) => a[0] - b[0]); const result = []; let actualInterval = intervals[0]; for (let i = 1; i < intervals.length; i++) { const current = intervals[i]; if (actualInterval[0] >= current[0] && actualInterval[0] <= current[1]) { actualInterval[0] = current[0]; } else if (actualInterval[1] >= current[0] && actualInterval[1] <= current[1]) { actualInterval[1] = current[1]; } else { result.push(actualInterval); actualInterval = current; } } return result.concat([actualInterval]); }
Я бы не смог продолжать серьёзную беседу после фразы: "опыт на кончиках пальцев" 🤣 Понимаю, что это про идиому "at your fingertips", но это характеризует гарантированную доступность чего-то, а не про практический опыт. К тому же, это уже лет 10 не buzzword.
Госпади, тимлид яндекса что ли показатель качества?
Тот случай, когда собеседуемый подготовлен теоретически, но не имеет практики. Сколько труда будет стоить грамотно организовать взаимодействие этих Image и Post services. Очевидно, что на первом этапе разработки их нужно объединить.
что это за программа в которой он рисует?
excalidraw
Я фронтендер и, стало быть, в систем дизайне понимаю больше))
Вообще задача немного нетривиальная, казалось бы, создаем канал, в горутинах с запросами по адресам пишем в канал, а в основной горутине (по сути это DistributedGet) сразу же возвращаем значение из канала (return <- valueCh). Как мы знаем, нам нужно по хорошему закрыть канал. Вроде бы можно после получения первого ответа в запросе записать в результирующий канал (valueCh) и закрыть его, но тогда по хорошему нужно правильно обрабатывать ситуацию в остальных горутинах, которые успеют выполниться до завершения контекста и попытаются записать в закрытый канал. Вроде можно забить на это (мы же получили уже быстрый ответ от одной горутины, а на этих просто забить), но как-то это некамильфо. Проверка состояния канала при записи в select нам не поможет. Тогда получается нужно использовать доп. состояние, которое будет говорить, что канал закрыт/открыт. Ниже пример сейфового канала, в который можно "писать" и после "закрытия": type SafeChannel[T any] struct { ch chan T closed atomic.Bool } func NewSafeChannel[T any]() *SafeChannel[T] { return &SafeChannel[T]{ ch: make(chan T), } } func (sc *SafeChannel[T]) Send(value T) { if sc.closed.CompareAndSwap(false, true) { sc.ch <- value close(sc.ch) } } func (sc *SafeChannel[T]) Receive() (T, bool) { value, closed := <-sc.ch return value, closed } func (sc *SafeChannel[T]) Close() { if sc.closed.CompareAndSwap(false, true) { close(sc.ch) } } func (sc *SafeChannel[T]) Closed() bool { return sc.closed.Load() }
Мб я что-то не понял, но где паника у мапы? И почему она будет если записать по несуществующему ключу? Мапа как раз отличается от массива тем, что всегда есть индекс по ключу, кроме случая nil, но тогда она расширяется автоматически под капотом
Вопрос был про nil map, то есть неинициалириванная мапа. Про записи в такую мапу возникнет runtime panic. Вы написали про запись в мапу с несуществующим ключом.
@@obi3kenobi Хорошо, спасибо, но я все равно не понимаю почему запись делает ошибку, а чтение - нет, ведь переход по 0 указателю обычно undefined behaviour
Хочется уже увидеть хотя бы одно успешное прохождение архитектурки. Пока мнение такое, что это невозможно. Всегда можно сказать, что чего-то не хватило, т.к. тема бесконечна в отличии от времени интервью. Редко сразу в голову приходят идеальные решения. Секция выглядит весьма странно. Кажется, что еë используют для снижения самооценки кандидата и сбивания зп в оффере.
Любопытно, как Кирилл стал тимлидом в Яндексе. По их меркам этого не достаточно, чтобы пройти архитектурную секцию, а на позиции дальше мидла они обязательны.
Я так понял что тимлид не Кирилл, а Владимир =)
Почему программистов на собеседованиях просят писать код, но не просят водителей водить машину, дабы удостовериться что те реально являются водителями, а не просто купили права?
у программиста нет прав
Когда компилятор в голове с ide, получается код с ошибками, мы же не роботы. 😢
Задачка конечно по мультиплексированию простенькая, не задал он вопроса сразу про то будут ли закрыты каналы, а если пришли не закрытые то можно проверить по ok закрыты ли. И сразу wait group приходит на ум, конечно, бесконечный цикл это сильно в каналах использовать. Удивительно что с таким уровнем вообще на работу его взяли. Поплыл чел
На что влияет расчет хранилища здесь? Ок, 4 ТБ всего, для Postgres это вообще не проблема где по сути безлимитные таблицы. Зачем шарды? Если делать шарды то зачем страдать на SQL БД?
Высокая доступность
@@iteospace скорее нет, для HA можно реплики использовать. Шардировние требуется для распределения нагрузки при условии что вы уперлись вертикально. 4 ТБ вертикально это вообще копейки. Надо показывать что условная Постгря упрется по памяти/CPU/сети, а иначе шарды вам не нужны особо. И при шардировании проще тогда Монгу какую-нибудь взять, что чаще всего и является решением в TinyURL.
@@iteospace и собственно Монга это терабайты данных еще до шардов, т.е. с шардами можно в принципе забыть про ограничение на обьем данных, это бесполезный расчет, нужен скорее для FinOps/бюджетирования.
@@dragvs почему бы просто не взять распределеную NoSql\New Sql типа Apache Cassandra\CocroachDb
@@iteospaceвсе три являются NoSQL и масштабируются. Как бы вы сами выбирали? Я бы добавил ScyllaDB чтобы просто уже в космос перфоманс отправить. И еще можно смело выпилить кэш за апп-серверами, ничего не дает с учетом что современные БД идут со своими мэмкэшами.
Основное это кандидат волнуется и торопится. Без API переходит к шардированию. Хотя говорит что SQL DB тут норм справляется. Дальше появляется кэш. Архитектура усложняется на глазах, но не звучит обоснований. Дальше distributed locks появляются, кандидат закопался в знакомых терминах.
Собеседование слишком простое и слабое для яндекса, на мое удивление
Собеседование в Яндекс - это литкод x3
@@ozimandias1858 да, там есть требования к знанию алгоритмов. Но и помимо того много спрашивают об особенностях языка, компилятора и т.д.. Тут же очень поверхностно, что даже на джуна не тянет
человек то ли сильно нервничал, иначе я не понимаю, как можно так часто делать опечатки и не видеть этого...
Почему всё-таки был выбран PostgreSQL для Post Service DB, а не MySQL, например? Только потому, что у собеседуемого он встречался в 80% случаев?
Потому что в яндексе нет пыхарей
@@sergeyz4591 разве MySQL используют только пыхари?
PostgreSQL мейнстрим в качестве RDBMS в энтерпрайзе.
@@dagerashenko а чем это обусловлено?
Я нифига не могу собраться на собесах, даже концепции которыми пользовался с трудом могу вспомнить и реализовать
В русском Языке нет слов "слайс" и "грейд" , не так ли ⁉️ Неужели Так лень использовать известные словрогве слова?
Golang не русская технология, как и it в целом Привыкаем к англицизмам или занимаемся более простыми занятиями
ужасная архитектура, впрочем такие вещи не делаются "за час"
playback x1.5 save your time :)
x2
X4
Чувак так и не понял, что надо было не буферезированный канал слушать на первое значение?
Проорал с этого колхозника-интервьюера. Да, нет пророка в своем отечестве...
После этого просмотра, этого интервью, яндексу бы самому пересмотреть свои собеседования)
для начала надо было выбрать архитектуру и ее обосновать. без этого путь от баз к редису выглядит попыткой заткнуть дыры выбранной архитектуры (shared database)