Mock-собеседование по алгоритмам от Team Lead из Яндекса

Поділитися
Вставка
  • Опубліковано 2 тра 2024
  • Потренироваться проходить собеседования: it-interview.io/mock-interview
    Найти партнера для подготовки к собеседованиям: it-interview.io/free-mock-int...
    Курсы по программированию: balun.courses/?...
    Mock-собеседование от Team Lead из Яндекс алгоритмической секции на платформе it-interview.io. Потренируйтесь и вы проходить собеседования с разработчиками из ведущих компаний и получите подробный отзыв о том, на какую зарплату и грейд вы можете расчитывать, или над чем вам еще стоит поработать!
    UA-cam канал Владимира: / @vladimir_balun_progra...
    LinkedIn Владислава: / vladislav-berezovskiy-...
    Таймкоды:
    00:00 - Знакомство
    00:07 - Обсуждение решения первой задачи
    04:05 - Оценка сложности решения первой задачи
    06:13 - Реализация решения первой задачи
    12:17 - Тестирование решения первой задачи
    17:08 - Обсуждение решения второй задачи
    25:07- Оценка сложности решения второй задачи
    26:54 - Реализация решения второй задачи
    30:55 - Тестирование решения второй задачи
    35:11 - Отзыв о собеседовании
    [[ Отзыв о кандидате ]]
    Рекомендовать этого человека на следующий этап? ДА
    Каковы были его технические навыки? 4/5
    Каковы были его способности решать проблемы? 5/5
    Каковы были его коммуникативные способности? 5/5
    За время собеседования решили две задачи Merge Intervals и Longest Substring Without Repeating Characters. Кандидат отлично умеет придумывать решения для задач, после чего неплохо реализует их (допускает немного багов, которые сам затем успешно находит). Код пишет чистый и понятный, с его языком знаком отлично (код писал быстро на языке Go - никаких трудностей не возникало). Оценивать сложность решения задач умеет, но не уверенно, так как допускает небольшие ошибки в оценках. Тестировать код умеет, но учитывает не все тест кейсы. По общению приятный, было комфортно общаться с кандидатом.
    Merge Intervals - сразу задал вопрос на тему порядка интервалов, после моего ответа сразу сортировать интервалы по началу интервала (совпадающие начала интервалов решил игнорировать - сказал, что перемержатся при проходе). Рассказал про то, какой алгоритм сортировки будет использоваться. Учел случай, что интервалы с одинаковым концом и началом должны будут мержиться. На счет оценки сложности, сперва допустил ошибку и сказал, что сложность по времени будет O(n), но потом вспомнил про сортировку и оценил сложность по времени и памяти корректно. В ходе реализации предложил сразу добавлять в итоговый массив первый интервал (это упростило код). Достаточно быстро написал решение, но сдал по итогу с ошибкой. Предложил кандидату сгенерировать тест кейсы, которыми бы он тестировал свой код, но тест кейсами были покрыти не все базовые случаи (пришлось подсказать). После этого понял, что ошибка в коде будет связана с пустым слайсом интервалом, но нашел проблемное место в коде не с первого раза, но сам. По итогу, решение задачи заняло 19 минут, код получился чистый и лаконичный.
    Longest Substring Without Repeating Characters - кандидат сразу предложил использовать плавающее окно для решения задачи, но сначала с неоптимальным поиском дубликатов в подстроке (затем сам рассказал, как можно улучшить это решение). На счет оценки сложности - корректно посчитал сложность по времени, но со сложностью по памяти запутался (сказал что O(n), но когда я ему рассказал про то, что алфавит ограничен, назвал корректную сложность). Перед реализацией не уточнил ничего про регистр символов, но уже время во реализации спросил про кодировки - действительно ли там будут только ASCII символы. Достаточно быстро написал решение, но сдал по итогу с ошибкой. Предложил кандидату сгенерировать тест кейсы, которыми бы он тестировал свой код. На сгенерированных тест кейсах нашел проблему и самостоятельно исправил ее, затем еще остались ошибки, оставленные по невнимательность, на которые я ему указал. По итогу, решение задачи заняло 22 минут, код получился чистый, но с одним лишним условием. Предложил кандидату упростить код - с этим он успешно справился. На дополнительный вопрос о том, какая будет максимально-возможная длина подстроки без дубликатов - ответил корректно.
    Рекомендации для кандидата:
    Я бы посоветовал уделить внимание тестированию кода, а именно подбору тест кейсов, которые будут покрывать большинство случаев того или иного решения (так как в первой задаче были покрыты не все базовые случаи). Также следует еще немного попрактиковаться с оценкой сложности тех или иных решений (так как в обеих задачах прослеживалась определенная неуверенность в ответах и небольшие ошибки в оценках). Ну и дополнительно не забывать уделять чуть больше времени требованиям к той или иной задаче перед тем, как переходить к ее реализации (кажется, что это позволило бы избежать ошибки в первой задаче).
    #собеседование #mockсобеседование #leetcode #алгоритмы

КОМЕНТАРІ • 216

  • @iamo0
    @iamo0 21 день тому +3

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

  • @mayboroda
    @mayboroda 2 місяці тому +63

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

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

      Поэтому и похоже на подстановку)

    • @alexeypetrov8543
      @alexeypetrov8543 13 днів тому

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

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

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

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

      а какая ?

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

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

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

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

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

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

  • @FuckAboutTransport
    @FuckAboutTransport Місяць тому +50

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

    • @denisshkanduk6241
      @denisshkanduk6241 Місяць тому +8

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

    • @sdramare864
      @sdramare864 Місяць тому +10

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

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

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

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

      ​@@sdramare864xd

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

      @@sdramare864small dick energy

  • @alexandreshmelev4170
    @alexandreshmelev4170 2 місяці тому +15

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

    • @vladimir_balun_programming
      @vladimir_balun_programming 2 місяці тому +1

      Да, это было бы более оптимально, но кандидат решил именно так

    • @ourdestruction6851
      @ourdestruction6851 2 місяці тому +4

      разве?
      допустим у нас строка abcadef, к примеру
      тогда встретив на третьем символе 'a' мы бы перенесли левый указатель сразу на d, таким образом не учтя самую длинную строку без повторений - bcadef
      если я конечно вас верно поняла, поправьте если нет

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

      ​@@ourdestruction6851Если так делать то зачем вообще хранить позицию встретившегося символа? Конечно же мы перемещаем левый указатель на 1 от позиции, сохранённой в таблице. Ну и надо не забыть обновить это значение, добавив туда позицию повторно встретившегося символа

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

      a -> l,r = 0,0
      ab -> r++
      abc -> r++
      abc "a" -> repeat -> l++ -> bc
      bca -> r++
      bcad -> r++
      bcade -> r++
      bcadef -> r++ -> end(len(s)) -> return (r-l+1)

  • @Ser_UFL
    @Ser_UFL 2 місяці тому +3

    Во второй задаче при нахождении неуникального символа я бы ещё проверял длину отрезка от левого указателя до конца строки и сравнивал его с длиной текущей самой длинной строки.
    Условно: строка на 20 символов. Все символы были уникальны до 11го. Нам нет смысла дальше проверять

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

      не верно.
      Например, строка s = abcdefaglm: первые 6 символов уникальны, потому встречается символ a, отбрасываем s[0] и теперь уникальная максимальная строка "bcdefaglm" длинною 9

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

      @@user-eq7jg7os2b перечитай ещё раз, что я написал.

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

      @@user-eq7jg7os2b ок, пример с 20 и 11 был неверен. Но проверка верна

  • @Daniil_Chu
    @Daniil_Chu 2 місяці тому +19

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

    • @user-kp7qh4yb6m
      @user-kp7qh4yb6m 2 місяці тому +8

      Открой окно

    • @constantinegeist1854
      @constantinegeist1854 Місяць тому +1

      Интервал с закрытым концом. Проблема в чём?

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

      @@constantinegeist1854 В том что у интервалов концы не закрыты. Концыу закрыты у отрезков. Тоже смутило. Можно было использовать собирательное слово промежуток.

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

      @@arsenypogosov7206 не знаю, зачем в русском языке понапридумали кучи терминов, если суть одна... в английском, если не ошибаюсь, всегда просто interval: open interval, closed interval, left-open interval, right-open interval
      а так, просто дрочь на терминологию, как по мне
      хотя да, может быть недопонимание

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

      @@constantinegeist1854 в целом да, согласен с вами.

  • @nikolaifedorov685
    @nikolaifedorov685 Місяць тому +47

    Помню откликнулся на резюме из Яндекса. Созвонились с hr. Мне озвучили нужно знать алгоритмы. Я сразу сказал, что не знаю алгоритмы. Мне hr предложил подучить. Больше на вакансии от Яндекса я не откликаюсь

    • @happyzombie8588
      @happyzombie8588 Місяць тому +2

      У меня так с Тинькофф было.) Позиция была на мидл ФТ, а потом hr пишет - "Ну, тут это у нас все фулл стак, прогать умеешь? Не? Ну тогда изучай, потом напишешь"

    • @OlegYemelyanov
      @OlegYemelyanov Місяць тому +1

      @@happyzombie8588что такое фт? Фитнес тренер?😅

    • @medved3027
      @medved3027 25 днів тому +1

      Яндекс сильно выиграл от этого

    • @SaltyRain1
      @SaltyRain1 24 дні тому +4

      Ты подавался на вакансию разработчика/программиста без знания алгоритмов, и расстроился, что тебе сказали их подучить?
      А на что ты надеялся? Что на HTML будешь кодить?

    • @nikolaifedorov685
      @nikolaifedorov685 24 дні тому +11

      @@SaltyRain1 Я уже на тот момент имел опыт разработки 10 лет. Представь себе без знания алгоритмов. И естественно я не расстроился. Я теперь сам заканчиваю все собесы где меня начинают спрашивать знание алгоритмов. Тарам-парам-пам

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

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

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

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

  • @comparison9436
    @comparison9436 10 днів тому +3

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

  • @nnnabbot
    @nnnabbot 2 місяці тому +3

    Блин большое спасибо за видео. Очень понравилось. Впечатлило нахождение ошибки просто взглядом, я такого не видел еще. И вопрос , как прокачевается подрбный навык? Я понимаю что самый очевидный ответ - решай задачи 😂. Я имею ввиду может есть какая та ступенчитая система, от простых задач к сложным?

  • @maksimmityagin7242
    @maksimmityagin7242 2 місяці тому +3

    Второе задание имеет либо некорректную формулировку, либо в результате, мы должны также обработать, как уникальные подстроки “bca” и “cab”) Да, длина будет также 3, но это не обязательно будет длина подстроки “abc” )

    • @user-nr3si2ky3h
      @user-nr3si2ky3h 2 місяці тому +1

      Это не живое интервью -) Провел как тим лид несколько сотен собеседований с лайвкодингом, люди не общаются подобным образом в стрессовой обстановке, слишком чистый и рафинированный диалог.

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

      Тем более тогда можно было подумать над условиями задачи/формулировками)

  • @user-ll2xw7tn6v
    @user-ll2xw7tn6v Місяць тому +1

    Вторую задачу можно решить за линейное время, если воспользоваться словарём на основе хэш-таблицы с поиском\добавлением за O(1). В словарь складывать последовательность уникальных символов и проверять каждый след. символ за О(1). Хз как работает store в go но вроде как я понял, то это не хэш.

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

      так store здесь - это имя переменной типа map
      а поиск в map - O(1)

  • @danilbanan406
    @danilbanan406 2 місяці тому +2

    Владимир красавчик,провел на высшем уровне

  • @neruinfo166
    @neruinfo166 2 місяці тому +2

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

  • @wowxd9893
    @wowxd9893 Місяць тому +1

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

  • @mayboroda
    @mayboroda 2 місяці тому +4

    а в Го-шке нет Set-а? ну или можно было массив булов заюзать во второй задаче.
    но то что код не запускали и "я вижу ошибку" - зачет )))

    • @Varkatel
      @Varkatel 2 місяці тому +1

      во второй задаче можно и константным массивом булов, и битами на инт32

    • @maxnov4120
      @maxnov4120 2 місяці тому +1

      @@Varkatelхоть кто-то написал про это)

    • @constantinegeist1854
      @constantinegeist1854 Місяць тому +2

      Set'а нет, только мапа

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

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

  • @designed6102
    @designed6102 2 місяці тому +16

    вторая задача это прям типовая задача из 24-ого задания егэ

  • @SuperEugeneone
    @SuperEugeneone 2 місяці тому +29

    Контент полезный. Только по первой задаче у сортировки временная сложность O(n log n), а не O(log n). Суммарная сложность для решения, соответственно, тоже O(n log n)

    • @vladimir_balun_programming
      @vladimir_balun_programming 2 місяці тому +2

      Да, действительно, видимо я не расслышал корректно в тот момент - сложность O(n log n)

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

      ​@@vladimir_balun_programmingа можете подсказать, почему вообще такая сложность?
      Есть 2 сценария:
      1) сортируем массив (сложность n*log2n (быстрая, в среднем) + log n, поиск)
      2) просто складываем все что видим, сложность n. Сортировки не требуется
      Итого, выгоднее тупо сложить массивы, если n>3

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

      сложность О-большое - это наихудший сценарий. А 2ой пункт у вас - это наоборот наилучший сценарий@@valeryzeryl9145

    • @user-sw8fj8ik4z
      @user-sw8fj8ik4z 2 місяці тому +1

      ​@@valeryzeryl9145могу ошибаться, но чисто интуитивно, если не отсортировать, придется сравнивать каждый последующий интервал со всеми уже объединенными, соответственно сложность до 0.5n^2 вырастает

    • @w01fer86
      @w01fer86 2 місяці тому +1

      @@valeryzeryl9145 как ты сложишь [[1,10], [20,30], [5,15]] корректно за один проход?

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

    Первую задачу решил бы с использованием set, так как его в перспективе легче поддерживать, тем более что в коммерческом программировании, сложность алгоритма зависит от необходимости выполнения различных запросов, по типу добавить новый интервал, или вывести в каком интервале лежит число x и находится ли оно в этом интервале и т.д и set(или другая сбалансированная структура данных) подходит для этого лучше

    • @thevirusnvgm2518
      @thevirusnvgm2518 2 місяці тому +2

      Во второй задаче просто любая хэш таблица без повторений и ВСЁ

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

      @@thevirusnvgm2518 скинь решение

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

      Если я что-то и понял про коммерческое программирование - оно стремится написать микрофункции обрабатывающие единицу - сущность, агрегат и тд.
      Реальная программа и даже SQL работают с множествами. Всегда с множествами.
      И реальная оптимизация это разбить код на этапы, которые можно параллелить, а не написать черный ящик который сдвигами покажет минимум микросекунд.
      Потому что в этот ящик потом не влезть чтобы его распилить на два, ибо он совершенно нечитаем!
      Вопросов нет, он мегабыстр... Но вот на вход не одна строка а 100000 и микросекунды плюсуются. И делая множества всегда почти можно редюсом поделить число операций увидев одинаковость. А потом редюсом же раскопировать результаты обратно во множество. Вот где оптимизация. А это - это развлечение для мажоров.

  • @nmg_prm
    @nmg_prm 2 місяці тому +1

    Здравствуйте Владимир давно смотрю Ваши каналы! Работаю на с++ уже 3 года, стараюсь совершенствоваться! Спасибо за мотивацию!

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

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

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

    Меня одного смущает что первая задача решена не верно? У него на выходе другие цифры чем в примере, т.е. попал интервал которого не было изначально, это 7

  • @iptashR
    @iptashR 2 місяці тому +2

    0:43. Was machst du?

  • @FuckAboutTransport
    @FuckAboutTransport Місяць тому +6

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

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

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

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

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

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

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

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

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

    • @olegscherbakov5984
      @olegscherbakov5984 20 годин тому

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

  • @JohnDoe-qe5je
    @JohnDoe-qe5je 2 місяці тому +15

    А смысл от такого фидбека, какая польза? Это больше на придирки похоже мимо сути дела. Если это не монтаж/склейка, то человек решил две задачи за относительно небольшое время при том в относительно стрессовых условиях (на которые смело можно списать основные недочёты), без существенных ошибок. Как надо было решать ещё лучше? И за подобное собеседование ещё предлагается заплатить круглую сумму, в чём ценность?

    • @medved3027
      @medved3027 25 днів тому

      Это т.н. mock interview - ненастоящее. Делается оно по просьбе интервьюируемого. На другом конце кто-то кого он знает и от кого может адекватно принимать рекомендации, чтобы прокачать скилы для реального собеседования

  • @alexlightweight
    @alexlightweight 2 місяці тому +18

    Большей глупости чем спрашивать аглоритмы на собесе не существует. Это абсурд !!! Сам никогда их не спрашиваю у кандидатов, но по опыту наборов в другие отделы могу сказать следующее: после проверки алгоритмов вы набираете людей 2 типов 1) просто задрочивших литкод ради собесов 2) реальные задроты-токсики с ЧСВ.
    Потом мои коллеги тимлиды с соседних отделов ноют что у них в команде не те люди которые им видите ли нужны, а у меня нормальные адекватные ребята и дружная команда без алгосов и никаких проблем ...
    Выводы делайте сами.
    (работаю в одном очень крупном аутсорсере РФ)

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

      Алгоритмы это способ большим популярным компаниям фильтрануть поток и сбить зп. Если работаешь в рандомной галере, как ты написал, зачем там алгоритмы спрашивать - загадка

    • @constantinegeist1854
      @constantinegeist1854 Місяць тому +9

      ​@@ChannelCheesecake вместо литкода лучше показать типичный ынтырпрайзный код, в который добавлен говнокод, и попросить поревьюить и порефакторить. Сразу видна куча вещей о кандидате. Задрачивание на литкод для 99% компаний/проектов мимо кассы

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

      @@constantinegeist1854 да все бы запросто такое проходили. В рамках собеса ничего интересного не уместишь

    • @constantinegeist1854
      @constantinegeist1854 Місяць тому +3

      @@ChannelCheesecake Мы такое практикуем и отшиваем большинство кандидатов, т.к. в упор не видят проблем в коде, или замечают только небольшую часть, или начинают сильно плавать, когда спрашиваешь, как сделать лучше. Задание простое может быть: напр., в контроллере напрямую запрос в БД, в коде явно присутствует состояние гонки (напр. пример с балансом на счету) и т.п. Спрашиваешь, где в коде проблема -- полбеды, затем спрашиваешь, как бы отрефакторил, и тут тоже многие начинают плавать. Плюс куча тем для беседы отсюда может быть ("окей, напрямую в БД лезть из контроллера если не хорошо, какой паттерн бы использовал?", или "окей, здесь состояние гонки, объясни почему? за уровни серилиазации БД пояснишь?" и т.п.) У нас кандидатов на "синьоров" с рынка было пока что единицы, кто смогли всё ответить приемлемо.

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

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

  • @get_out_it
    @get_out_it 2 місяці тому +6

    для первой задачи time complexity задачи = сложности сортировки - это nlogn а не линейная как сказали на интервью

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

      Он потом поправился

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

      @@undefined4992 он потом сказал log(n) вместо n*log(n) что тоже неправильно, потому что в худшем у квиксорта будет O(n*n)

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

      На что влияет это знание, если сортировки не избежать?

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

      @@TheCharlieGordon на непосредственно оценку времени работы, это и есть финальный ответ на вопрос

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

      @@undefined4992 а что даст эта оценка, если сортировка неизбежна? Типа, какая разница, сколько стоит товар, если ты в любом случае вынужден его купить? Т.е. как в этом случае поможет знание - O(n) или O (n*log(n))?

  • @DubinArtur
    @DubinArtur Місяць тому +1

    В первой задаче надо проверять длину не на 0, а на

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

      Можно, но не обязательно

  • @Smurfetti
    @Smurfetti 2 місяці тому +5

    А на реальной АА какой вердикт бы был? И на какой Грейд?

    • @Kondratyevv
      @Kondratyevv 2 місяці тому +1

      Что такое АА? Батарейки?

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

      @@Kondratyevv название секции в Яндексе, когда тебя собеседует опытный собеседующий (а не рандомный разраб, у которого это первое собеседование за полгода). Обычно оценки таких секций больше весят при принятии решения о найме и грейде.

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

      @@w01fer86 это не задачи аа

  • @MRtheLAGERAT
    @MRtheLAGERAT 2 місяці тому +14

    Забавно, что именно эти задачки мне давали год назад на собесе в яндекс)

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

      И че, ты попал в Яндекс?

    • @MRtheLAGERAT
      @MRtheLAGERAT 2 місяці тому +1

      @@Kondratyevv нет, завалился на одном из след. этапов(

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

      ​@@MRtheLAGERAT а че за след этап был?

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

      ​@@MRtheLAGERATи как попал на первый собес в яндекс? если можешь, поделись, пожалуйста

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

      @@freestylerveevo на всех этапах дают 2 задачи, этапов хз сколько может быть, на стажировку вроде 3-4, читал, что на другие позиции вплоть до 9 таких этапов может быть
      Сам попал когда набирали людей на стажировку, сначал решаешь задачи типа codeforce на яндекс контесте, если прошёл, то назначают вот такие собесы.

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

    а когда уже собес с работником другого языка?

  • @maximal5791
    @maximal5791 Місяць тому +2

    Где такой метод slice.Sort ??? С ним НЕ работает. Нигде не могу найти. Заменил на sort.Slice - работает

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

    По первой задаче

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

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

  • @get_out_it
    @get_out_it 2 місяці тому +12

    Но ощущение конечно что чел знал какие задачи будут и паттерны

    • @undefined4992
      @undefined4992 2 місяці тому +2

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

    • @animeai-content
      @animeai-content 2 місяці тому +1

      тут задачи достаточно простые

    • @ChannelCheesecake
      @ChannelCheesecake 2 місяці тому +1

      Это очень простые задачи, алё

    • @get_out_it
      @get_out_it 2 місяці тому +2

      @@ChannelCheesecake это ваше субъективное мнение

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

      @@get_out_it это статистическое мнение, эти задачи сильно проще, чем те которые можно обычно увидеть

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

    давай в слдщий раз что-нбдь, чего нет в neetcode roadmap, а то неинтересно даже

  • @iamo0
    @iamo0 21 день тому

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

  • @vp_arth
    @vp_arth 2 місяці тому +4

    А в go нет структуры множество(set)?
    На первый взгляд цикл сдвига l кажется лишним. Ситуация, которую он решает не может произойти.

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

      Есть map[string]struct{}, тот же фунционал

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

      Не совсем, к словарю нужно велосипедить методы - пересечение, объединение множеств, вычитание и т.п.
      Для обеспечения уникальности подойдёт, да.

  • @user-fb6wy6sq6o
    @user-fb6wy6sq6o 22 дні тому

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

  • @user-qs7ex4io1z
    @user-qs7ex4io1z Місяць тому +2

    Почему тимлиду из Яндекса дают задачки для студентов

    • @nihttoter3240
      @nihttoter3240 19 днів тому +1

      Я был фронтенд разрабом мне такие задачи давали тоже. Опыта во фронте 15 лет. Ни разу за 15 лет интервалы не мёржил. Я вообще не понимаю, зачем это нужно, что фронту, что тим лиду...

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

    Быстрая сортировка сложность n*log(n), хотя собеседуемый сказал log(n)

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

      O(n*n). А n*log(n) - только для среднего случая. А считают по худшему.

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

      @@warmrew9033библеотечные сортировки (про которые и говорил собеседуемый) используют quicksort+heapsort это так называемый introsort он работает и вхудшем случае за nlogn

  • @Barrrash
    @Barrrash 2 місяці тому +10

    Провожу подобные интервью больше шести лет.
    Сугубо моё личное мнение... если оценивать работу интервьювера только по выложенному видео, то (на мой взгляд) отработал не выше середины. Конечно, так оценивать не совсем правильно, т. к. кандидат уже "разогрет" и находится в контексте происходящего (не задачь, но сомой процедуры).
    Из того, что сразу видно, независимо от контекста:
    + провёл дружелюбно ("безопасно" для кандидата)
    + уточнял "понятно ли задание"
    + провеёл по положительному пути
    + выявил недочёты, какие-то дал найти самому
    + обсудили основные тест кейсы
    + дал фидбэк
    + позволил задать вопросы
    - технические ошибки (в сложностях, что является основой задания, если судить по уделённому вниманию)
    - не обсудили альтернативные решения и использование средств платформы.
    - не выявлены способы принятия решений (как и сами принятые решения по допустимым входным данным, ошибка или пустое множество на выходе и пр.)
    - кандидату не показан потенциал для проф. роста (не вызван интерес)
    - не запрошен фидбэк на интервью от кандидата (возможно будет позже - на отдельном звонке).
    Моё мнение: интервьюверу стоит озаботиться изучением вопроса о дополнительных целях интервью. Основную задачу интервью (выявить техническое соответствие кандидата, запрашиваемой позиции) с натяжной выполнил. Есть и не менее важные дополнительные цели интервью.

    • @heuretic
      @heuretic 2 місяці тому +1

      Это стандартный формат 3-го этапа Яндекса, а больше в РФ таких интервью никто не проводят, если, конечно, цель - закрыть позицию, а не найти еще один винтик в систему или почесать свое ЧСВ.
      >кандидату не показан потенциал для проф. роста (не вызван интерес)
      Компанию на Я при найме не интересует твой опыт и знания за пределами Литкода (правда, есть еще архитектурная задача), в итоге разве что можно попросить з/п ближе к правому концу вилки.
      >не запрошен фидбэк на интервью от кандидата
      По окончании предлагается форма обратной связи. Можно там потыкать, что-то написать про проблемы. По-моему, результат идет в /dev/null.

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

      @heuretic "а больше в РФ таких интервью никто не проводят, если, конечно, цель - закрыть позицию, а не найти еще один винтик в систему или почесать свое ЧСВ."
      Не уверен, что я правильно понял что Вы хотели сказать в этой части.
      На всякий случай поясню некоторые моменты.
      - Интервью с написанием кода в РФ проводит не только Яндекс. Как я уже написал - у нас такие интервью. Только у нас это второй (и как правило последний) этап. Он объединён с выявлением софт-скилов, общей технической беседой и подробным рассказом о процессах в компании или ответом на вопросы кандидата.
      Первый этап - короткий технический "скрининг" по телефону с целью принятия решения о втором этапе (в том числе кандидатом).
      - Что касается "почесать ЧСВ" на интервью - это самое плохое, что может делать интервьювер (таких - сразу в лес :)).
      - Про закрытие вакансии или поиск "винтика в систему". Как раз поиском винтиков (в том числе по довольно специфическим запросам) команды (в аджайл) и отдела (в матричной системе) я занимался. Написание и обсуждение кода отлично подходит для таких задач (конечно, только им не обойтись, о чём я и писал в оригинальном комменте). На моих интервью в том числе можно гуглить (как и в рабочем процессе).
      - Про "вызвать интерес": тут у Яндекса, конечно, особое положение - к ним многие уже за имя готовы идти. Для компаний без имени стоит задача заинтересовать кандидата. Одна из лучших мотиваций, как показывает моя практика - именно вызвать неподдельный интерес. Это даже деньгами не всегда перекупается. :)
      - За информацию о наличии фидбэка спасибо - моя догадка о том, что он собирается позже была верна.

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

      ​@@Barrrashчепуху какую-то написал, ЧСВ потешил своё очевидно

  • @lifewinsful
    @lifewinsful 2 місяці тому +2

    видно, что человек уже знал алгоритмы решения, просто вспоминал

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

    У первой задачи не линия по памяти, а константа, потому что пространственная сложность относится только к промежуточным данным.
    Странно, что интервьюер это не подметил.
    По сортировке скорее всего оговорился, потому что странно думать про лог(n)

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

      Поделитесь плиз ссылочкой на источник, что память на результат не учитывается в пространственной сложности.

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

      ​@@radiosh66 Привет. Мы оцениваем алгоритм, а не среду с которой этот алгоритм взаимодействует для ввода/вывода, иначе минимальная пространственная сложность была бы линией всегда. Мы не используем массив для вычислений, поэтому учитываться в пространственной сложности он не будет.
      Можно почитать, например, в computational complexity Димитроу.

    • @radiosh66
      @radiosh66 2 місяці тому +1

      @Kelb90 спасибо за разъяснения, осталось на литкоде теперь всех переучить новому подходу к оценке пространственной сложности, т.к. на моей памяти во всех объяснениях учитывалась вся новая память, которую аллоцирует функция.

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

      @@radiosh66 да, в литкоде может быть требование выполнять in-space, когда нельзя делать промежуточный массив и возвращать его. Тогда подход к решение сильно меняется.

  • @young_flex3077
    @young_flex3077 21 день тому

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

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

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

  • @TheCharlieGordon
    @TheCharlieGordon Місяць тому +1

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

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

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

  • @UserSo4reUsu75ry
    @UserSo4reUsu75ry 2 місяці тому +2

    У меня бы 30 минут ушло бы на решение одной задачи. Надо больше решать ? Я уже больше года решаю задачи, но быстрее я их решать не стал.

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

      надо перед собесом их всех заучить, а после оставить до следующего собеса.

  • @spinacker16
    @spinacker16 28 днів тому

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

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

    А какие это задачи на литкоде? Чтоб самому порешать

    • @wowyomad
      @wowyomad 2 місяці тому +2

      Интервалы - 56
      Самая длинная подстрока - 3

  • @stepandemin5836
    @stepandemin5836 2 місяці тому +3

    100% постановка. Вам, ребята в театральный надо ;)

  • @get_out_it
    @get_out_it 2 місяці тому +1

    По поводу второй задачи. -забавно получилось что интервьюер упомянул что 26 букв алфавито. только в самом условии. неговорилось про буквыалфавита - написано символов, какие. символы могут быть - никто конечно не спросил

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

      Какая разница

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

      @@ChannelCheesecake большая разница, если ты не знаешь конечно множество символов то ты не можешь в решении зарезервировать массив на 26 символов к примеру

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

      @@get_out_it во-первых интервьюер сказал, что там не только буквы, а ASCII, во-вторых делай Map и не думай над таким

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

      @@get_out_itреч о резервировании не шла, символы подсчитываются в рантайме.char почти везеде 1 байт = 256 символов окей даже если мы подключим крутые библиотеки со всем возможными языками мира там не наберется и 2*10^9 а это обычный int. Что считается константой при размере входа стремящегося к бесконечности

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

    По первой задаче не совсем понимаю почему сложность на этапе мержа интервалов оказалась O(N)?
    Остальные интервалы то тоже нужно учесть и смержить с остальными, а это уже возрастает до квадратичной зависимости - что огромная разница

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

      для этого можно пройти по всему массиву всего один раз и выполнить по одной операции над каждым значеием из отрезка, в худшем случае будет O(2N) == O(N)

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

      ​@@igorf243 "Дан массив интервалов, объедините все пересекающиеся интервалы и верните массив непересекающихся"
      Ну? Имеется же в виду что у нас может быть несколько объединенных интервалов, которые нужно вернуть
      А вернуть мы сможем, когда совершим операции над всеми НЕобъединенными интервалами
      По итогу выполнение этой задачи - возвращается один только массив, с которым ищется возможные пересечения

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

      @@user-li6qv1mv7bесли массив отсортирован, то нам надо просто проверять пересечение с предыдущим: пересекаются - объединяем, не пересекаются - отправляем на выход и начинаем собирать новый. Чистейший O(N).

  • @wall-wrecker-my6ss
    @wall-wrecker-my6ss 2 місяці тому +54

    Да ладно ребят, там склейка на монтаже. Вы думаете чел просто сел и решил. Конечно нет. Может договорняк, ради контента

    • @user-pq3qd5zm6c
      @user-pq3qd5zm6c 2 місяці тому +20

      Ну хз. Это я решаю литкод 4 месяца. И сразу же решил эти задачи. Врядли постанова

    • @dieff_automation
      @dieff_automation 2 місяці тому +1

      ​@@user-pq3qd5zm6cда там видно склейку. Если прям с нуля там минут 40 надо, если не гуглит, а с помощью gpt 4 версии, она решается за 3 минуты, лучшим алгоритмом, плюс все расписыаается.

    • @404Negative
      @404Negative 2 місяці тому +8

      задачи элементарные, что их решать. просто 2 простейшие свёртки и всё

    • @EsinaViwn9
      @EsinaViwn9 2 місяці тому +1

      ​@@404Negative что значит свертка?

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

      Легко решается

  • @noname-bi7ve
    @noname-bi7ve 2 місяці тому +4

    алгодрочеры не нужны

  • @Boka-and-Joka
    @Boka-and-Joka 2 місяці тому +4

    все в яндексе и сам яндекс - дно поганое. как компания, так и люди в ней. да еще и куколды)

    • @alexlightweight
      @alexlightweight 2 місяці тому +1

      да, яндекс уже лет 10 как опустился, самое интересное что там ЗП чуть ниже средних по рынку, но все туда рвутся почему то, подозреваю просто хотят эту ачивку не более ... ))))))

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

    Как мы дожили до того чтобы писать код на интервью в блокноте с подсветкой синтаксиса языка ? 😮

    • @alekseifilippov9236
      @alekseifilippov9236 28 днів тому

      В колледже информатики когда учил синтаксис писал на бумажке и сдавал преподу или мелом на доске, а потом уже пересаживались за компы

  • @user-sc9hv7vy4z
    @user-sc9hv7vy4z 2 місяці тому +3

    Очень простые задачи.

    • @w01fer86
      @w01fer86 2 місяці тому +2

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

    • @D-gw4vj
      @D-gw4vj 2 місяці тому

      @@w01fer86 вау найти того, кто может решать задачи, но потом двигать и красить кнопку.

  • @dimama1551
    @dimama1551 20 днів тому

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

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

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

  • @user-fh3wg8oj6q
    @user-fh3wg8oj6q 2 місяці тому +3

    Чет легенькие задачи

  • @wonderful2122
    @wonderful2122 2 місяці тому +1

    Обе задачи имеют средний уровень на leetcode.

    • @sb9185
      @sb9185 2 місяці тому +3

      Не изи)

  • @nicholasspezza9449
    @nicholasspezza9449 2 місяці тому +8

    Чот Баламут постарел, в яндексе из него все соки выжимают. Возвращайся в Озон!

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

      Побриться, подстричься и как новенький!

    • @artemkas4191
      @artemkas4191 2 місяці тому +1

      Реально чот похудел вообще

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

      озон овно еще хуже

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

      Он просто тренеруетсч

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

      Глаза пустые

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

    Очередное доказательство, что если повернуть стол и собеседующего превратить в собеседуемого, то он просто не пройдет собес, а завалить его на нем легче легкого).

  • @JohnCena-lv3ew
    @JohnCena-lv3ew 2 місяці тому +1

    Хахаха. Порекомендуем тим лиду яндекса (если он данные задачи видел первый раз и это все не "актерская игра") больше сидеть на литкоде. Если таки он видел это первый раз, то непонятно как в яндексе обычные люди становятся (давайте только не будем уподобляться самому яндексу, и скажет что обычные люди с точки зрения данных алгоритмических задач) тим лидами. Потому что, то, что видел и в чем участвовал я не было таким простым. видимо рядята любят тащить себе в команды не кого-то с "улицы", а своего проверенного, а остальных валят. неприятное впечатление от яндекса.

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

      А тебе какие задачи дали? Ну эти оч простые, мб с наймом беда сейчас

  • @user-je8yv6gq7o
    @user-je8yv6gq7o 22 дні тому

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

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

    Чет туго пошло у парня

    • @dibehemoth401
      @dibehemoth401 2 місяці тому +4

      Нифига се туго 2 медиум за 37 минут...

    • @sb9185
      @sb9185 2 місяці тому +5

      ​​@@dibehemoth401Так это изи уровень

    • @dibehemoth401
      @dibehemoth401 2 місяці тому +1

      @sb9185 это обе медиум литкод. Хз как в яндексе внутри считают, конечно.

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

      646?@@dibehemoth401

    • @get_out_it
      @get_out_it 2 місяці тому +5

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

  • @brainrainz
    @brainrainz 2 місяці тому +1

    слабенько, хотя бы 1 medium бы дали

    • @get_out_it
      @get_out_it 2 місяці тому +1

      это медиум на литкоде

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

    void task1() {
    var initial =
    List.of(new StartEnd(3, 5), new StartEnd(4, 6), new StartEnd(7, 8), new StartEnd(1, 2));
    var reduced =
    initial.stream()
    .sorted(Comparator.comparing(StartEnd::start))
    .reduce(
    new ArrayList(),
    (partial, next) -> {
    if (!partial.isEmpty()) {
    var indexOfLast = partial.size() - 1;
    var last = partial.get(indexOfLast);
    if (last.overlaps(next)) {
    partial.set(indexOfLast, StartEnd.merge(last, next));
    return partial;
    }
    }
    partial.add(next);
    return partial;
    },
    (first, second) -> first);
    System.out.println(reduced);
    }
    record StartEnd(int start, int end) {
    boolean overlaps(StartEnd other) {
    return start

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

      Стримы это очень круто. Стримы это хорошо забытое прошлое и счастливое будущее.

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

      s/second.end/Math.max(first.end, second.end)/