Собеседование Яндекс Java | ТЕОРИЯ+LIVECODING РАЗБОР ЗАДАЧ

Sdílet
Vložit
  • čas přidán 12. 09. 2024

Komentáře • 105

  • @sorokinpavel
    @sorokinpavel  Před 7 měsíci

    Забирай бесплатные материалы от меня по изучению Java и подготовки к собеседованиям: t.me/JavaLearnBot?start=c1724626210163-41-ds

  • @arenmkhoyan
    @arenmkhoyan Před 7 měsíci +5

    Очень полезный контент, побольше бы таких заданий, паралельно с тобой делаю

  • @yarik2303
    @yarik2303 Před 3 měsíci +1

    Очень понятно и грамотно. Однозначно подписываюсь и жду новых видео

  • @neruinfo166
    @neruinfo166 Před 7 měsíci +2

    Вполне адекватные вопросы и задачки. Если подготовиться, то вообще изи

  • @aww8609
    @aww8609 Před 4 měsíci +1

    Спасибо за контент🔥 очень полезно .12:26 Throwable это класс, не интерфейс

  • @user-bt9hx3ik6e
    @user-bt9hx3ik6e Před 6 měsíci

    классное видео, спасибо!побольше бы такого контента!

  • @BassLite
    @BassLite Před 6 měsíci +2

    Спасибо за видео, хороший канал.
    Во второй задаче ошибка в решении.
    На 34 строке, всегда будет вызываться b.remove(), что всегда будет вызывать ошибку java.lang.IllegalStateException

  • @titsubishi
    @titsubishi Před 4 měsíci +1

    Спасибо, за видос! Звук ток пришлось на максимум выкрутить - довольно тихо было) могу подсказать, как решить вопрос со звуком, если надо)

  • @jujubeperch
    @jujubeperch Před 7 měsíci +11

    Советую над звуком поработать, очень тихо.

    • @ellirabethj6044
      @ellirabethj6044 Před 7 měsíci

      чего там работать. просто ни**** не слышно )

  • @marioalvarez7462
    @marioalvarez7462 Před 2 měsíci

    В последней задаче про робота: можно ведь прокинуть в конструктор общий ReentrantLock, в конструктор которого передать fair=true. В начале вайл цикла лочить лок. Тогда они будут выполняться последовательно.

    • @sorokinpavel
      @sorokinpavel  Před 2 měsíci

      Можно, можно любое решение придумать, которое удовлетворяет условиям. Я показываю лишь одно из

  • @tomervercetti
    @tomervercetti Před 5 měsíci +1

    Спасибо бро, очень полезно

    • @sorokinpavel
      @sorokinpavel  Před 5 měsíci

      Рад, что было полезно)

  • @Romigo4
    @Romigo4 Před 6 měsíci +3

    12:11 Throwable это класс, а не интерфейс )

  • @user-gw6df6ns7e
    @user-gw6df6ns7e Před 7 měsíci +1

    Переменную счётчика можно не объявлять как volitile, так как у тебя синхронизация по тому же монитору. Следовательно все будет видно между потоками.

    • @RustamPlayer
      @RustamPlayer Před 7 měsíci +2

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

  • @artemtelushkin186
    @artemtelushkin186 Před 7 měsíci

    Спасибо, очень познавательно

  • @summerparadise938
    @summerparadise938 Před 3 měsíci +3

    Throwable это класс, не путай

    • @sorokinpavel
      @sorokinpavel  Před 3 měsíci

      Спасибо. Сам решу, что путать, а что не путать

    • @antongromov8093
      @antongromov8093 Před 3 měsíci

      ​@@sorokinpavel ущемился или что? Чел правильно суть подметил, а ты сразу по-грязному дефаешься. Странновато, не находишь?

    • @sorokinpavel
      @sorokinpavel  Před 3 měsíci

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

    • @antongromov8093
      @antongromov8093 Před 3 měsíci

      @@sorokinpavel претензию и агрессию ты себе выдумал (агрессия, кста - это про нарочное причинение вреда, ты здесь агрессию не докажешь). Где он тут претензию предъявил? Да, действительно, изложить можно было и в более вежливой форме, базару ноль, но тут и грубой формы не было.
      Про странность - да, по факту: это было странно лично для меня, зря написал, претензии нет
      По поводу контента: для меня любой контент - это не единица или ноль: что-то мне понравилось, что-то нет. Так или иначе, польза от этого видео ненулевая

    • @sorokinpavel
      @sorokinpavel  Před 3 měsíci

      Про агрессию:
      1. Нарочное или не нарочное для меня разницы нет. Человек думает перед тем, как написать
      2. Тут явно вижу причинение вреда для себя и попытка с его стороны прогнуть меня под его требования. Прямым текстом мне заявляет "так делай, а так не делай". Так что агрессия здесь есть для меня.
      С остальным согласен

  • @ibragimmagomedov4996
    @ibragimmagomedov4996 Před 7 měsíci +3

    не стоит байтить на звук оповещения телеграмма

  • @iKorvik
    @iKorvik Před 6 měsíci +2

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

    • @sorokinpavel
      @sorokinpavel  Před 6 měsíci

      Я проходил на senior позицию. Это был стандартный первый этап, который у всех одинаковый.
      А как упоминать я сам решу, спасибо)

    • @symryvvin
      @symryvvin Před 9 dny

      @@sorokinpavel в чем стандартность? мне дали 2 задачи алгоритмические решить за час, никаких вопросов по Java

  • @danrold
    @danrold Před 7 měsíci +1

    От Exception наследуется два наследника это RuntimeException и checked exception 13:05
    Кек

  • @dodik4929
    @dodik4929 Před 7 měsíci +1

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

    • @sorokinpavel
      @sorokinpavel  Před 7 měsíci +2

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

    • @luckytima2315
      @luckytima2315 Před 7 měsíci +1

      Сейчас? Сколько ты спал? Kata akademy этим занимается уже года 4, в сбере куда не плюнишь попадешь в джависта с нарисованым опытом

  • @user-ui5fe7dr9h
    @user-ui5fe7dr9h Před měsícem

    привет! спасибо за видео. подскажи, лайвкодинг тоже был в идейке, или просто в текстовом редакторе без подсказок?

    • @sorokinpavel
      @sorokinpavel  Před měsícem

      Привет, в обычном редакторе был лайвкодинг

  • @LPS-ln1mz
    @LPS-ln1mz Před 5 měsíci +2

    вообще у exception 2 наследника - checked & unchecked и runtime exception это наследник checked

  • @konstantingorbunov4372
    @konstantingorbunov4372 Před 3 měsíci +1

    Похоже, что у тебя неправильное решение третьей задачи, на мой взгляд вот так должно быть:
    @Override
    public void run() {
    while (current < 100) {
    if (id == current % quantity) {
    synchronized (lock) {
    step();
    current ++;
    }
    }

    }

    }
    Цикл ограничил 100 шагами для наглядности, ну и потоки надо стартануть.

    • @konstantingorbunov4372
      @konstantingorbunov4372 Před 3 měsíci

      Или вообще вот так лучше без доп переменной
      public void run() {
      while (current < 100) {
      if (id == current % quantity) {
      step();
      }
      }
      }
      synchronized private void step() {
      System.out.println("Step by " + name);
      current ++;
      }

    • @sorokinpavel
      @sorokinpavel  Před 3 měsíci +1

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

    • @konstantingorbunov4372
      @konstantingorbunov4372 Před 3 měsíci

      @@sorokinpavel насчет работы вообще, да погорячился, посмотрел, код должен сработать, но в таком видео ожидаешь какое-то эталонное решение, а не (не хочу быть токсичным) спагетти какие-то. Ты ведь наверняка готовился к выпуску ролика, а не как я с ходу написал и забыл)

    • @sorokinpavel
      @sorokinpavel  Před 3 měsíci

      @@konstantingorbunov4372 Покзаываю решение, которое я придумал во время собеса в реальном времени

    • @konstantingorbunov4372
      @konstantingorbunov4372 Před 3 měsíci

      @@sorokinpavel вообще я подмал, что здесь вообще не нужен synchronized блок, а достаточно двух volatile переменных, и сам я тоже зря написал synchronized метод во втором случае, так робот не сможет одновременно шагать и махать рукой например. Вот так тоже работает, можешь проверить:
      private final String name;
      volatile private static int current = 0;
      volatile private static int quantity = 0;
      private final int id;
      public Foot(String name) {
      this.name = name;
      id = quantity;
      quantity += 1;
      }
      @Override
      public void run() {
      while (current < 100) {
      if (id == current % quantity) {
      step();
      }
      }
      }
      private void step() {
      System.out.println("Step by " + name);
      current ++;
      }
      Хотя теоретически current ++ не атомарная операция

  • @alexzaides767
    @alexzaides767 Před 6 měsíci +3

    это на джуна? или яндекс поменял свои задачи в кои то веки?

  • @user-fp1ft4eu2d
    @user-fp1ft4eu2d Před 7 měsíci +1

    Здравствуйте. Подскажите пожалуйста это собеседование на Senior или какую позицию? Заранее спасибо за ответ!

    • @sorokinpavel
      @sorokinpavel  Před 7 měsíci +4

      Я собеседовался на Senior. Это был первый этап, но там первые 3 этапа для всех одинаковые

  • @alekseysverbeev2934
    @alekseysverbeev2934 Před 5 měsíci

    Завязывать логику на name, который задается в конструкторе - это даже не bad practice, это уголовное преступление)

  • @1-ov947
    @1-ov947 Před 7 měsíci +1

    Это первый этап интервью? Яндекс поменял формат и перестал спрашивать литкод?

    • @sorokinpavel
      @sorokinpavel  Před 7 měsíci +2

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

  • @user-gw6df6ns7e
    @user-gw6df6ns7e Před 7 měsíci

    С итераторам можно проще. Засунул их в очередь и все. На конце очереди будет текущий итератор.

    • @dmitryduzhinsky2739
      @dmitryduzhinsky2739 Před 7 měsíci

      Итератор подразумевает под собой интерфейс, который не гарарнтирует нахождение всех элементов в памяти (они могут просто не помещаться), что делает данное решение неприменимым в данной ситуации. К тому же, создание отдельной структуры за O(N + M) выглядит слишком избыточнм. Задачи на комбинацию итераторов и заключаются в том, чтобы довольно оптимально скомбинировать интерфейс исходных.

  • @user-sc9hv7vy4z
    @user-sc9hv7vy4z Před měsícem

    Перемудрил с блокировками в 3 задаче. Они там совсем ни к чему.

  • @user-gk3ep5mq9r
    @user-gk3ep5mq9r Před 7 měsíci +1

    Поздравляю с офером. Чё по зп? Средняя по рынку или чуть выше? Какие таски?

    • @sergeynothing9324
      @sergeynothing9324 Před 7 měsíci +1

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

  • @biggireal
    @biggireal Před 7 měsíci

    iter1 = [1], iter2 =[1], multi.next(), multi.remove() - no such element

  • @ypohut1673
    @ypohut1673 Před 7 měsíci +1

    А ты бы не хотел на Линукс пойти там говорят вакансий много и платят хорошо (там С) просто интересно мнение я новичок, присматриваюсь к Джаве и С

    • @sorokinpavel
      @sorokinpavel  Před 7 měsíci

      Переходить никуда не планирую😁
      Вакансий и на java предостаточно

    • @ypohut1673
      @ypohut1673 Před 7 měsíci

      @@sorokinpavel говорят что на Джаве предложений больше чем вакансий из-за этого Джава отталкивает

    • @luckytima2315
      @luckytima2315 Před 7 měsíci +5

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

    • @ypohut1673
      @ypohut1673 Před 7 měsíci

      @@luckytima2315 теперь знаю что все правильно делают что идут на питон и джаву, нг новичкам на джаву сложно, лучше джаваскрипт

  • @kozhuhovIvan
    @kozhuhovIvan Před 5 měsíci

    На какую позицию собес был?

  • @user-ro8bu5di5o
    @user-ro8bu5di5o Před 7 měsíci

    Не взяли?

  • @kiselkisel3463
    @kiselkisel3463 Před 7 měsíci +1

    Странный задачи на алгосы. Уровень стажера

  • @tesgreat8958
    @tesgreat8958 Před 7 měsíci

    Третья задачка прикольная ). Но как по мне, перемудрил.
    - во первых потоки нигде не запускаются, на видео просто new Thread(..).
    - даже если ты не используешь стандартные Lock, лучше было бы передать обьект снаружи, а не надеятся на пул констант.
    - все эти wait
    otify тут лишние - у тебя же есть уже критическая секция, потоки на ней будут синхронизироваться.
    - ну и архитектурно я бы все что. не связано с ногами вынес в отдельный класс FootOrder какойнибудь ( но это уже конечно придирки, на собесе может и норм))

    • @sorokinpavel
      @sorokinpavel  Před 7 měsíci +1

      Спасибо за обратную связь!
      1. Да, потоки не запускаются, но по условию можно было трогать только метод step и внутреннее устройство Foot
      2. Wait и notify не лишние потому что нельзя гарантировать порядок, в котором будет захватываться монитор. Можно сделать, чтобы поток сразу же выходил из критической секции, если не его очередь ходить. Но тогда может произойти такое, что поток делает много лишней работы, хотя мог бы просто поспать)

    • @tesgreat8958
      @tesgreat8958 Před 7 měsíci

      Так notify тоже не гарантирует порядок. При двух потоках может показаться, что смысл есть, но если представить обобщённый вариант ( ту самую сороконожку ), принципиальной разницы не будет - что 40 потоков залочены на входе в крит. секцию, что те же 39 спят и рандомно просыпаются от notify.

  • @antonivanov1351
    @antonivanov1351 Před 7 měsíci +1

    Вообще говоря то, что одинаковые строки будут ссылаться на один объект не гарантируется.

    • @sorokinpavel
      @sorokinpavel  Před 7 měsíci

      Если ссылки не будут указывать на один объект в этом случае, то объясни почему конкретно в этом случае работать не будет.
      В любом случае можно спокойно заменить переменную на статическую и все будет работать.

    • @antonivanov1351
      @antonivanov1351 Před 7 měsíci

      @@sorokinpavel а я не сказал, что это обязательно так не будет. Я сказа, что это не гарантируется - это разные вещи. Это детали имплементации и лучше на них не закладываться.

    • @user-gw6df6ns7e
      @user-gw6df6ns7e Před 7 měsíci

      Если объявить через литерал, то будет на один и тот же объект.

    • @antonivanov1351
      @antonivanov1351 Před 7 měsíci

      @@user-gw6df6ns7e это гарантируется стандартом языка?

  • @blackdragon7047
    @blackdragon7047 Před 7 měsíci +12

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

    • @sorokinpavel
      @sorokinpavel  Před 7 měsíci +4

      Не понимаю почему что-то конкретное X - зло, тем более без аргументации Есть то, что тебе подходит, что не подходит. Если тебе не хочется в яндекс - не иди, многим другим хочется.

    • @tanyagibadulina8809
      @tanyagibadulina8809 Před 7 měsíci +3

      Согласна на все 💯 бежала оттуда сверкая тапками.

    • @yt_user-u1x
      @yt_user-u1x Před 7 měsíci +1

      Поясните

    • @andrewmovan771
      @andrewmovan771 Před 7 měsíci

      Ух ты, мамкин нетакусик в комментариях

    • @CAMOBAP795
      @CAMOBAP795 Před 2 měsíci +1

      Работа на любую роccийcкую компанию зло, яндекc чем-то выделяетcя кроме цензуры в выдаче поиcковика?

  • @brime12345
    @brime12345 Před 6 měsíci

    Собеседование в Я и нет задачек на алгосы с литкода? Странно как-то.

    • @sorokinpavel
      @sorokinpavel  Před 6 měsíci

      Это был первый стандартный этап, который одинаковый для всех, дальше алгоритмы

  • @ya_uze_umirayu1424
    @ya_uze_umirayu1424 Před 7 měsíci

    Подскажи на какой грейд ты проходил собес?

    • @sorokinpavel
      @sorokinpavel  Před 7 měsíci +1

      На senior, но там этапы для всех одинаковые

    • @iKorvik
      @iKorvik Před 6 měsíci +2

      @@sorokinpavelони там угарают с такими теор. вопросами на синьора? :D

  • @user-gs7qf7kq2q
    @user-gs7qf7kq2q Před 5 měsíci

    Полезно, но очень тихо

  • @user-un1um2vf3y
    @user-un1um2vf3y Před 7 měsíci

    А на какой уровень было собеседование? Кажется довольно простым для всех страшилок, которые я слышал о Яндексе, судя по тому что не было System Design, это jun, middle?

    • @vegassinn
      @vegassinn Před 7 měsíci

      Senior, ниже написано.

    • @LPS-ln1mz
      @LPS-ln1mz Před 5 měsíci

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

  • @monkedlyugge
    @monkedlyugge Před 5 měsíci

    currentLeg = 1 - currentLeg;

  • @pianogx6077
    @pianogx6077 Před 4 měsíci

    это пример livelock'а?
    czcams.com/users/shortsd2Ya0T-LolI

  • @RomanTchekashov
    @RomanTchekashov Před 7 měsíci

    Тебя взяли в Яндекс?

  • @youtubeeda
    @youtubeeda Před 7 měsíci

    💣

  • @test143000
    @test143000 Před 7 měsíci

    собеседование в гбшную контору, а кому это надо?

  • @user-zz1yx6tp7d
    @user-zz1yx6tp7d Před 7 měsíci

    Про атомик какой-то бред прозвучал

    • @sorokinpavel
      @sorokinpavel  Před 7 měsíci

      Поясни что прозвучало не так и как правильно. Иначе твой комментарий не приносит ничего полезного, просто необоснованная критика

    • @g_or_l
      @g_or_l Před 7 měsíci +2

      ​@@sorokinpavel про атомик прослушал, видимо. Но если речь про замечание о volatile на currentLeg, то оно звучало не очень, имхо.
      1. Он там не нужен. Захват/освобождение монитора happens before организуют, это решает все проблемы.
      2. Если бы я проводил интервью, то желание вставить volatile и объяснение мотивации вида "читать напрямую из памяти" стриггерили бы меня чуть подробней поговорить и про volatile и про jmm.
      Спасибо за видео.

    • @ianisforis
      @ianisforis Před 7 měsíci +2

      @@sorokinpavel тоже по началу давал такой ответ, что volatile читает напрямую из памяти, но после изучения материалов про jmm все не так просто. Можно сказать что volatile дает нам гарантию видимости значения разными потоками, а как именно это будет зависит от архитектуры памяти и/или jvm оптимизаций. Может быть и когерентность кэша и читать будут именно из него, но при этом с гарантией видимости и т д

    • @sorokinpavel
      @sorokinpavel  Před 7 měsíci

      @@ianisforis Спасибо за конструктивную обратную связь!

    • @ianisforis
      @ianisforis Před 7 měsíci

      @@sorokinpavel всех благ и дальнейшего развития канала. Много каналов про java не бывает, как говорится)