Техническое интервью Java Developer - Юрий Мусиенко

Поделиться
HTML-код
  • Опубликовано: 22 дек 2024

Комментарии • 42

  • @elena-8363
    @elena-8363 3 года назад +11

    Огромное спасибо за вашу работу, очень мотивирует ещё раз погуглить все эти темы!

    • @Jetbulb
      @Jetbulb  3 года назад +2

      Очень отрадно слышать, что наше дело живет и оно нужно ИТ-сообществу.
      Таким вещи мотивируют и далее делать контент. Спасибо)

  • @skanta
    @skanta 2 года назад +3

    Музыка выдает хороший вкус. Уже второе видео мне она заходит....
    А по видео: Юрий молодец:)

  • @lelelelevv
    @lelelelevv Год назад +1

    Это очень показательное интервью того факта, что если ты хорошо начал, то дальше тебя будет вести вперёд и оправдывать уже сам интервьюер. Очень неплохая психологическая уловка

  • @MikhailNavitski
    @MikhailNavitski 3 года назад +8

    Удачи Юра!!!!!

  • @ДмитрийСазонов-с2х
    @ДмитрийСазонов-с2х 3 года назад +7

    Не понял момент со стринг билдером
    String s= "Hello" + "Wolrd"; тут при дебагинге будет один обьект в памяти Hello World
    String s= new StringBuilder().append("Hello").append("World").toString();
    а тут наоборот 3 обьекта Hello & World & Hello World

    • @Jetbulb
      @Jetbulb  3 года назад +4

      Спасибо за вопрос.
      1. String в Java является иммутабельным. Это значит что каждая строка будет создана и займет место в памяти. Раз: "Hello", Два: "World", Три: "Hello" + "World" и так далее.
      2. Надо учитывать оптимитизации, которые происходят неявно. Для литерального выражения "Hello" + "World" в байткоде будет создан StringBuilder, который выполнит операцию append. Ясное дело, что это не обходится бесплатно с точки зрения ресурсов.
      3. Если осуществлять операцию конкатенации a += "a" в цикле, то будет проблема производительности, поскольку создаются лишние "промежуточные" объекты. Тем самым занимая память и ресурсы.
      Вот как выглядит п.3 в коде:
      String a = "a";
      for (int i = 0; i < 100; i++) a += "a";
      А вот его байткод:
      Особенно уделить внимание секции L4-L5
      L0
      LINENUMBER 44 L0
      LDC "A"
      ASTORE 1
      L1
      LINENUMBER 45 L1
      ICONST_0
      ISTORE 2
      L2
      FRAME APPEND [java/lang/String I]
      ILOAD 2
      BIPUSH 10
      IF_ICMPGE L3
      L4
      LINENUMBER 46 L4
      NEW java/lang/StringBuilder
      DUP
      INVOKESPECIAL java/lang/StringBuilder. ()V
      ALOAD 1
      INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
      ALOAD 1
      INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder;
      INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String;
      ASTORE 1
      L5
      LINENUMBER 45 L5
      IINC 2 1
      GOTO L2

  • @рачс
    @рачс 2 года назад

    немного не понял, зачем мы кастим (T) в return

  • @ДмитрийСазонов-с2х
    @ДмитрийСазонов-с2х 3 года назад +8

    Будут ли собесы с мидлами?

    • @Jetbulb
      @Jetbulb  3 года назад +2

      Будет, все будет. Но постепенно ))

  • @МихаилА-у3л
    @МихаилА-у3л Год назад +3

    Заметил, что отличает джуниора:
    * повторяет вопрос, чтобы понять, что спросили;
    * даёт ответы с вопросительной интонацией;
    * отвечает не на тот вопрос, который задавали.

  • @alexalex4601
    @alexalex4601 3 года назад +5

    20:04 "byte в памяти будет занимать один байт". Это неверно. В Java, в отличие от C++, базовые типы данных имеют фиксированную разрядность. Переменная типа byte в памяти физически будет занимать 4 байта, но занести в нее можно будет значение от -128 до 127.
    37:11 "вероятно нужно сам массив еще урезать". При удалении элементов из ArrayList уменьшения capacity не происходит. Поэтому удаление элемента из конца ArrayList будет иметь сложность O(1). Так как не только не происходит уменьшения capacity, но и не происходит перезаписи элементов, стоящих справа от удаляемого, так как таких элементов нет.

    • @nikhrom3551
      @nikhrom3551 3 года назад +1

      Это откуда инфа такая про примитивные типы? По вашему примитивный тип long тоже занимает 4 байта?

    • @funbiscuit
      @funbiscuit 3 года назад

      @@nikhrom3551 Вообще много всяких особенностей при хранении примитивов в памяти. И как это делается фактически - зависит от реализации JVM. Так что примитивы (меньше int) вполне могут быть расширены до 4 байт. Но в любом случае, это касается только отдельно лежащих примитивов. Если же речь о массиве, то там все будет плотно упаковано и каждый byte будет занимать ровно один байт.

    • @nikhrom3551
      @nikhrom3551 3 года назад

      ​@@funbiscuit первый раз слышу о том, чтобы сам примитив расширялся. Есть такое понятие как "выравнивание данных". Суть заключается в том, что данные в памяти разбиваются на "пачки" по 4-8 байт в зависимости от процессора (допустим, есть пачка 4 байта, первый байт занят, допустим типом данных byte, а следом идёт тип данных int. И тогда 3 следующих байта после byte будут пустовать, чтобы не разбивать на части данные из int). Сделано это ради оптимизации. Например в C++ имеется возможность управлять этим процессом.
      Это абсолютно другой процесс, здесь не происходит расширения данных

    • @nikhrom3551
      @nikhrom3551 3 года назад

      @@funbiscuit если есть по поводу этой темы какая-то другая информация, то хотелось бы почитать

    • @funbiscuit
      @funbiscuit 3 года назад

      @@nikhrom3551 В общем-то да, я в основном о выравнивании и говорил. Я скорее предполагаю, что реализация вполне может использовать int вместо byte в машинном коде т.к. современные процессоры вроде как быстрее с этим работают (хотя я не уверен), но как тогда можно обеспечить фиксированный диапазон (-128..127) я не представляю (возможно и нет гарантий, что после 127 будет идти -128 в случае byte).

  • @Fess_Summer_Soul
    @Fess_Summer_Soul 3 года назад +2

    Спасибо за контент! Возможно я упустил момент в постановке технической задачи, но было ли какое-то ограничение на создание вспомогательных классов? Т.е. можно было ли рассмотреть решение технической задачи через enum типы?

    • @Jetbulb
      @Jetbulb  3 года назад

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

    • @funbiscuit
      @funbiscuit 3 года назад

      А можно было просто сделать c.newInstance() :) Ну и в трай-кэтч завернуть

  • @itmaker1821
    @itmaker1821 3 года назад +1

    Есть ли возможность пособеседоваться с тобой ? :)

    • @Jetbulb
      @Jetbulb  3 года назад

      Привет)
      Конечно есть.
      Вся информация на www.jetbulb.com
      Подписывайся на телеграмм-канал.
      Мы там регулярно даём анонсы.
      t.me/jetbulb

  • @Hotrification
    @Hotrification Год назад +2

    Ему надо в автосалоне работать а не в продакшене писать код

  • @ЕвгенийЛист-х5п
    @ЕвгенийЛист-х5п 3 года назад +17

    Меня одного смутило, что парень несёт кучу непонятной воды, и ни слова по делу? На собеседовании после 2го вопроса уже бы закончили с ним диалог…

    • @RussianCyclop
      @RussianCyclop 3 года назад +4

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

    • @podsvinokSatani
      @podsvinokSatani 3 года назад

      да согласен(

    • @YuryMusiyenka
      @YuryMusiyenka 3 года назад +10

      Может ты не заметил, это мок интервью и для меня оно было первым, помогло сделать работу над ошибками, прошел реальный собес и никто не закончил диалог (7 месяцев уже работаю)

    • @YuryMusiyenka
      @YuryMusiyenka 2 года назад

      @Эмиль Хачатрян По разному, бывают задачи и простые и сложные, но всегда помогут если не получается, пока таких задач чтобы никто не знал как решить ещё не ставилось, общими усилиями сложные задачи закрываем, это мок интервью помогло немного, в основном проверка знаний, от собеса зависит что будут спрашивать и как

    • @bglets1930
      @bglets1930 Год назад

      @@YuryMusiyenka Привет.Как нашел первую работу?Через отклики или на тебя вышли?Можешь рассказать в кратце.

  • @iharbakhanovich
    @iharbakhanovich 2 года назад +1

    - Хорошо, хорошо
    - Доктор, что хорошо?
    - Хорошо, что не со мной

  • @MifitoS777
    @MifitoS777 3 года назад +6

    Джуниор? ...

    • @pressf8083
      @pressf8083 3 года назад +3

      А что так удивляет?

    • @ЕвгенийЛист-х5п
      @ЕвгенийЛист-х5п 3 года назад

      @@pressf8083 это даже на стажера не тянет

    • @Sanchio
      @Sanchio 3 года назад

      @@ЕвгенийЛист-х5п ну не расстраивайте так!)

  • @iharbakhanovich
    @iharbakhanovich 2 года назад

    О, Юра из Минска. "Земеля, а ты к кому приехал?"

    • @iharbakhanovich
      @iharbakhanovich 2 года назад

      Короче, Юра, иногда лучше слушать больше, чем говорить

  • @AlleinInderStadt
    @AlleinInderStadt 9 месяцев назад

    Дофига перебивает. В утиль!

  • @winter-lb7id
    @winter-lb7id 6 месяцев назад

    неприятный тип
    еще и 2 в 4 бита у него байт занимает.... полный атас
    байт от +4 до -4 , АХАХАХАХАХ, ржунемогу