it-interview
it-interview
  • 4
  • 124 676
Mock собеседование по System Design от Team Lead из Ozon
Потренироваться проходить собеседования: clck.ru/3ASssc
Курсы по программированию: clck.ru/3ASt6y
Mock-собеседование от Team Lead из Ozon секции по языку Golang на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать!
Telegram канал Олега: t.me/oo_ilin
UA-cam канал Олега: www.youtube.com/@oo_ilin
Таймкоды:
00:00 Знакомство
03:31 Начинаем проектировать URL Shortner
04:02 Сбор функциональных требований
07:53 Сбор нефункциональных требований
12:56 Схема данных и рассчет объема базы
22:42 Рассчет RPS
23:53 Рассчет пропускной способности
26:30 Высокоуровневая схема
30:45 База данных
32:28 Шардирование базы данных
37:14 API
39:09 Шардирование продолжение
41:45 Добавляем кэш
45:03 Уникальность ключей на шардах
48:13 Внешний сервис для генерации ссылок
53:13 Соединяем потоки
53:56 Поток создания
58:24 Добавляем аналитику
1:00:25 Добавляем RateLimiter
1:04:16 Возвращаемся к аналитике
1:05:13 Обсуждаем точки отказа
1:09:06 Обсуждаем идемпотентность
1:14:12 Обратная связь от Олега
1:18:10 Обратная связь от Саши
[[ Отзыв о кандидате ]]
Александр во время собеседования показал себя хорошо. Показал себя как специалист способный анализировать предметную область и способный подстраиваться под новые требования. В качестве системы для проектирования был выбран URL Shortnet (сокращатель ссылок). Кандидат собрал все требования, реализовал верхнеуровневый дизайн и постепенно углубился до компонентов. Из плюсов еще могу отметить что разделил трафик на чтение и на запись и проработал оба потока данных. Проработал систему хранения, масштабирования и отказоустойчивости.
В ходе интерью из за того что сразу не спроектировал API ошибся с выбором ключа для шардирования данных. Но после того как спроектировал две API ручки быстро сообразил в какую сторону необходимо смотреть. Так же не до конца раскрыл как именно будет генерироваться уникальная ссылка. Не определились со словарем и полным алгоритмом.
По коммуникациям приятный в общении, рассудительный. Все предположения обосновывает и рассуждает в слух, что дает понять в какую сторону движется.
Из рекомендаций можно посоветовать следить за таймингом, чаще просматривать первоначальный требования и не повторяться на тех моментах, которые уже были овучены ранее.
#собеседование #mockсобеседование
Переглядів: 950

Відео

Mock собеседование по Go (Junior) от Team Lead из Ozon
Переглядів 12 тис.2 місяці тому
Потренироваться проходить собеседования: clck.ru/3ASssc Курсы по программированию: clck.ru/3ASt6y Mock-собеседование от Team Lead из Ozon секции по языку Golang на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать! Tele...
Mock-собеседование по Go от Старшего разработчика из Авито
Переглядів 8 тис.3 місяці тому
Потренироваться проходить собеседования: clck.ru/3ASssc Курсы по программированию: clck.ru/3ASt6y Mock-собеседование от старшего разработчика из Авито секции по языку Golang на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит пор...
Mock-собеседование по алгоритмам от Team Lead из Яндекса
Переглядів 104 тис.3 місяці тому
Потренироваться проходить собеседования: clck.ru/3ASssc Курсы по программированию: clck.ru/3ASt6y Mock-собеседование от Team Lead из Яндекс алгоритмической секции на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать! UA...

КОМЕНТАРІ

  • @iFATUM88
    @iFATUM88 2 дні тому

    Прикольное интервью, но хотелось бы понять: 1. На какой уровень это интервью 2. Такого рода задачи где то применяются на практике? Какие задачи решают?

  • @OlegToropov-uj6jh
    @OlegToropov-uj6jh 4 дні тому

    Молодец хорошо держится! Красавчик!

  • @user-yd9xy3rb4x
    @user-yd9xy3rb4x 5 днів тому

    Стопэ, вторая задача это по моему easy с leetcode

  • @user-yd9xy3rb4x
    @user-yd9xy3rb4x 5 днів тому

    Я то думал там спрашивают какой то ужас, а там чет все слишком легкое

  • @user-dz6by9gb9y
    @user-dz6by9gb9y 9 днів тому

    А зачем для этой задачи SQL DB? При 100нях миллионов - миллиардах записей тотже постгрес будет существенно замедляться. И тут вовсе не нужна транзакционность и поэтому таже Mongo будет явно предпочтительнее Постгреса (хотя под SQL может что-то другое имелось в виду). Для чего эта история с заготовленными ссылками можно просто брать timestamp 4 байта + 4байта случайное число? Вероятность коллизиии минимальна c учетом 40rps на запись и решается повторной перегенерацией в случае неудачи ( вероятность коллизии 40/4 000 000 000 = 0.000001%). И про кеш совсем не очевидная история: смущает срок жизни ссылки - 10 лет, и на эти 10 лет жизни 100 запросов на ее чтение (конечно можно предположить, что пик запросов придется на какой-то короткий интервал после выдачи, но все равно использование кеша не очевидно при данных вводных). В общем мне кажется, что о многих очевидных вещах много поговорили, а про многие важные вещи, такие как выбор СУБД (как мне кажется это ключевое) не поговорили

  • @UmanIgor
    @UmanIgor 11 днів тому

    var str = "abcabcbb"; // 'abcaebac' var fn = (str = '') => { if (!str) return 0; var max = 1; for (var i = 0; i < str.length; i++) { var sub = str[i]; var n = i + 1; if (max > (str.length - i)) return max; while (n < str.length) { var ch = str[n]; if (!~sub.indexOf(ch)) { sub += ch; if (max < sub.length) max = sub.length; } n++; } } return max; }

  • @kOzae6bI4
    @kOzae6bI4 12 днів тому

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

  • @user-vr4rf3se7f
    @user-vr4rf3se7f 13 днів тому

    в вопросе с дефером где 123 и 456 вообще то в исходном задании выводится 456 а не 123

  • @Magomedrasul7
    @Magomedrasul7 16 днів тому

    Что если упадет хранилище заготовленных ссылок 200кк ? Если это inMemory хранилище, то при рестарте оно восполнится снова этими же заготовками или же будут новые заготовки ? 🤔

  • @yaroslavlymar6599
    @yaroslavlymar6599 16 днів тому

    Я был на совсем другом собесе в Яндекс. Там были задачи Хард из литкода, где не базовые алгоритмы нужно писать.

  • @ihorvodko767
    @ihorvodko767 17 днів тому

    Проблема интервалов не полностью решена с точки зрения временной сложности. 1) Создайте вектор с размером = максимальному концу всех интервалов. 2) Перебрать входные интервалы и сохранить их в векторе: позиция вектора - это начало интервала, если интервал уже существует, объединить эти два интервала. 4) Взаимодействие с вектором для обработки интервалов в соответствии с логикой видео. Временная сложность равна O(n), n - количество введенных интервалов. (нет необходимости сортировать O(n*log(n))). Сортировка подсчетом выполняется за время O(n), что делает ее асимптотически быстрее, чем алгоритмы сортировки на основе сравнения, такие как быстрая сортировка. ================================================================================================= хорошее место для практики (не стесняйтесь поставить звезду :) ) github.com/IhorVodko/Hackerrank_solutions

  • @haiwiaksbab7362
    @haiwiaksbab7362 17 днів тому

    Интервюер мямлит, вебки закрывают код

  • @noone7796
    @noone7796 23 дні тому

    26 букв, + верхний регистр + числа в 8 символах это 62^8 возможных уникальных значений. разве вероятность коллизии высокая?

    • @oo_ilin
      @oo_ilin 23 дні тому

      В вашем варианте словарь хороший и коллизий в принципе нет если генерировать ключ последовательно. Речь шла о другом. Что если взять какой-нибудь алгоритм хеширования, например MD5, то у него длина 32 символа, а сами символы это всего лишь шестнадцатиричная система: 0-9A-F. Так как наша задача сделать короткую ссылку, то если мы от md5 отрежим 8 символов, то будет очень высокая вероятность коллизии. Ну и в интервью я подталкивал Сашу на то что 8 символов это очень большое число уникальных значений и ключ можно сократить до 6 или 7 символов.

  • @noone7796
    @noone7796 23 дні тому

    Почему тут не модет быть проблема селебрити? Кто-то популярный создал ссылку и разметил ее у себя в соц. сетях, на эту одну ссылку будет очень много запросов на чтение. Кажеться интервьюируемый правильно задал вопрос.

    • @oo_ilin
      @oo_ilin 23 дні тому

      Потому что проблема селебрити в том что один человек может иметь много связей. Например много подписчиков и проблема оповестить всех о выходе нового поста. Тут ты делаешь ровно один адрес и никого не уведомляешь. Тут проблема высокого трафика, а это уже другая история.

  • @comparison9436
    @comparison9436 24 дні тому

    Чел идет на тим лида, использует сортировку и говорит скорость линейная🤦🏻 как их вообще рассматривают с такими знаниями?

  • @Miclell
    @Miclell 26 днів тому

    Как можно распинаться пол часа при решении столь лёгкой задачи то?

  • @HeczZots
    @HeczZots 27 днів тому

    в цикле будет паника если в матрице пустые массивы без элементов

  • @user-zl1zv9wi3m
    @user-zl1zv9wi3m 28 днів тому

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

  • @user-uv8ll6bl7t
    @user-uv8ll6bl7t 29 днів тому

    Во 2й задаче можно уйти от for: в store хранить актуальные позиции встреченных символов и двигать левый указатель сразу на старый + 1, если символ уже встречался и его позиция > текущего левого. Позиции всегда обновляем

  • @romanarxxy
    @romanarxxy Місяць тому

    18:19, ну я бы не сказал что 2 ответа скорее, abc, bca, cab, abc, 4 ответа, получается, разве не так?

  • @user-nl7fw3yp8p
    @user-nl7fw3yp8p Місяць тому

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

  • @dimama1551
    @dimama1551 Місяць тому

    Наш брат головами таких в школе мел с доски вытирал

  • @user-cs3db6ct2o
    @user-cs3db6ct2o Місяць тому

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

    • @lauhG3
      @lauhG3 2 дні тому

      зачем? ты в селекте ждешь канал который быстрее сработает. Там нету смысла обрабатывать другой код в этот момент

  • @young_flex3077
    @young_flex3077 Місяць тому

    16:35 ну все задачу с первой проходки не решил, в яндекс не берем

  • @young_flex3077
    @young_flex3077 Місяць тому

    6:11 Володька, что с лицом, совсем уже на юродивого стал похож со своими алгоритмами. Выйди на улицу, с детишками погуляй

  • @iamo0
    @iamo0 Місяць тому

    Досмотрел (предыдущий коммент писал посреди видео). Собеседующий хорошо видит что происходит, адекватно оценивает ситуацию, учитывает все детали и когда что-то для себя прояснил, готов двигать интервью вперед даже самостоятельно подсказывая соискателю. Очень круто и профессионально. Респект.

  • @iamo0
    @iamo0 Місяць тому

    Собеседующий дает некоторые ответы соискателю. На самом деле это не хорошо и не плохо, можно если человек запутался подтолкнуть его и смотреть на блеск в глазах, все еще понимает он контекст или мы его потеряли. Но может быть и наоборот: кто-то пролезет на энтузиазме собеседующего. Но может быть этот энтузиазм происходит из того, что ребята друг друга знают.

  • @user-je8yv6gq7o
    @user-je8yv6gq7o Місяць тому

    Это нумерология какая то что ли? Или астрология?

  • @user-fb6wy6sq6o
    @user-fb6wy6sq6o Місяць тому

    Какие map? Вектора надо использовать во второй задаче. С этими map до 100 символов алфавита вектор быстрее будет тупо из за того, что проц хотя бы закешировать значения себе сможет. В map элементы памяти по разным адресам находятся. Это очень медленно.

  • @user-cg7jr2kt4l
    @user-cg7jr2kt4l Місяць тому

    В задаче про мердж каналов мы возвращаем закрытый канал. Что нам потом делать с закрытыми каналом? На 7 строчке мы всегда будем виснуть, потому что из этого канала никто не читает. Примерно код должен выглядеть так; out := make(chan int) defer close(out) go func() { // Код записи из всех каналов в out } return out

  • @user-cg7jr2kt4l
    @user-cg7jr2kt4l Місяць тому

    Чувак вообще не понимает основы программирования и компьютер сайнс, какой ему junior ему бы ещё годик поучиться

  • @spinacker16
    @spinacker16 Місяць тому

    дали тимлиду два изяна... а мне хард впаяли с дп на 50 строк кода.

  • @tsttst3179
    @tsttst3179 Місяць тому

    Вроде на собеседованиях в яндекс задачи сильно сложнее спрашивают. Или это не так?

  • @poezdun
    @poezdun Місяць тому

    А вы никогда не задумывались - нахер так жить? Исполнять код в уме, париться над подкапотными гвоздями? Убогие гошники...

  • @funnyduck6326
    @funnyduck6326 Місяць тому

    Спасибо большое, интересное собеседование и хорошего уровня кандидат))

  • @user-zi3er5oi5y
    @user-zi3er5oi5y Місяць тому

    Именно из-за таких собеседований я каждый раз отказываю рекрутерам яндекса

  • @calculaction
    @calculaction Місяць тому

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

  • @user-qp3lt4ps8c
    @user-qp3lt4ps8c Місяць тому

    Хороший собес, лайк!

  • @gerojstalnoj9708
    @gerojstalnoj9708 Місяць тому

    Чувак пол собеса палил ответы с экрана🤣 Топ🤘

  • @user-od1cu8kz7g
    @user-od1cu8kz7g 2 місяці тому

    Николай II на собеседовании, вот чудеса!

  • @qbee1
    @qbee1 2 місяці тому

    мб я путаю, но в задании со строками при range гошка сама же в руны преобразовывает, а чтобы идти по байтам надо Итовый форик, и тащить по индексу?

  • @artartov2018
    @artartov2018 2 місяці тому

    2 дкнь изучаю Го, изи решил все задачи! )))

  • @doingwell5629
    @doingwell5629 2 місяці тому

    Это особенность данного интервью или это общая динамика го-собеседований, что собеседующего интересует только знание голанга в вакууме и не интересуют понимание операционных систем, сетей, железа, файловых систем и тд?

  • @ex24739
    @ex24739 2 місяці тому

    В 1 задачке же вместо lastItem = max... должен быть merged =..?

    • @antonantonov2995
      @antonantonov2995 6 днів тому

      lastItem[1] = max(lastItem[1], intervals[i][1]) В логике кода все правильно. Это для расширения диапазона интервала Если у нас есть последовательность [[1,3],[2,8],[2,6]...] На первой итерации lastItem - [1,3], а intervals[i] - [2,8], и назначается "больший" конец lastItem[1] = max(3, 8) // диапазон lastItem становится [1,8] На следущей итерации lastItem - [1,8], а intervals[i] - [2,6] , и назначается "больший" конец lastItem[1] = max(8, 6) // диапазон lastItem остается [1,8]

  • @TheCharlieGordon
    @TheCharlieGordon 2 місяці тому

    Т.е. в яндексе занимаются не интерпрайз программированием, а пишут алгоритмы? Ну-ну.

  • @user-tw5qq4cy6i
    @user-tw5qq4cy6i 2 місяці тому

    Сложность сортировки log(n)👍, отлично

    • @bbrother92
      @bbrother92 Місяць тому

      а какая ?

    • @user-tw5qq4cy6i
      @user-tw5qq4cy6i Місяць тому

      @@bbrother92 n log(n), сортировка

    • @alexeysharyy8623
      @alexeysharyy8623 Місяць тому

      @@bbrother92 теоретический максимум(доказывается при помощи дерева решений) в алгоритмах сортировки сравнением это Ω(n*log(n))

    • @bbrother92
      @bbrother92 Місяць тому

      @@alexeysharyy8623 ну да log(n) это бинарный поиск. а для сортировки слишком революционно. А напомните кто так знатно ошибся?

    • @dmitrysapelnikov
      @dmitrysapelnikov 10 днів тому

      Так ведь ещё и интервьюер знатно лажанулся, об этом не сказав в фидбеке.

  • @wowxd9893
    @wowxd9893 2 місяці тому

    Тимлид краш 🔥🔥🔥

  • @user-qp3lt4ps8c
    @user-qp3lt4ps8c 2 місяці тому

    Олег, выздоравливай!

  • @FuckAboutTransport
    @FuckAboutTransport 2 місяці тому

    Как показывает практика, деловые качества у разработчика или тимлида это 90% остальные 10% это кодинг. Ищите людей умеющих общаться, искать решения в сложных ситуациях а не классных кодеров. Вы продолжаете нанимать того кто вам не нужен для того что вам не нужно.

    • @trashmylife7832
      @trashmylife7832 2 місяці тому

      И что тебе эти 10% накодят? 5 лет и потом переписывать? Если не раньше

    • @user-su5by2uj6q
      @user-su5by2uj6q Місяць тому

      у тим лида согласен. А разрабу зачем эти качества?

    • @trashmylife7832
      @trashmylife7832 Місяць тому

      @@user-su5by2uj6q чтобы легаси плодить

    • @ilyag5572
      @ilyag5572 Місяць тому

      ​@@trashmylife7832 именно что в работе код занимает 10% времени, нет ничего сложного напечатать код, когда ты уже расписал себе всю задачу и её решение... остаётся только кодом вывести, так что да в работе самое важное это поиск решений, потому что все решения уже есть, их нужно только найти и применить, очень вряд-ли что ты будешь первопроходцем в какой-то из задач

    • @olegscherbakov5984
      @olegscherbakov5984 15 днів тому

      ​@@trashmylife7832открою один секрет: программирование - это одно сплошное переписывание, особенно в энтерпрайзе.

  • @FuckAboutTransport
    @FuckAboutTransport 2 місяці тому

    Найм в ИТ конечно это цирк! Да давайте наймем кучу олимпиадников которые будут писать REST интеграции между АС, круд запросы, и тысячи юнит тестов. Браво, фиаско, плакать хочется.

    • @denisshkanduk6241
      @denisshkanduk6241 2 місяці тому

      или можно перестать мыслить крайнстями, иметь базовые навыки решения алгоритмических задач в 10 строк кода не равно быть олимпиадником

    • @sdramare864
      @sdramare864 2 місяці тому

      для прохождения собесов не нужно быть олимпиадником, для 99% заданий достаточно знать 5 алгоритмов/структур - sliding window, heap, hashmap, dynamic programming и BFS/DFS. Если ты не в состоянии разобраться даже в этом, то это просто skill issue, может надо подумать о другой профессии.

    • @MrRussianuser
      @MrRussianuser 2 місяці тому

      @@sdramare864я полагаю, что суть оригинального комментария в том, что у нас спрашивают проход дерева в ширину/глубину, алгоритмы динамического программирования, а потом мы выхожим на работу и перекладываем байтики с одной Кафки в другую (ну или в базу). В этом смысле, если проводить аналогию: найм в АйТи это когда у тебя спрашивают на собеседовании как сделать операцию на сердце, а потом на работе ты собакам лапки перебинтовываешь

    • @topnick4391
      @topnick4391 2 місяці тому

      ​@@sdramare864xd

    • @user-qs5jr2jl2q
      @user-qs5jr2jl2q 2 місяці тому

      @@sdramare864small dick energy