LINUX.ORG.RU
Ответ на: комментарий от cruxish

В более общем случае, когда VM завершила свою работу до finally.

та ну это глупости. В вопросе предполагается "... блок finally при нормальной работе программы/JVM"

JFreeM ★★★☆
()
Ответ на: комментарий от JFreeM

никогда такого не случится, вы что.

Я откомпилил пример выше - и случилось. ЧЯДНТ?

Sadler ★★★
()
Ответ на: комментарий от Sadler

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

Вы тоже не подходите, спасибо за собеседование.

cruxish ★★★★
()
Ответ на: комментарий от cruxish

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

Т.е. следующий код выдаст false:

        String a = new String ("1");
        String b = new String("1");
        
        System.out.println(a == b);
Sadler ★★★
()
Ответ на: комментарий от cruxish

Вы тоже не подходите, спасибо за собеседование.

А я не собеседовался, у меня уже есть две работы, мне третьей не надо.

Sadler ★★★
()
Ответ на: комментарий от JFreeM

В вопросе предполагается "... блок finally при нормальной работе программы/JVM".

Совсем нет. Вопрос состоит только в том, что написано. Вы могли ответить «выполнится всегда», ваше право. Но System.exit(0) тоже может быть выполнен при нормальной работе программы.

cruxish ★★★★
()
Ответ на: комментарий от Sadler

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

Nagwal ★★★★
()
Ответ на: комментарий от Sadler

Не знаю как в жабе, в C# строки хранятся в хэш-таблице, поэтому одинаковые строки имеют одинаковый адрес. Хотя вроде в ранних версиях .net это не включалось по умолчанию.

encyrtid ★★★★★
()
Ответ на: комментарий от Sadler

Ты просто чудак, который не читал моих постов всю дорогу,

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

чтобы потешить своё ЧСВ.

Если бы я тешил свое ЧСВ, то я бы сказал, что ты тешишь свое ЧСВ, если думаешь, что я засчет тебя могу тешить свое ЧСВ.

Просто проверь. Это куда быстрее. УМВР.

Посыпаю голову пеплом, но сути неправильности этого способа сравнения не меняет - такой вариант уже не проканает:

        String a = "12345".substring(0, 2);
        String b = "12";
        
        System.out.println(a == b);
bender ★★★★★
()
Ответ на: комментарий от cruxish

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

JFreeM ★★★☆
()

Когда я собеседовал разработчиков на Java, заметная часть не могла объяснить в чем разница между LinkedList и ArrayList, позор

maxcom ★★★★★
()
Ответ на: комментарий от bender

Посыпаю голову пеплом, но сути неправильности этого способа сравнения не меняет - такой вариант уже не проканает:

Потому что это не способ сравнения строк, а лишь способ сравнения указателей =)

Sadler ★★★
()
Ответ на: комментарий от JFreeM

А потом вырастают велосипеды, вроде приведённого мной выше.

Sadler ★★★
()
Ответ на: комментарий от Sadler

вот из-за таких «проверяев» и падают ракеты

        String a = new String("1");
        String b = new String("1");
        
        System.out.println(a == b);

проверяй

shty ★★★★★
()
Ответ на: комментарий от encyrtid

В жабе строки не интернируются?

а Вы уверены что правильно понимаете механизм и суть интернирования?

shty ★★★★★
()

Почему вы не пишете на лиспе?

Deleted
()
Ответ на: комментарий от Sadler

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

Не совсем так. Вот хорошая статья - http://www.osix.net/modules/article/?id=378

Т.е. следующий код выдаст false

Ага, но «1» в данном случае всё равно будет помещена в кэш строк. Тут причина в другом, вы создаёте две *копии* одного и того же объекта.

cruxish ★★★★
()
Ответ на: комментарий от Sadler

не надо делать умное лицо

И хорошо, если умная Java соптимизирует так, что указатели совпадут.

не совпадут, инфа 100%

ещё вопросы?

shty ★★★★★
()
Ответ на: комментарий от cruxish

Тут причина в другом, вы создаёте две *копии* одного и того же объекта.

На уровне мышления указателями, а не кэшем строк Java, тоже вполне логичная схема. Почитаю, конечно, статью, но не вижу особых преимуществ от знания сего механизма.

Sadler ★★★
()

Гугль не работает?

http://www.allapplabs.com/interview_questions/java_interview_questions.htm

У меня спросили только сертификат CX-310-065 и предыдущие наработки, если не NDA.

Небольшой совет - обычно спрашивают по книжке «Философии Java». Ну еще, если опыта нет, то оценить О-функции от различных структур данных.

С собеседований, где задают «тупаки» про задачку с роботами, круглыми люками канализации, разбившиеся баночки с таблетками - уходите сразу. В конторах-соковыжималках типа «Люксофта» - программист это расходный материал, как таджик на стройке. (Не даром из ДС туда мало кто идёт, кроме как в манагерочки.) В уютненьких небольших правильных конторах программист - это полубог.

По вопросам поймете, что за контора. В правильных конторах более ценен практический предыдущий опыт, что делал по жизни, а не задачки для теоретиков от программирования.

Bioreactor ★★★★★
()
Ответ на: комментарий от Sadler

Вы сказали «инфа 100%», но в изначальном примере они совпали. Значит не 100%. Ещё вопросы?

я Ваш пример перерисую, чтобы Вам понятно было что Вы сравнивали:

String a = new String("");

System.out.println(a == a);

чувствуете тонкий нюанс?

shty ★★★★★
()
Ответ на: комментарий от bender

произойдет налл поинтер, пример в копилку тс'у

Ага, а как теперь исправить, чтобы был false, не меняя объявление a?

cruxish ★★★★
()
Ответ на: комментарий от shty

я Ваш пример перерисую, чтобы Вам понятно было что Вы сравнивали

Да признайте уже, что были не правы. «Тонкий нюанс» уже разжёван до вас.

cruxish ★★★★
()
Ответ на: комментарий от cruxish

Что тут проверять?

инфу, которая 100%

Этот код в корне не такой, как тот, который вы «исправили».

я виноват что оппонент не понимает что он пишет? я просто привёл правильный пример

shty ★★★★★
()
Ответ на: комментарий от shty

я Ваш пример перерисую, чтобы Вам понятно было что Вы сравнивали

Выше скинули статью по кэшу строк. Почитайте вместе со мной.

чувствуете тонкий нюанс?

Вы правда думаете, что вы такой умный, что единственный допёрли до причины совпадения указателей? Но они совпадут при том коде, который я предоставил. Значит ваше утверждение о «не совпадут, инфа 100%» ложно.

Sadler ★★★
()
Ответ на: комментарий от shty

я виноват что оппонент не понимает что он пишет? я просто привёл правильный пример

Неет, это вы не понимаете, с чем вы спорите. =)

Sadler ★★★
()
Ответ на: комментарий от cruxish

Да признайте уже, что были не правы.

на основании чего?

«Тонкий нюанс» уже разжёван до вас.

я здесь не в спорт по переписке на скорость играю, мне надо ещё и работать (уж не знаю как Вам), а нюанс тот разжеван 100500 раз, и давно уже, просто не все его понимают

shty ★★★★★
()
Ответ на: комментарий от shty

а нюанс тот разжеван 100500 раз, и давно уже, просто не все его понимают

Ваша проблема в том, что вы внушили себе, что в интернете кто-то не понимает, и начали с ним спорить. =) Забавные люди, уже в который раз таких вижу.

Sadler ★★★
()
Ответ на: комментарий от shty

Это тривиально, что

false

К.О. , читавший спеку сообщает

String a = new String(«1»);

String b = new String(«1»); // энто ДВЕ РАЗНЫЕ строки - сцылкИ на ДВА экземпляр

System.out.println(a == b); // false String a1 = «1»;

String b1 = «1»; // энто одна и та жа строка - сцылкА на ОДИН экземпляр

System.out.println(a1 == b1); // true

Интересно с

Integer i = 127;

Integer j = 127;

Integer i1 = new Integer(127);

Integer j1 = new Integer(127);

true

false

А далее примерчики с выходом из диапазона -128 ... 127

оба таки будут

false

false

Bioreactor ★★★★★
()
Ответ на: комментарий от Sadler

Выше скинули статью по кэшу строк. Почитайте вместе со мной.

не беспокойтесь, уже читаю, это всегда полезно

Значит ваше утверждение о «не совпадут, инфа 100%» ложно.

ну коли Вам нравится шланговать, ничего тут поделать не могу

shty ★★★★★
()
Ответ на: комментарий от Sadler

Как выбор GC связан с приёмом на работу программиста?

Да, с выбором GC я погорячился :) Но в любом случае, знать как работает сборка мусора никогда не бывает лишним.

drakmail ★★★★
()
Ответ на: комментарий от shty

ну коли Вам нравится шланговать, ничего тут поделать не могу

Просто не надо считать поголовно всех окружающих идиотами - не будет подобных проблем в будущем.

Sadler ★★★
()
Ответ на: комментарий от Bioreactor

String b1 = «1»; // энто одна и та жа строка - сцылкА на ОДИН экземпляр

так я про что оппоненту и толкую, но он же шланг сертифицированный, ему так комфортнее

shty ★★★★★
()
Ответ на: комментарий от maxcom

Видимо мне везло, когда я собеседовал разработчиков. На такие базовые вопросы люди обычно отвечали. А вот сколько людей полегло на вопросах по SQL, на банальных вопросах с одним join и одним group by - почти не поддается подсчету.

Nagwal ★★★★
()
Ответ на: комментарий от shty

так я про что оппоненту и толкую, но он же шланг сертифицированный, ему так комфортнее

Дело в том, что я это прекрасно знаю. И мой пример как раз и показывал, что в этом случае совпадение указателей для двух переменных a и b произойдёт в силу того, что экземпляр на самом деле один используется. А значит, «не совпадут, инфа 100%» ложно.

Sadler ★★★
()
Ответ на: комментарий от shty

я виноват что оппонент не понимает что он пишет?

Судя по тому, что я прочитал, оппонент понимает больше вас. :)

я просто привёл правильный пример

String a = «123» - это создание одного объекта. String b = new String(«123») - это создание двух объектов. Чей пример правильнее?

cruxish ★★★★
()
Ответ на: комментарий от bender
"null".equals(a)

Как говорится, всем 4, тебе 5. :)

берете меня работу?

А что вы ещё умеете (J2EE, Hibernate, Freemarker?) и где живёте?

cruxish ★★★★
()
Ответ на: комментарий от Sadler

Дело в том, что я это прекрасно знаю.

дело в том что Вы толстый шланг, и заливаете дискуссию жиром

И мой пример как раз и показывал, что в этом случае совпадение указателей для двух переменных a и b произойдёт в силу того, что экземпляр на самом деле один используется. А значит, «не совпадут, инфа 100%» ложно.

ещё раз, вот эквивалент того что Вы написали:

String a = new String("1");
String b = a;

System.out.println(a == b);

и это не вопрос оптимизации, comprenez vous?

shty ★★★★★
()
Ответ на: комментарий от cruxish

Как говорится, всем 4, тебе 5. :)

За такую мелочь - и 5? Вот поэтому я ненавижу сессии. Благо, их осталось две всего. Ты, значица, отвечаешь какую-нибудь теорему на 5 листов, часа два паришься, да ещё попутно доказываешь, что ты не верблюд (ибо много преподов с теми же проблемами, что у shty). А другой подходит, рассказывает какую-нить мелочь - и всё.

Sadler ★★★
()
Ответ на: комментарий от shty

ещё раз, вот эквивалент того что Вы написали

Боже, да когда ж ты успокоишься. Я понял твою мысль, но это не сделало её вернее.

Sadler ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.