Страница 2 из 6
Re: Вопросы с интервью....
Добавлено: 18 ноя 2006, 23:54
Leo Gan
папа Карло писал(а):на днях интервьюировал очередного девелопера. На этот раз для соседней группы... задал тривиальную задачку.... в ней в одном месте позитивное число сделать негативным не используя -1 * х..... ответ потряс меня своей "крутизной"
Код: Выделить всё
if ( a < 0 )
{
int z = 0;
for ( int i = a; i > 0; i++)
{
z++;
}
return z;
}
Насколько понял, интервьюируемый хотел предложить решение для int в виде z--. Т.е. от target числа (z) и от source(x) синхронно отнимать по 1. z ставится в начала в 0. Когда x достигнет 0, тогда z станет -х.
Добавлено: 18 ноя 2006, 23:55
Leo Gan
папа Карло писал(а):Marmot писал(а):x=-x
без умножения
откомпилируется такое?

а почему не откомпилируется?
Добавлено: 18 ноя 2006, 23:58
Leo Gan
на бумаге есть такой метод:
возвести число в квадрат,
от результата взять квадратный корень,
выбрать отрицательный результат.
В коде не знаю, как это реализовать, т.к. Math.Sqrt возвращает только положит.число всегда.
Re: Вопросы с интервью....
Добавлено: 19 ноя 2006, 05:42
Russ
папа Карло писал(а):на днях интервьюировал очередного девелопера. На этот раз для соседней группы... задал тривиальную задачку.... в ней в одном месте позитивное число сделать негативным не используя -1 * х..... ответ потряс меня своей "крутизной"
int y = (x ^ 0xFFFFFFFF) + 1;
Добавлено: 19 ноя 2006, 09:56
ura
Leo Gan писал(а):папа Карло писал(а):Marmot писал(а):x=-x
без умножения
откомпилируется такое?

а почему не откомпилируется?
Точки с запятой нет?

Re: Вопросы с интервью....
Добавлено: 19 ноя 2006, 10:16
ura
Russ писал(а):папа Карло писал(а):на днях интервьюировал очередного девелопера. На этот раз для соседней группы... задал тривиальную задачку.... в ней в одном месте позитивное число сделать негативным не используя -1 * х..... ответ потряс меня своей "крутизной"
int y = (x ^ 0xFFFFFFFF) + 1;
А если это была Java или managed code? Из контекста примера не понятно. А еще страшнее так ответить на C++ интервью

замордуют с разрядностью. Хотя скорее всего битовые операции папа и ожидал, но от "сеньера" хотел бы услышать нечто более обобщенное. Посему не хватает пары тройки ifdef для проверки платформы. Так что может это и простой, но мерзкий вопрос. Если такой задают, то не нравитесь вы интервьюиру

Добавлено: 19 ноя 2006, 10:44
sz
Не замордуют. С разрядностью и так все ясно.
Если человек знает, что (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 (тссс.. я ничего не говорил).
Добавлено: 19 ноя 2006, 10:51
Marmot
Старина Зотин писал(а):Например, gcc под ps3 (тссс.. я ничего не говорил).
Сказал, сказал, все слышали , выкладывайте сорцы гады!!!

Re: Вопросы с интервью....
Добавлено: 19 ноя 2006, 10:53
папа Карло
ura писал(а):Хотя скорее всего битовые операции папа и ожидал
неее.... еще раз.... это всего лишь одно место в кода для более большого вопроса. все, что я ожидал это
зачем что-то делать сложно? ведь этот код потом комуто саппортить надо

Добавлено: 19 ноя 2006, 11:00
Russ
зы: чтобы у интервьювера не возникали вопросы про разрядность, то можно написать так:
int y = ~x + 1;
просто первый вариант более нагляден для понимания сути, имхо
Re: Вопросы с интервью....
Добавлено: 19 ноя 2006, 11:04
Marmot
папа Карло писал(а):
неее.... еще раз.... это всего лишь одно место в кода для более большого вопроса. все, что я ожидал это
зачем что-то делать сложно? ведь этот код потом комуто саппортить надо

Ааа, всё понятно, Папа набирает исполнителей способных чётко и без вопросов следовать спекам, которые он(ну или кто другой) написал

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

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

Добавлено: 19 ноя 2006, 11:05
Marmot
Russ писал(а):зы: чтобы у интервьювера не возникали вопросы про разрядность, то можно написать так:
int y = ~x + 1;
просто первый вариант более нагляден для понимания сути, имхо
Ты не понял,нафиг, Папа хочет проверку на позитивность

Re: Вопросы с интервью....
Добавлено: 19 ноя 2006, 11:20
папа Карло
Marmot писал(а):Ааа, всё понятно, Папа набирает исполнителей способных чётко и без вопросов следовать спекам, которые он(ну или кто другой) написал

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

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

отучаемся думать за других... не стОит представлять за факт того, чего просто физически не знаешь. мне нужны люди способные самостоятельно работать... я не в ясли нанимаю чтоб бебиситить... есть разница между саппортом кода написанного в первом сообщении топика и одной простой строкой....
Добавлено: 19 ноя 2006, 11:25
папа Карло
Marmot писал(а):Russ писал(а):зы: чтобы у интервьювера не возникали вопросы про разрядность, то можно написать так:
int y = ~x + 1;
просто первый вариант более нагляден для понимания сути, имхо
Ты не понял,нафиг, Папа хочет проверку на позитивность

опять не прав. чтоб написать код по моему вопросу там в одном месте надо сделать позитивное число отрицательным. хехе... миспринт допустил в своей строке... долно быть вот так.....
флаг должен быть в ИФе... но основной код толстый...
Re: Вопросы с интервью....
Добавлено: 19 ноя 2006, 14:25
nemiga
папа Карло писал(а):в ней в одном месте позитивное число сделать негативным не используя -1 * х.....
А я не понял, почему нельзя:
?
.