Re[4]: # как манагеров достали те, кого достали манагеры
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.12.10 17:32
Оценка: +1
Здравствуйте, dZentle_man, Вы писали:

Pzz>>>Ну осмысленным этот код выглядит, если TYPEA — float или double (проверяет, что значение столь велико, что прибавление 1 тонет в округлении).

М>>вот видите. все просто.
Z_>То есть проверяется опыт работы с вещественными?

Ну, скорее, общий кругозор. Я вот ответ придумал, а с плавучкой сроду не работал (и не умею с ней работать, по большому счету)
Re[5]: # как манагеров достали те, кого достали манагеры
От: Pzz Россия https://github.com/alexpevzner
Дата: 26.12.10 17:43
Оценка: +1
Здравствуйте, -MyXa-, Вы писали:

Pzz>>Велико по абсолютному значению


MX>Ой. Я имел в виду "сильно близко к 0". Через это, например, машинный ноль определяется.


Как это? Если число синьно близко к 0, то прибавляя к нему 1, вы получите результат, сильно близкий к единице.
Re[7]: # как манагеров достали те, кого достали манагеры
От: Cyberax Марс  
Дата: 26.12.10 17:56
Оценка: :)
Здравствуйте, jed, Вы писали:

C>>Опосредованно — много для чего. Банальный цикл for может вдруг стать бесконечным, к примеру.

jed>При каком "а" там возможно true? При undefined или что-то подобное?
При a=2^54

Можешь попробовать.
Sapienti sat!
Re: # как манагеров достали те, кого достали манагеры
От: AlexFox  
Дата: 26.12.10 18:27
Оценка: 1 (1) +2 :))) :))
Здравствуйте, мыщъх, Вы писали:

М>ЗЫ. Действие происходило в долине сисек.


Тема сисек не раскрыта.
Re[8]: # как манагеров достали те, кого достали манагеры
От: jed  
Дата: 26.12.10 18:31
Оценка:
C>При a=2^54
C>Можешь попробовать.

Попробовал на IE7 и FF 3.6, и правда есть такое. Забавно. Но начинается с 2^53.
Где-то видимо парсит строку как число и не хватает разрядов? По идее могли бы и ексепшен кидать.


------ p=51
a_e=2.251799813685248e+15
a__=2251799813685248
a+1=22517998136852481
(a+1==a)=false
------ p=52
a_e=4.503599627370496e+15
a__=4503599627370496
a+1=45035996273704961
(a+1==a)=false
------ p=53
a_e=9.007199254740992e+15
a__=9007199254740992
a+1=90071992547409921
(a+1==a)=true
------ p=54
a_e=1.8014398509481984e+16
a__=18014398509481984
a+1=180143985094819841
(a+1==a)=true
------ p=55
a_e=3.602879701896397e+16
a__=36028797018963970
a+1=360287970189639701
(a+1==a)=true


var p = [51,52,53,54,55];
for(var i in p){
    Log("------ p="+p[i]);
    var  a = Math.pow(2,p[i]);
    Log("a_e="+a.toExponential());
    Log("a__="+a);
    Log("a+1="+a+1);
    Log("(a+1==a)="+(a+1==a));
}
Re[9]: # как манагеров достали те, кого достали манагеры
От: jed  
Дата: 26.12.10 18:35
Оценка:
ошибся с преведение к строке, но получилось то же самое 2^53

------ p=51
2251799813685248
2251799813685249
(a+1==a)=false
------ p=52
4503599627370496
4503599627370497
(a+1==a)=false
------ p=53
9007199254740992
9007199254740992
(a+1==a)=true
------ p=54
18014398509481984
18014398509481984
(a+1==a)=true
------ p=55
36028797018963970
36028797018963970
(a+1==a)=true


var p = [51,52,53,54,55];
for(var i in p){
    Log("------ p="+p[i]);
    var  a = Math.pow(2,p[i]);
    var  b = a+1;
    Log(a);
    Log(b);
    Log("(a+1==a)="+(b==a));
}
Re[2]: # как манагеров достали те, кого достали манагеры
От: carpenter Голландия  
Дата: 26.12.10 18:52
Оценка: +1
Здравствуйте, shrecher, Вы писали:

S>Здравствуйте, мыщъх, Вы писали:


М>>foo(TYPEA a){ return ((a + 1) == a); }


М>>1) определить TYPEA;


S>Я думаю, TYPEA имеет перегруженный "operator +(int)", который ничего не делает. В результате, a + 1 не меняеет значение. В принципе, я больше не вижу решений, которые не зависили бы от плаформы или компайлера.


ога — я тоже о чемто подобном подумал
Весь мир — Кремль, а люди в нем — агенты
Re[2]: # как манагеров достали те, кого достали манагеры
От: SE Украина  
Дата: 26.12.10 19:22
Оценка:
Здравствуйте, Alexey Sudachen, Вы писали:

М>>Как вы считаете, сколько кандидатов прошло тест даже когда им предоставили комп и минут с полчаса для раздумий и экспериментрв?


AS>И сколько? Колись давай!


AS>На моей памяти никто из собеседуемых не мог обьяснить, как так может быть что (int)(.5+i) == (int)(1.5+i). i — целое. А казалось бы.


Ну так это по стандарту во множестве языков. Связан с округлением больших массивов чисел в банковской сфере, насколько помню.
Интересно, что .NET в первой версии Math.Round был только один вариант округления, а во втором их два
Re[9]: # как манагеров достали те, кого достали манагеры
От: Cyberax Марс  
Дата: 26.12.10 20:07
Оценка:
Здравствуйте, jed, Вы писали:

C>>При a=2^54

C>>Можешь попробовать.
jed>Попробовал на IE7 и FF 3.6, и правда есть такое. Забавно. Но начинается с 2^53.
2^54 я с запасом назвал.

jed>Где-то видимо парсит строку как число и не хватает разрядов? По идее могли бы и ексепшен кидать.

Не совсем. Это вполне честное поведение для double-числа, в которое и разбирается строка. А вот то что в JavaScript все числа — это double как раз и может быть очень неожиданно.
Sapienti sat!
Re[3]: # как манагеров достали те, кого достали манагеры
От: Alexey Sudachen Чили  
Дата: 26.12.10 20:12
Оценка:
Здравствуйте, SE, Вы писали:

AS>>На моей памяти никто из собеседуемых не мог обьяснить, как так может быть что (int)(.5+i) == (int)(1.5+i). i — целое. А казалось бы.

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

и -1 тоже? =))) тут специально два ответа.

Но вообще-то конечно да, это должен знать каждый уважающий себя программер =) от только проблема в том что не зают.

P.S.
как на счёт залинкидиниться? я, к сожалению, инвайт без мыла прислать не могу =(
http://www.linkedin.com/in/alexeychen
Re[3]: # как манагеров достали те, кого достали манагеры
От: Олег К.  
Дата: 26.12.10 23:55
Оценка: -1
ОК>>ЗЫ. Где return type?
M>Это же C без плюс плюс.
Конкретно эта фича называется "implicit int" и была deprecated еще в 1988-ом году. Речь именно о Си.

Советую учить Си по Кернигану и Ритчи а непонятно по кому.
Re[4]: # как манагеров достали те, кого достали манагеры
От: мыщъх США http://nezumi-lab.org
Дата: 27.12.10 00:26
Оценка:
Здравствуйте, -MyXa-, Вы писали:

MX>Здравствуйте, мыщъх, Вы писали:


М>>на си есть bool?


MX>Гугль набирает сишников?

эта задача давалась по меньшей мере на c/c++, java, js и, кажется, какие-то еще скриптовые языки. но тут я уже не уверен. поскольку я знаю си и совем чуть-чуть js, то остальное меня не интересовало. собственно, задача давалась не мне. собеседования я по ней не проходил. просто у нас зашел разговор какие программеры круче и мне привели пример на чем валятся американские выпускники и полюбопытствовали -- а как с этим у русских. вот завтра пошлю ссылку на этот форум. пусть гугловцы переводят своим гугл транслейтом мож кому оффер подкинут
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[5]: # как манагеров достали те, кого достали манагеры
От: мыщъх США http://nezumi-lab.org
Дата: 27.12.10 00:32
Оценка:
Здравствуйте, Олег К., Вы писали:

Pzz>>>>Ну осмысленным этот код выглядит, если TYPEA — float или double (проверяет, что значение столь велико, что прибавление 1 тонет в округлении).

М>>>вот видите. все просто.
Z_>>То есть проверяется опыт работы с вещественными?
ОК>Имхо кто-то выпендривается.
задача как задача. все же лучше, чем сдвинуть гору фудзи кстати, гугл большой. намного больше чем слон. единого стандарта набора спецов там нет. HR'ы обращаются к программерам, чтобы те составили им задачку которая не встречалась ранее и которая бы проверяла базовые знания. кстати, работа с вещественными это и есть та база без которой никуда. как тут уже справедливо заметили, что банальный цикл рискует стать бесконечным только потому что на каком-то этапе обломиться с инкрементом. хотя сам я с вещественными не работаю. только целочисленка, т.к. в основном пишу разные системные тулзы для распаковки файлов, детекции вирусов и т.д. там плавучка вообще не упала. зачем плавучка гуглу -- ну я тут не знаю. зависит от специализации...
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[2]: # как манагеров достали те, кого достали манагеры
От: мыщъх США http://nezumi-lab.org
Дата: 27.12.10 00:42
Оценка:
Здравствуйте, Олег К., Вы писали:

М>>Привожу вариант для сишников:

М>>foo(TYPEA a){ return ((a + 1) == a); }

М>>1) определить TYPEA;

М>>2) объяснить смысловую нагрузку данного кода;
М>>3) назвать (без компьютера) хотя бы одно 'a' при котором условие истинно;
М>>hint: ЦП без багов, язык ансишный, по стандарту.

ОК>Практическая ценность сего вопроса?

хз. какая практическая ценность в сексе с горой фудзи?

ОК>ЗЫ. Где return type?

гм, ну тут я слегка сократил задачу. в оригинале было if ((a+1)==a) return true; else return false; но это ИМХО избыточно, т.к. ((a+1)==a) _уже_ true или false
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[5]: # как манагеров достали те, кого достали манагеры
От: мыщъх США http://nezumi-lab.org
Дата: 27.12.10 00:42
Оценка:
Здравствуйте, dilmah, Вы писали:


MX>>Гугль набирает сишников?


D>их интел купил, а не гугл

еще не купил.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[2]: # как манагеров достали те, кого достали манагеры
От: мыщъх США http://nezumi-lab.org
Дата: 27.12.10 00:52
Оценка:
Здравствуйте, Pavel_Agurov, Вы писали:

М>>А все потому что претендентам на Senior C/C++, Senior Java, Senior JavaScript, etc... было предложено следующее задание в стиле "блиц" для решения на бумаге за 30 сек.

М>>Привожу вариант для сишников:
М>>foo(TYPEA a){ return ((a + 1) == a); }
М>>1) определить TYPEA;
М>>2) объяснить смысловую нагрузку данного кода;
М>>3) назвать (без компьютера) хотя бы одно 'a' при котором условие истинно;

P_A>Смысла в этом 0. За такие вопросы на интервью нужно выгоднять манагеров, а не претендентов.

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

P_A>Это из серии — быстро в уме подсчитайте что будет после ++i--i++i--++ или (*p++)-- и

кстати, если память мне не изменяет, то что-то смутно помниться про вычислить в уме **p++; где-то мелькала и такая задача.

P_A>подобный удивительные конструкции. Да это можно в С++, да бывает нужно — ну так и код

P_A>тогда должен быть соответствующий.

P_A>Тип тут придумать можно. Смысловая нагрузка как-то теряется.

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

P_A>Встречный вопрос — зачем и кто придумал писать код так, чтобы у другого этот код вызывал

P_A>размышнения даже на 30 сек? Пишите по-человечески! Так чтобы при чтении кода не возникал вопрос WTF!

P_A>P.S. Я манагер. Такие вопросы не задавал и никогда не буду.
скажу про себя. я думаю медленно. и потому даже за руль садиться не рискую. ибо сразу впадаю в ступор. но вот если дать мне время... и если не дышать над ухом, то справлюсь даже раньше срока. и я тоже против задач в стиле "блиц". но в данном случае задача слишком проста.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[3]: # как манагеров достали те, кого достали манагеры
От: мыщъх США http://nezumi-lab.org
Дата: 27.12.10 01:03
Оценка:
Здравствуйте, Sap78, Вы писали:

S>Здравствуйте, Pzz, Вы писали:


Pzz>>Ну осмысленным этот код выглядит, если TYPEA — float или double (проверяет, что значение столь велико, что прибавление 1 тонет в округлении).


S>Для меня этот код не выглядит осмысленным, даже если TYPEA — float или double.


S>
S>if(foo(myDoubleVariable))
S>{
S>//значение myDoubleVariable столь велико, что прибавление 1 тонет в округлении
S>//факт, конечно, забавный, но что с этим делать в production code - непонятно.
S>}
S>


внимание, правильный ответ:
(ну может не совсем правильный, но это то, что ответил я и мне сказали -- угу, это мы и хотели бы услышать). этот код проверят -- не вышло ли 'a' за диапазон, в котором начинаются потери слева от запятой, но этот код кривой и делает это неправильно, поскольку операция сравнения с плавучкой оператором == не делаются и в продакшене этому коду не место, конечно. с другой стороны, касательно js и других языков где типы невозможно задать явно это вполне сносный способ оценки с каким типом мы имеем дело, при условии, что интерпретатор языка не будет менять типы на лету.

это было то, что ответил я. и мне сказали "угу", а "угу" это по крайней мере "уд".
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[2]: # как манагеров достали те, кого достали манагеры
От: мыщъх США http://nezumi-lab.org
Дата: 27.12.10 01:11
Оценка:
Здравствуйте, Finder_b, Вы писали:

F_>Здравствуйте, мыщъх, Вы писали:


М>>Привожу вариант для сишников:


М>>foo(TYPEA a){ return ((a + 1) == a); }


М>>1) определить TYPEA;

F_>Double, long double или float

М>>2) объяснить смысловую нагрузку данного кода;

F_>Проверка на то превысило ли число допустимый диапазон? Фигня какая то, для финансов надо использовать фиксированную точку или десятичные цифры, для остальной математики не имеет смысла.

про финансы никто не говорил. мое мнение, что TYPEA это все-таки плавучка, но для плавучки в общем случае нельзя использовать '=='. а смысл данного кода... ну это похоже на проверку успешности инкремента на единицу. как только единица теряется мы думаем что делать по контексту.

М>>3) назвать (без компьютера) хотя бы одно 'a' при котором условие истинно;

F_>Бесконечность? Её вроде можно было сравнивать на равенство.
9,007,199,254,740,992 (20,0000,0000,0000h) например. то, что назвал я. это для float.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[4]: # как манагеров достали те, кого достали манагеры
От: мыщъх США http://nezumi-lab.org
Дата: 27.12.10 01:23
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, мыщъх, Вы писали:


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


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

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

мой ход рассуждений был таким -- если это арифметика с насыщением, то выражение имеет смысл, но где вы видели арифметику с насыщением на си? а вот если это вещественное, то добавление единицы может и не изменить значения. а вот зачем делать такую проверку -- вот тут я теряюсь. если это проверка диапазона в котором можно добавлять единицы без потерь, то код неверен. т.к. существует такое "а" для которого (a+1)==a ложно, но (a+1+1)==a истино (типа попали на "стык" округления). остается только проверка успешности добавления единицы, которая может быть использована в... цикле?!


Pzz>>>Для bool'ов тоже должно работать, но смысл не улавливается.

М>>на си есть bool?

Pzz>на c99 есть

опс. точно. совсем забыл.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[4]: # как манагеров достали те, кого достали манагеры
От: мыщъх США http://nezumi-lab.org
Дата: 27.12.10 01:39
Оценка:
Здравствуйте, Олег К., Вы писали:

ОК>>>ЗЫ. Где return type?

M>>Это же C без плюс плюс.
ОК>Конкретно эта фича называется "implicit int" и была deprecated еще в 1988-ом году. Речь именно о Си.

ОК>Советую учить Си по Кернигану и Ритчи а непонятно по кому.

но до сих пор работает: foo(a,b){return a+b;}
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.