Насколько понял, интервьюируемый хотел предложить решение для int в виде z--. Т.е. от target числа (z) и от source(x) синхронно отнимать по 1. z ставится в начала в 0. Когда x достигнет 0, тогда z станет -х.папа Карло писал(а):на днях интервьюировал очередного девелопера. На этот раз для соседней группы... задал тривиальную задачку.... в ней в одном месте позитивное число сделать негативным не используя -1 * х..... ответ потряс меня своей "крутизной"
Код: Выделить всё
if ( a < 0 ) { int z = 0; for ( int i = a; i > 0; i++) { z++; } return z; }
Вопросы с интервью....
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- Leo Gan
- Маньяк
- Сообщения: 1764
- Зарегистрирован: 29 апр 2005, 16:55
- Откуда: где-то рядом с жёлтым карликом
- Контактная информация:
Re: Вопросы с интервью....
- Leo Gan
- Маньяк
- Сообщения: 1764
- Зарегистрирован: 29 апр 2005, 16:55
- Откуда: где-то рядом с жёлтым карликом
- Контактная информация:
- Leo Gan
- Маньяк
- Сообщения: 1764
- Зарегистрирован: 29 апр 2005, 16:55
- Откуда: где-то рядом с жёлтым карликом
- Контактная информация:
-
- Пользователь
- Сообщения: 65
- Зарегистрирован: 23 июл 2006, 22:31
- Откуда: Ижевск, Россия
Re: Вопросы с интервью....
int y = (x ^ 0xFFFFFFFF) + 1;папа Карло писал(а):на днях интервьюировал очередного девелопера. На этот раз для соседней группы... задал тривиальную задачку.... в ней в одном месте позитивное число сделать негативным не используя -1 * х..... ответ потряс меня своей "крутизной"![]()
-
- Житель
- Сообщения: 915
- Зарегистрирован: 09 мар 2003, 22:46
-
- Житель
- Сообщения: 915
- Зарегистрирован: 09 мар 2003, 22:46
Re: Вопросы с интервью....
А если это была Java или managed code? Из контекста примера не понятно. А еще страшнее так ответить на C++ интервьюRuss писал(а):int y = (x ^ 0xFFFFFFFF) + 1;папа Карло писал(а):на днях интервьюировал очередного девелопера. На этот раз для соседней группы... задал тривиальную задачку.... в ней в одном месте позитивное число сделать негативным не используя -1 * х..... ответ потряс меня своей "крутизной"![]()


- sz
- Маньяк
- Сообщения: 1266
- Зарегистрирован: 17 фев 2003, 19:34
Не замордуют. С разрядностью и так все ясно.
Если человек знает, что (x ^ 0xFFFFFFFF) + 1 дает -x, то глупо надеяться, что он посыпется на вопросах о разрядности.
Но вообще-то джавистам такие вопросы ни к чему. Программировать без if-ов и умножений может понадобиться только сишнику на грани ассемблера.
Да и то, оптимизатор иногда генерит лучше, чем эти изыски. Ну например известная функция (могут быть ошибки, я из головы пишу и без проверки):
inline int max( int a, int b )
{
int c = a - b;
int d = c >> 31;
return ( d & c ) + ( ~d & b );
}
не всегда сгенерит более быстрый код, чем (a>b?a:b). Например, на платформах, где есть ассемблерный селект (а таких все больше), оптимизатор запросто использует его и обгонит эти извращения с битами.
Я уже не говорю о том, что он и сам может эти извращения выдать. Причем он это сделает лучше. Потому что intrinsic всегда лучше inline.
Так что этой фигней имеет смысл заниматься только с действительно плохими компиляторами. Например, gcc под ps3 (тссс.. я ничего не говорил).
Если человек знает, что (x ^ 0xFFFFFFFF) + 1 дает -x, то глупо надеяться, что он посыпется на вопросах о разрядности.
Но вообще-то джавистам такие вопросы ни к чему. Программировать без if-ов и умножений может понадобиться только сишнику на грани ассемблера.
Да и то, оптимизатор иногда генерит лучше, чем эти изыски. Ну например известная функция (могут быть ошибки, я из головы пишу и без проверки):
inline int max( int a, int b )
{
int c = a - b;
int d = c >> 31;
return ( d & c ) + ( ~d & b );
}
не всегда сгенерит более быстрый код, чем (a>b?a:b). Например, на платформах, где есть ассемблерный селект (а таких все больше), оптимизатор запросто использует его и обгонит эти извращения с битами.
Я уже не говорю о том, что он и сам может эти извращения выдать. Причем он это сделает лучше. Потому что intrinsic всегда лучше inline.
Так что этой фигней имеет смысл заниматься только с действительно плохими компиляторами. Например, gcc под ps3 (тссс.. я ничего не говорил).
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
Re: Вопросы с интервью....
неее.... еще раз.... это всего лишь одно место в кода для более большого вопроса. все, что я ожидал этоura писал(а):Хотя скорее всего битовые операции папа и ожидал
Код: Выделить всё
if ( a < 0 ) a = 0 - a;

-
- Пользователь
- Сообщения: 65
- Зарегистрирован: 23 июл 2006, 22:31
- Откуда: Ижевск, Россия
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Вопросы с интервью....
Ааа, всё понятно, Папа набирает исполнителей способных чётко и без вопросов следовать спекам, которые он(ну или кто другой) написалпапа Карло писал(а): неее.... еще раз.... это всего лишь одно место в кода для более большого вопроса. все, что я ожидал это
зачем что-то делать сложно? ведь этот код потом комуто саппортить надоКод: Выделить всё
if ( a < 0 ) a = 0 - a;

Флаг в руки, как говорится...
Кстати, на меня иногда находят затмения, когда я путаю вторую и третью часть for-a, ну и что?
И код на доске я уже давно не могу писать, меня IDE с полной заточкой под шорткаты развратили...

Те же форы у меня генерятся автоматически для всех основных паттернов

- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
Re: Вопросы с интервью....
отучаемся думать за других... не стОит представлять за факт того, чего просто физически не знаешь. мне нужны люди способные самостоятельно работать... я не в ясли нанимаю чтоб бебиситить... есть разница между саппортом кода написанного в первом сообщении топика и одной простой строкой....Marmot писал(а):Ааа, всё понятно, Папа набирает исполнителей способных чётко и без вопросов следовать спекам, которые он(ну или кто другой) написал
Флаг в руки, как говорится...
Кстати, на меня иногда находят затмения, когда я путаю вторую и третью часть for-a, ну и что?
И код на доске я уже давно не могу писать, меня IDE с полной заточкой под шорткаты развратили...
Те же форы у меня генерятся автоматически для всех основных паттернов
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
опять не прав. чтоб написать код по моему вопросу там в одном месте надо сделать позитивное число отрицательным. хехе... миспринт допустил в своей строке... долно быть вот так.....Marmot писал(а):Ты не понял,нафиг, Папа хочет проверку на позитивностьRuss писал(а):зы: чтобы у интервьювера не возникали вопросы про разрядность, то можно написать так:
int y = ~x + 1;
просто первый вариант более нагляден для понимания сути, имхо
Код: Выделить всё
if ( flag == true ) [b]a = 0 - a;[/b]
- nemiga
- Маньяк
- Сообщения: 2425
- Зарегистрирован: 02 сен 2006, 19:05
- Откуда: Minsk -> Seoul -> Ottawa
Re: Вопросы с интервью....
А я не понял, почему нельзя:папа Карло писал(а):в ней в одном месте позитивное число сделать негативным не используя -1 * х.....
Код: Выделить всё
x=0-x;
.