Size: a a a

Java/Kotlin and more

2021 January 13

V

Vlad in Java/Kotlin and more
Я абсолютно согласен,  что это просто вопрос на знаешь/ не знаешь.  На практике такое не сдалось никому(только если с сравнением строк не работаешь).  Ну а про интрью это отдельная тема для холивара,  мой любимый заданный мне вопрос,  это " в какой jvm и в какой версии запускаются нативные методы и конкретно hashcode",   так что стринги это еще цветочки.  Я думаю у всех есть в памяти похожие вопросы
источник

VS

Vitaly Sirotkin in Java/Kotlin and more
Ну значит интервьюер какой то задр)
источник

AS

Anatoly Shirokov in Java/Kotlin and more
Ruslan Stelmachenko
уже много лет, как не джуниор, но если мне зададут такой вопрос, я на него не отвечу. потому что даже проверив прямо сейчас это поведение, завтра я уже забуду результат) запоминается то, что используется на практике. ненужные знания вытесняются оооочень быстро. даже то, что использовал на практике много лет, а потом пару лет не используешь - быстро забывается.
Пула нет, а метод intern есть? А что же он такое? :) Это вопрос на твою эрудицию и понимание нюансов устройства JVM.
источник

AS

Anatoly Shirokov in Java/Kotlin and more
А пул очень важная вещь. Например, почему пароли принято передавать в методы как byte[], а не String. А вот ведь, пул виноват и возможность  просмотра дампа памяти процесса.
источник

V

Vlad in Java/Kotlin and more
Anatoly Shirokov
А пул очень важная вещь. Например, почему пароли принято передавать в методы как byte[], а не String. А вот ведь, пул виноват и возможность  просмотра дампа памяти процесса.
Ну это больше архитекторные вещи,  нежели для рядового программиста,  что-то из рода "зачем занулять токены авторизации и вызывать gb"
источник

AS

Anatoly Shirokov in Java/Kotlin and more
Vlad
Ну это больше архитекторные вещи,  нежели для рядового программиста,  что-то из рода "зачем занулять токены авторизации и вызывать gb"
Это  я просто пример привел, что знание тонкостей и нюансов добавляет  плюс в карму при прочих равных.
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
Ruslan Stelmachenko
А зачем вообще такое запоминать? В каждой JVM поведение теоретически может отличаться. Даже само существование пула - это же просто оптимизация. Вот "люблю" такие вопросы на собеседованиях. Как будто хоть раз за всю карьеру кто-то, кроме разработчиков JVM, это знание хоть как-то использовал. :)
Я хачил строку ради интереса
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
Ruslan Stelmachenko
Если такое знание правда в какой-то момент понадобится для конкретной JVM, то я на этой конкретной JVM сделаю:

        System.out.println("" == "");
       System.out.println("" == new String(""));
       System.out.println(new String("") == new String(""));


На 11-й у меня сейчас так:

true
false
false
Вообще это прописано в TCK и иное поведение не может быть
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
Vlad
Я абсолютно согласен,  что это просто вопрос на знаешь/ не знаешь.  На практике такое не сдалось никому(только если с сравнением строк не работаешь).  Ну а про интрью это отдельная тема для холивара,  мой любимый заданный мне вопрос,  это " в какой jvm и в какой версии запускаются нативные методы и конкретно hashcode",   так что стринги это еще цветочки.  Я думаю у всех есть в памяти похожие вопросы
Вообще вопрос с подковыркой, но ответ прост: на любой
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
Anatoly Shirokov
Пула нет, а метод intern есть? А что же он такое? :) Это вопрос на твою эрудицию и понимание нюансов устройства JVM.
Именно, пул есть в каждой имплементации jvm, которая прошла Java tck
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
В общем мое имхо такое, считайте меня задротом или нет: ты это должен знать или не считай себя даже мидлом, ибо какой ты инженер
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
Как функционирует виртуальная машина, с которой ты работаешь знать должен
источник

AE

Alexandr Emelyanov in Java/Kotlin and more
Иначе ты получаешься блондинкой на матизе и тебе будет далеко до дальнобойщика, который знает все агрегаты того тягача, на котором ездит
источник

VS

Vladimir Smirnov in Java/Kotlin and more
Alexandr Emelyanov
Иначе ты получаешься блондинкой на матизе и тебе будет далеко до дальнобойщика, который знает все агрегаты того тягача, на котором ездит
а почему тогда дальше не пойти, тогда можно считать что ты должен знать как там уже машинные инструкции выполняются побитово, а то ты «далеко не дальнобойщик»?
источник

VS

Vladimir Smirnov in Java/Kotlin and more
мидл-немидл синьор-не синьор уже давно не про чисто техническую квалификацию кмк
источник
2021 January 14

HH

Human Human in Java/Kotlin and more
Alexandr Emelyanov
В общем мое имхо такое, считайте меня задротом или нет: ты это должен знать или не считай себя даже мидлом, ибо какой ты инженер
звучит как те пердуны, которые говорят, что моргенштерн не музыкант, не артист. Вот у нас, вот мы то…
источник

HH

Human Human in Java/Kotlin and more
знаешь ты какую-то тонкость или не знаешь - вопрос как ты справляешься с конкретными задачами и помогаешь бизнесу
источник

RS

Ruslan Stelmachenko in Java/Kotlin and more
Anatoly Shirokov
А пул очень важная вещь. Например, почему пароли принято передавать в методы как byte[], а не String. А вот ведь, пул виноват и возможность  просмотра дампа памяти процесса.
Ну вообще нет, не поэтому. Пароли обычно все же не константы в исходном коде, а приходят извне (запрос, бд и т.п.), так что они в пул не попадают, на сколько я знаю.

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

RS

Ruslan Stelmachenko in Java/Kotlin and more
Alexandr Emelyanov
Именно, пул есть в каждой имплементации jvm, которая прошла Java tck
возможно. так глубоко я не копал. не вижу логических причин пулу быть частью спеки. это же просто кэш. но если так, то ок. в принципе жавадоки от метода intern() вроде как гарантируют попадание строки в пул после вызова данного метода, так что да, "Пула нет, а метод intern есть?" выглядит несколько странно :) Видимо пул все таки обязателен к реализации.
источник

RS

Ruslan Stelmachenko in Java/Kotlin and more
Alexandr Emelyanov
В общем мое имхо такое, считайте меня задротом или нет: ты это должен знать или не считай себя даже мидлом, ибо какой ты инженер
это сложный вопрос. я понимаю, что у всех мозг работает по разному. но лично я забываю то, что редко использую. причем забываю на столько, как будто бы никогда и не знал. потом снова узнаю, как в первый раз. а вот эти знания про пул - это реально из такой категории. на практике почти не используется ни мидлами, ни синьорами, ни ахритектами, никем, кроме узкого круга задач (и тут уровень разработчика вообще не важен, т.к. на этом круге задач даже джуну нужно это знать, если его конечно до них допустят).
источник