|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Добрый день! Вот пулл-реквест в рабочий код: Fix ArrayIndexOutOfBoundsException Было: Код: sql 1. 2.
Стало: Код: sql 1. 2.
Вот вроде нафиг не надо знать эту странную багофичу abs, а вот выстрелила... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 12:12 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Мне первый вариант видится корректным. А в чем подвох? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 12:47 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Alexey Tomin, abs(Integer.MIN_VALUE)=Integer.MIN_VALUE, например, но как hash может быть оказаться таким ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 12:50 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
А мне вообще оба варианта видятся одинаковыми Подвоха так же не понял ((( вроде везде int, во float (ошибки округления) скатиться не должны ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 12:52 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevА мне вообще оба варианта видятся одинаковыми Подвоха так же не понял ((( вроде везде int, во float (ошибки округления) скатиться не должны ((( Оказывается, если почитать документацию, то можно найти вот такой прикол: Код: java 1.
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 12:55 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Типа нужно было не выпендриваться, а просто к unsigned int скастовать? вот нафига hash делать знаковым ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 12:56 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevТипа нужно было не выпендриваться, а просто к unsigned int скастовать? вот нафига hash делать знаковым ((( А в яве есть беззнаковые ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 12:57 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Да ладно, если values степень двойки, можно было бы по & обрезать. Горе от ума. Не пытались бы написать универсально, не нарвались бы на Math.abs. Который, в принципе, в данном случае не сильно и нужен. Бинарное & в любом случае быстрее, чем деление по модулю. p.s. Вот 99% уверен, что values.length == степень двойки ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 13:03 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevВот 99% уверен, что values.length == степень двойки ))) Быстрый поиск показал, что одно из значений - "40" ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 13:17 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
гмм...ну если на собеседовании спрашивать такие тонкости, то мне жаль того, кто будет искать новых работников ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 13:37 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
chpashaгмм...ну если на собеседовании спрашивать такие тонкости, то мне жаль того, кто будет искать новых работников ;) Нет, конечно, не буду спрашивать. Но и "нафиг не надо" тоже не получится сказать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 13:49 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Alexey TominНо и "нафиг не надо" тоже не получится сказать :) согласен, инфа занятная. и главное причина ясна, но чёрт меня подери, что за чудесная закладка ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 13:58 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Alexey Tomin Стало: Код: sql 1. 2.
А нужно было сделать предварительно кошерную конвертацию :) Примерно так - пусть знатоки поправят синтаксис, если необходимо: Код: java 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 14:19 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Alexey Tomin, то что Math.abs() в случае Integer.MIN_VALUE возвращает хрень это еще полбеды. А вот то что деление с остатком в жаве не как в математике (там остаток по определению неотрицательный) - вот это ад. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 15:17 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevТипа нужно было не выпендриваться, а просто к unsigned int скастовать? вот нафига hash делать знаковым ((( Тогда проще через бинарное ИЛИ сбросить старший бит, а потом уже делить или что-то еще. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 17:47 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
ПылинкаТогда проще через бинарное ИЛИ сбросить старший бит, а потом уже делить или что-то еще. +1 только через И через или бит можно установить. сбросить через и ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 17:51 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsevчерез или бит можно установить. сбросить через и )))Или троица "и-или-не" или пара "и-исключающее или" ("или-исключающее или"). "Исторически сложилось, что используется пара "and-xor". ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 17:59 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev+1 только через И через или бит можно установить. сбросить через и ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 23:37 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev+1 только через И через или бит можно установить. сбросить через и ))) каюсь, задумался пока писал. Про то, что кажется я даже помню как в свое время с удивлением про эти MAX_MIN_VALUE и проблемы с ними читал на заре знакомства с 1-й java. Я тогда еще подумал -"зачем я это читаю?" И с тех пор туда не заглядывал. А оно вон как оборачивается - завалят меня на этом вопросе. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 00:15 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Alexey TominДобрый день! Вот пулл-реквест в рабочий код: Fix ArrayIndexOutOfBoundsException Было: Код: sql 1. 2.
Стало: Код: sql 1. 2.
Вот вроде нафиг не надо знать эту странную багофичу abs, а вот выстрелила... и что тут такого ах афигеть какого тупого криминального? на лицо или ошибка в первом или во втором. оба случая видятся адекватно в зависимости от того что ообще получить ожидают. в целом лично я такую порнуху ни в первом ни во втором случае в принципе делать не стал. может вы еще стринги в стрингпул кладете интерном а потом иквалз иквалзом сравниваете? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 12:23 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Увы, abs не является локальной проблемой Явы, это есть и в других языках. Что до собеседования, то я бы спрашивал первым делом диплом о высшем образовании, как минимум высшем техническом, обязательно очном, это сразу решало бы 90% процентов возможных проблем с кандидатом. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2018, 23:17 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Eugene NewУвы, abs не является локальной проблемой Явы, это есть и в других языках. Скорее всего это процессор нагадил. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 08:01 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Alexey TominEugene NewУвы, abs не является локальной проблемой Явы, это есть и в других языках. Скорее всего это процессор нагадил. при чем тут процессор? это бинарная арифметика нагадила Все притензии толи к Джордж Булю. толи к Лейбницу ))) – Взять бы этого Канта, да за такие доказательства года на три в Соловки! – совершенно неожиданно бухнул Иван Николаевич. ... Но предложение отправить Канта в Соловки не только не поразило иностранца, но даже привело в восторг. – Именно, именно, – закричал он, и левый зеленый глаз его, обращенный к Берлиозу, засверкал, – ему там самое место! .... – Но, – продолжал иноземец, не смущаясь изумлением Берлиоза и обращаясь к поэту, – отправить его в Соловки невозможно по той причине, что он уже с лишком сто лет пребывает в местах значительно более отдаленных, чем Соловки, и извлечь его оттуда никоим образом нельзя, уверяю вас! – А жаль! – отозвался задира-поэт. – И мне жаль! – подтвердил неизвестный, сверкая глазом ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:05 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Alexey Tomin, все дело в том, что максимальный int, хранящийся в ячейке памяти, меньше по модулю, чем минимальный отрицательный int на единичку. И этот особый случай обрабатывать в функции не хотят, просто вычисляют минус число, которое потом интерпретируют как отрицательное из-за того, что оно не помещается. я бы добавил проверку и генерировал бы либо ошибку времени выполнения, либо NaN. По крайней мере функцию не следовало называть abs. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:20 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Alexey Tomin, Это ж как должно повезти, чтобы на практике встретился хэш 0x80000000? Неужели таки "выстрелило"?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:30 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Eugene Newлибо ошибку времени выполнения Divide by zero было бы самое то Eugene Newлибо NaN В int нет NaN Но процессоры поступают проще: https://web.itu.edu.tr/kesgin/mul06/intel/instr/neg.html Subtracts the destination from 0 and saves the 2s complement of dest back into dest. Думаю в ASM'е в этом случае флаг переноса устанавливаетя. А в Java, как высокоуровневом языке, его просто проигнорировали и получили такой "эффект". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 14:48 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
WGA, Это ж как должно повезти, чтобы на практике встретился хэш 0x80000000? Если неприятность может случится, она происходит. Закон Мэрфи. Leonid Kudryavtsev, Divide by zero было бы самое то Не понял. Проглотило бы без ошибки деление на ноль? В int нет NaN Точно, я затупил. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 16:04 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Eugene NewНе понял В том плане, что это единственная арифметическая ошибка в процессорах сейчас Но в процессоре, скорее всего, ошибки ни потери точности нет. Скорее всего будет установлен флаг переноса, а дальше его корректно обработать - задача программиста. 1) Можно было бы арифметику делать на singed long 2) Или с hash'ем работать как с unsigend: через бинарные маски или через https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html#remainderUnsigned-int-int- (Java 1.8) Math.Abs и математика над Hash'ами - даром не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2018, 17:01 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
WGAAlexey Tomin, Это ж как должно повезти, чтобы на практике встретился хэш 0x80000000? Неужели таки "выстрелило"?.. Да, выстрелило. Там не проблема- это DMP, новые данные валяться непрерывно тысячами в секунду. У нас другая бага выстрелила- приложение при старте посылает сигнал регистрации в единую систему авторизации. Бага была в том, что если от двух приложений сигнал придёт в одну милисекунду то будет ошибка. А стартуют приложения- ну 1000 в день в самом крайнем случае. Так один тестировщик поймал эту багу. Хорошему тестировщику теория вероятности не помеха Я час логи читал, пока не догадался ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 08:10 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevНо процессоры поступают проще: https://web.itu.edu.tr/kesgin/mul06/intel/instr/neg.html Subtracts the destination from 0 and saves the 2s complement of dest back into dest. Думаю в ASM'е в этом случае флаг переноса устанавливаетя. А в Java, как высокоуровневом языке, его просто проигнорировали и получили такой "эффект". Экономят на тактах процессора. Постоянно флаг переполнения проверять- дорого. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 08:11 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Alexey TominДобрый день! Вот пулл-реквест в рабочий код: Fix ArrayIndexOutOfBoundsException Было: Код: sql 1. 2.
Стало: Код: sql 1. 2.
Вот вроде нафиг не надо знать эту странную багофичу abs, а вот выстрелила... проект убила или кандидата? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 08:34 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Luchokпроект убила или кандидата? Бага и фикс. Не критично. У нас не атомная станция, а реклама. Не показали баннер- ну что ж ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 12:26 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Alexey Tomin, богатая неделя на ArrayIndexOutOfBoundsException, я в касандре вон нашел, что integer переполнился при сложении https://issues.apache.org/jira/browse/CASSANDRA-14773 , хвала аллаху что пока в версии которая никогда не была зарелизена(официально). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 19:06 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Alexey TominWGAAlexey Tomin, Это ж как должно повезти, чтобы на практике встретился хэш 0x80000000? Неужели таки "выстрелило"?.. Да, выстрелило. Там не проблема- это DMP, новые данные валяться непрерывно тысячами в секунду. У нас другая бага выстрелила- приложение при старте посылает сигнал регистрации в единую систему авторизации. Бага была в том, что если от двух приложений сигнал придёт в одну милисекунду то будет ошибка. А стартуют приложения- ну 1000 в день в самом крайнем случае. Так один тестировщик поймал эту багу. Хорошему тестировщику теория вероятности не помеха Я час логи читал, пока не догадался 1:2^32/2 шанс. жесть какая. да хоть 1000 раз стартуй на дню. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 23:13 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
не совсем понял сентенции на предмет тонкостей и спрашивания на собеседовании кейса в топике. т.е. вы полагаете, что вас взяи на работу случайно и по ошибке? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 23:18 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
andreykaT, 1:2^32/2 шанс. жесть какая. да хоть 1000 раз стартуй на дню. Огласите, пожалуйста, свою методику подсчета шансов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 23:48 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
Сорян, двойка лишняя ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2018, 23:51 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
andreykaTне совсем понял сентенции на предмет тонкостей и спрашивания на собеседовании кейса в топике. т.е. вы полагаете, что вас взяи на работу случайно и по ошибке? Да это не мой код- не я писал, не я правил. И вообще это шутка была. Просто есть дискуссия на тему того, надо ли знать про размер кэша Integer, про такое поведение abs, про способ хранения элементов с коллизиями хэша в HashMap. На самом деле собеседование - это поиск границ знания и понимания человека. И если человек на все вопросы знает ответы- то тут что-то неправильно- либо собеседует слишком слабый технарь, либо вопросы не умеет задавать. У нас работает несколько разработчиков, которые после собеседования выходили со словами "да я ничего не знаю, оказывается", а потом получали офер на запрошенную сумму ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 07:09 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
применительно к теме.. ну типа все что тут обсуждают что я на сейм пейдж.. речь о том что абс возвращает минусовое значение при передаче минимального инта, верно? )) ну так ёу, это ж классика тестирования проверять методы на пограничных значениях. по-идее правильный тест должен был это выкусить. вот. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 10:39 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
andreykaTприменительно к теме.. ну типа все что тут обсуждают что я на сейм пейдж.. речь о том что абс возвращает минусовое значение при передаче минимального инта, верно? )) ну так ёу, это ж классика тестирования проверять методы на пограничных значениях. по-идее правильный тест должен был это выкусить. вот. Тестировать функцию, раскладывающую объекты по партициям на пограничное значение хэша объекта? Нет, мы ещё не параноики. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 12:32 |
|
А вы говорите, зачем тонкости на собеседовании спрашивать...
|
|||
---|---|---|---|
#18+
ну.. давай так.. может быть объект... с криво написанным хэшем... ты его используешь как отправную точку. я понимаю канеш что есть психи кто геттеры и сеттеры тестируют. но такую хитро выкрашенную функцию потестить на что-нибудь этакое - это сам боженька велел. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2018, 13:06 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2121761]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
others: | 321ms |
total: | 499ms |
0 / 0 |