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

Записаться новый курс по Java: forms.gle/1FE87k4sjjBS4c5v5
Как проходило одно из моих собеседований в Яндекс. Какие вопросы задавали и как я на них ответил. Также разбираем в реальном времени задачи на лайвкодинг из собеседования.
Telegram: clc.to/telegram-sorokin
00:00- вступление
00:36 - о чем видео
1:08 - методы Object
2:13 - ConcurrentModificationException вопрос
3:11 - deadlock/livelock
5:07 - упал сервис OOM
6:47 - try/catch/finally
9:27 - устройство garbage collector
12:11 - иерархия исключений
13:45 - использование ExecutorService
15:26 - переходим к лайвкодинг секции
15:43 - первая задача (stream API)
20:47 - вторая задача (collections iterator)
27:20 - третья задача (multithreading)
36:26 - конец

Пікірлер: 98

  • @sorokinpavel
    @sorokinpavel4 ай бұрын

    Задавайте свои вопросы на все отвечаю! мой Telegram: clc.to/telegram-sorokin

  • @arenroger6507
    @arenroger65074 ай бұрын

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

  • @user-bt9hx3ik6e
    @user-bt9hx3ik6e4 ай бұрын

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

  • @yarik2303
    @yarik230321 күн бұрын

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

  • @aww8609
    @aww8609Ай бұрын

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

  • @tomervercetti
    @tomervercetti2 ай бұрын

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

  • @sorokinpavel

    @sorokinpavel

    2 ай бұрын

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

  • @artemtelushkin186
    @artemtelushkin1864 ай бұрын

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

  • @neruinfo166
    @neruinfo1664 ай бұрын

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

  • @BassLite
    @BassLite3 ай бұрын

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

  • @titsubishi
    @titsubishiАй бұрын

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

  • @dodik4929
    @dodik49294 ай бұрын

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

  • @sorokinpavel

    @sorokinpavel

    4 ай бұрын

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

  • @luckytima2315

    @luckytima2315

    4 ай бұрын

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

  • @LPS-ln1mz
    @LPS-ln1mz3 ай бұрын

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

  • @user-fp1ft4eu2d
    @user-fp1ft4eu2d4 ай бұрын

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

  • @sorokinpavel

    @sorokinpavel

    4 ай бұрын

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

  • @user-gw6df6ns7e
    @user-gw6df6ns7e4 ай бұрын

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

  • @RustamPlayer

    @RustamPlayer

    4 ай бұрын

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

  • @alexzaides767
    @alexzaides7673 ай бұрын

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

  • @Romigo4
    @Romigo44 ай бұрын

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

  • @biggireal
    @biggireal4 ай бұрын

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

  • @jujubeperch
    @jujubeperch4 ай бұрын

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

  • @ellirabethj6044

    @ellirabethj6044

    4 ай бұрын

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

  • @danrold
    @danrold4 ай бұрын

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

  • @kozhuhovIvan
    @kozhuhovIvan2 ай бұрын

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

  • @user-gw6df6ns7e
    @user-gw6df6ns7e4 ай бұрын

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

  • @dmitryduzhinsky2739

    @dmitryduzhinsky2739

    4 ай бұрын

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

  • @1-ov947
    @1-ov9474 ай бұрын

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

  • @sorokinpavel

    @sorokinpavel

    4 ай бұрын

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

  • @user-gk3ep5mq9r
    @user-gk3ep5mq9r4 ай бұрын

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

  • @sergeynothing9324

    @sergeynothing9324

    4 ай бұрын

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

  • @ya_uze_umirayu1424
    @ya_uze_umirayu14244 ай бұрын

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

  • @sorokinpavel

    @sorokinpavel

    4 ай бұрын

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

  • @iKorvik

    @iKorvik

    3 ай бұрын

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

  • @user-ro8bu5di5o
    @user-ro8bu5di5o4 ай бұрын

    Не взяли?

  • @ypohut1673
    @ypohut16734 ай бұрын

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

  • @sorokinpavel

    @sorokinpavel

    4 ай бұрын

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

  • @ypohut1673

    @ypohut1673

    4 ай бұрын

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

  • @luckytima2315

    @luckytima2315

    4 ай бұрын

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

  • @ypohut1673

    @ypohut1673

    4 ай бұрын

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

  • @youtubeeda
    @youtubeeda4 ай бұрын

    💣

  • @ibragimmagomedov4996
    @ibragimmagomedov49964 ай бұрын

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

  • @iKorvik
    @iKorvik3 ай бұрын

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

  • @sorokinpavel

    @sorokinpavel

    3 ай бұрын

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

  • @summerparadise938
    @summerparadise938Ай бұрын

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

  • @sorokinpavel

    @sorokinpavel

    Ай бұрын

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

  • @antongromov8093

    @antongromov8093

    28 күн бұрын

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

  • @sorokinpavel

    @sorokinpavel

    28 күн бұрын

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

  • @antongromov8093

    @antongromov8093

    28 күн бұрын

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

  • @sorokinpavel

    @sorokinpavel

    28 күн бұрын

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

  • @user-un1um2vf3y
    @user-un1um2vf3y4 ай бұрын

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

  • @vegassinn

    @vegassinn

    4 ай бұрын

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

  • @LPS-ln1mz

    @LPS-ln1mz

    3 ай бұрын

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

  • @monkedlyugge
    @monkedlyugge2 ай бұрын

    currentLeg = 1 - currentLeg;

  • @brime12345
    @brime123453 ай бұрын

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

  • @sorokinpavel

    @sorokinpavel

    3 ай бұрын

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

  • @user-gs7qf7kq2q
    @user-gs7qf7kq2q2 ай бұрын

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

  • @antonivanov1351
    @antonivanov13514 ай бұрын

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

  • @sorokinpavel

    @sorokinpavel

    4 ай бұрын

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

  • @antonivanov1351

    @antonivanov1351

    4 ай бұрын

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

  • @user-gw6df6ns7e

    @user-gw6df6ns7e

    4 ай бұрын

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

  • @antonivanov1351

    @antonivanov1351

    4 ай бұрын

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

  • @alekseysverbeev2934
    @alekseysverbeev29343 ай бұрын

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

  • @tesgreat8958
    @tesgreat89584 ай бұрын

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

  • @sorokinpavel

    @sorokinpavel

    4 ай бұрын

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

  • @tesgreat8958

    @tesgreat8958

    4 ай бұрын

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

  • @pianogx6077
    @pianogx6077Ай бұрын

    это пример livelock'а? kzread.infod2Ya0T-LolI

  • @RomanTchekashov
    @RomanTchekashov4 ай бұрын

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

  • @kiselkisel3463
    @kiselkisel34634 ай бұрын

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

  • @konstantingorbunov4372
    @konstantingorbunov437222 күн бұрын

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

  • @konstantingorbunov4372

    @konstantingorbunov4372

    22 күн бұрын

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

  • @sorokinpavel

    @sorokinpavel

    22 күн бұрын

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

  • @konstantingorbunov4372

    @konstantingorbunov4372

    22 күн бұрын

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

  • @sorokinpavel

    @sorokinpavel

    22 күн бұрын

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

  • @konstantingorbunov4372

    @konstantingorbunov4372

    21 күн бұрын

    @@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 if (id == current % quantity) { step(); } } } private void step() { System.out.println("Step by " + name); current ++; } Хотя теоретически current ++ не атомарная операция

  • @blackdragon7047
    @blackdragon70474 ай бұрын

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

  • @sorokinpavel

    @sorokinpavel

    4 ай бұрын

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

  • @tanyagibadulina8809

    @tanyagibadulina8809

    4 ай бұрын

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

  • @user-ep6qi4pj1d

    @user-ep6qi4pj1d

    4 ай бұрын

    Поясните

  • @andrewmovan771

    @andrewmovan771

    4 ай бұрын

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

  • @CAMOBAP795

    @CAMOBAP795

    21 сағат бұрын

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

  • @test143000
    @test1430004 ай бұрын

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

  • @user-zz1yx6tp7d
    @user-zz1yx6tp7d4 ай бұрын

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

  • @sorokinpavel

    @sorokinpavel

    4 ай бұрын

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

  • @g_or_l

    @g_or_l

    4 ай бұрын

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

  • @ianisforis

    @ianisforis

    4 ай бұрын

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

  • @sorokinpavel

    @sorokinpavel

    4 ай бұрын

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

  • @ianisforis

    @ianisforis

    4 ай бұрын

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

Келесі