Реальное Собеседование Data Science в VK | АЛГОРИТМЫ

แชร์
ฝัง
  • เผยแพร่เมื่อ 2 มิ.ย. 2024
  • Сегодня я прохожу собеседование в VK, алгоритмическая секция. Смотри это видео, чтобы узнать, какие вопросы мне задавали.
    🐳 Следи за новостями: t.me/gernar228/ - новости, анонсы, бесплатный контент
    🍑 Приватный телеграм: t.me/gernar228_bot/ - весь движ тут: сообщество, собесы, мои личные консультации и другой эксклюзивный контент!
    ⬆️ Boosty больше недоступен, всё переехало в телеграм ⬆️
    Полная версия: • (full) Собес ВК
    00:00 Начало
    00:48 Первая задача
    01:30 Вторая задача
    04:05 Решение второй задачи
    09:40 Советы
    11:34 Конец
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 54

  • @alexeykruglov8185
    @alexeykruglov8185 หลายเดือนก่อน

    Спасибо за контент!_

  • @DenisLeadERTV
    @DenisLeadERTV 3 หลายเดือนก่อน +3

    Похожую задачку как-то дали в ДЗ в школе нетология, весь вечер блин убил)) Да и лямбда функции, множества, циклы, функции, всё вот это было.

  • @user-nc8lm7ow3q
    @user-nc8lm7ow3q 22 วันที่ผ่านมา

    Классный алгоритм. Не представляю, как ты во время интервью это придумал. Гений

  • @karamatnurillaev157
    @karamatnurillaev157 9 หลายเดือนก่อน +1

    У меня вопрос по второму заданию.
    Могу ли я создать (generate) все возможные подстроки из заданной строки, даже с повторяющимися значениями, без изменения порядка. Потом, найти все возможные подстроки максимальной длины с неповторяющимися значениями.
    будет ли такой подход правильным? заранее спасибо

    • @gernar228
      @gernar228  9 หลายเดือนก่อน +1

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

  • @user-sc9hv7vy4z
    @user-sc9hv7vy4z 7 หลายเดือนก่อน +6

    Твоë решение второй задачи имеет асимптотику по времени o(n*n). Чтобы было o(n), нужно при нахождении присутствующего в множестве пройденных символов убрать все символы от начала выбранной подстроки до вхождения в неë этого символа включительно и продолжить цикл считая началом подстроки символ следующий за последним удалëнным. То есть будет два указателя: один впереди, другой сзади подтягивается и в хешсете символы между ними включительно. Словарь здесь не нужен.

    • @SuperBizon012
      @SuperBizon012 6 หลายเดือนก่อน +1

      красавчик

  • @aivenwhite4611
    @aivenwhite4611 หลายเดือนก่อน

    где узнать про техники решения алгозадач

  • @ivangaifutdinov6742
    @ivangaifutdinov6742 7 หลายเดือนก่อน +2

    Есть классное решение второй задачки с помощью функции префикса для вычисления подстрок (вида z функций)

    • @m4xig1
      @m4xig1 2 หลายเดือนก่อน

      преф. функция тут оверкилл, конечно) К тому же реализация за линию пишется не тривиально

  • @MrGamerinyou
    @MrGamerinyou 9 หลายเดือนก่อน

    А это VK, который раньше был Mail ru или VK, которая соц сеть?

    • @gernar228
      @gernar228  9 หลายเดือนก่อน +2

      Там много отделов, я так и не понял куда я собесился

  • @cleyma4050
    @cleyma4050 หลายเดือนก่อน

    стоит ли идти в дата сайнс?

  • @dailys7391
    @dailys7391 9 หลายเดือนก่อน +1

    Кажется тут тупо очередью (указателями₽ можно вторую решить. Когда встретили повторяющийся символ, тупо идём слева и выкидываем все символы пока не выкинули повторяемый (который споава). Все. Длину не сложно смотреть. Количество выкидываний - линия. Количество добавлений - линия. Вот и все

    • @gernar228
      @gernar228  9 หลายเดือนก่อน

      а зачем нам что-то выкидывать? нужно подряд идущие

  • @grajdaninrossii9269
    @grajdaninrossii9269 8 หลายเดือนก่อน

    Вопрос: почему сложность О(n), если функция мах в цикле также имеет сложность О(n)? Т.е. сложность Вашего решения О(n**2)?)

    • @gernar228
      @gernar228  8 หลายเดือนก่อน

      max между двумя числами это O(1). Ты путаешь с функцией поиска максимального элемента в массиве

    • @grajdaninrossii9269
      @grajdaninrossii9269 8 หลายเดือนก่อน

      Согласен с Вами)
      Смутило название переменной max_arr поначалу
      Сейчас увидел, что дальше сравнивается длина двух подстрок)

    • @spmathf
      @spmathf 8 หลายเดือนก่อน

      @@gernar228 и все же внутри цикла string[start:i] тоже имеет O(n). Для строки: [длинная_уникальная_строка]*2 в итоге будет порядка n^2/2 обращений ко всем символам

    • @spmathf
      @spmathf 8 หลายเดือนก่อน

      @@gernar228 В общем спасает конечность алфавита) Сложность предложенного решения - O(k*(n - k)), где k - длина алфивита

    • @IlyaDChanel
      @IlyaDChanel 8 หลายเดือนก่อน

      Разве О(k*(n-k)) при константном k не является линейным временем?

  • @hredwolf
    @hredwolf 9 หลายเดือนก่อน +2

    Вторая задача не O(N), вы там создаете set вовсе не константной длины для каждого факта повтора.

    • @gernar228
      @gernar228  9 หลายเดือนก่อน

      когда мы создаем сет, то символы, от с которых мы его создаем, уникальны. Значит их количество не больше чем число символов в алфавите.

    • @user-ri5qr9sb6j
      @user-ri5qr9sb6j 9 หลายเดือนก่อน

      Тут скорее загвоздка не в конечном алфавите, а в составлении множества. Для set(string[start: i]) нам нужно пройти (i - start) элементов. А это может быть хоть 1,2, так и N/4, N/2 и т.д. элементов. Поэтому создание множества действительно может стоить линию.
      Однако промежутки (start: i) не пересекаются, поэтому больше чем O(N) в сумме не получится.

    • @hredwolf
      @hredwolf 9 หลายเดือนก่อน

      @@user-ri5qr9sb6j Размер set не будет больше размера используемого алфавита, так что не будет там N/2 и т.д., если N >> размера алфавита.
      p.s. Был не прав, посыпаю голову пеплом :)

    • @user-sc9hv7vy4z
      @user-sc9hv7vy4z 7 หลายเดือนก่อน

      ​​@@gernar228в UTF32 число различных символов тоже ограничено. Вообще в решениях часто ограничиваются типом int32 для индексов. Можно ли считать это константой при определении асимптотики?! Слишком уж большая константа.

  • @hsqlk
    @hsqlk 9 หลายเดือนก่อน +1

    А позвали на следующей этап?)

    • @gernar228
      @gernar228  9 หลายเดือนก่อน

      да

    • @hsqlk
      @hsqlk 9 หลายเดือนก่อน

      @@gernar228 По-моему у них несколько этапов, сам слился на ML дизайне(

    • @hsqlk
      @hsqlk 9 หลายเดือนก่อน

      @@gernar228 Удачи на следующем

  • @ToTo-kn4rf
    @ToTo-kn4rf 9 หลายเดือนก่อน

    А какой у тебя ник в ods?

    • @gernar228
      @gernar228  9 หลายเดือนก่อน

      Такой же

  • @gernar228
    @gernar228  9 หลายเดือนก่อน

    🐳 Следи за новостями: t.me/gernar228/ - новости, анонсы, бесплатный контент
    🍑 Приватный телеграм: t.me/gernar228_bot/ - весь движ тут: сообщество, собесы, мои личные консультации и другой эксклюзивный контент!
    ⬆ Boosty больше недоступен, всё переехало в телеграм ⬆
    • Полная версия: th-cam.com/video/h_7oC_KY13o/w-d-xo.htmlsi=Z1NYf-Nhci0Y6YPW

  • @IDONTKNOW-wn5mx
    @IDONTKNOW-wn5mx 9 หลายเดือนก่อน +17

    чет прям задача со строками похожа больно на 24 задание из егэ по информатике гробового типа

    • @mwave3388
      @mwave3388 9 หลายเดือนก่อน +2

      Егэ гробового типа - это когда если не сдал, то посылают америнские беспилотники сачком ловить?

    • @user-jc5vh3gm1q
      @user-jc5vh3gm1q 8 หลายเดือนก่อน

      да, всё видео об этом думал 😂😂

    • @t1mqa11
      @t1mqa11 7 หลายเดือนก่อน

      Да ладно, это выполнимая, тем более, что тебя готовят к этому)

  • @umni_kot
    @umni_kot หลายเดือนก่อน

    это позиция мидла была ?

  • @user-xc2gu5jg9n
    @user-xc2gu5jg9n 9 หลายเดือนก่อน +3

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

    • @gernar228
      @gernar228  9 หลายเดือนก่อน +9

      Алг задачи на всех языках одинаковые, и на всех языках они одинаково бесполезны на практике. Это проверка на задротство

    • @user-xc2gu5jg9n
      @user-xc2gu5jg9n 9 หลายเดือนก่อน

      @@gernar228 Ну так-то если заниматься системным программированием, и делать что-то крайне требовательное к скорости - вполне может и пригодиться, как по мне.

    • @user-wr7vn3ve5e
      @user-wr7vn3ve5e 6 หลายเดือนก่อน

      если понимать как, то все становится просто и легко

  • @St0pGame
    @St0pGame 9 หลายเดือนก่อน +2

    Только пересоздание сета за линию работает, а не за константу
    Можно было проверять, что нового элемента нет в словаре индексов или его индекс меньше, чем start
    Пользуясь правом первого коммента, еще раз задам вопрос про Яндекс:
    Про полученный грейд ниже ожиданий можно поподробнее? Тебе до финалов сказали грейд? Так вроде не делают

    • @Max-wn2gd
      @Max-wn2gd 9 หลายเดือนก่อน

      Поддерживаю вопрос) и спасибо за видео, интересно. Сам планирую в ВК собеситься.

    • @gernar228
      @gernar228  9 หลายเดือนก่อน

      Залетай в чатик, там подробней могу рассказать. Но в целом да, мне позвонили после третьего собеса и сказали что грейд получился ниже чем вакансия на которую я подавался. Алгоритмы и были финальным собесом, по сути.

    • @St0pGame
      @St0pGame 9 หลายเดือนก่อน

      @@gernar228 Скинь мне 1000, оформлю подписку сразу на 10 месяцев и залечу в чат. Честно-честно

    • @gernar228
      @gernar228  9 หลายเดือนก่อน

      это добровольно, просто там я отвечаю быстрее и чаще чем в комментах

  • @Ibra4topchick8045
    @Ibra4topchick8045 9 หลายเดือนก่อน +1

    А собеседующего случайно не Андреем зовут?))

    • @gernar228
      @gernar228  9 หลายเดือนก่อน

      хз

  • @user-td8vz8cn1h
    @user-td8vz8cn1h 7 หลายเดือนก่อน

    2.17, sliding window самый очевидный вариант ее решения. Так за O(n) спокойно можно