Что значит не ставилась, труъ интервьюверы ставят до смешного простую задачу, а потом ее усложняют до абсурда но постепенно, чтобы поциэнт ничего не заподозрил.Alexander Troyansky wrote:нет, так задача не ставилась. Не нужно из файла читатьZorkus wrote:Это ты корнер кейсы не рассмотрел. Например - строку надо прочитать из файла, строка такая здоровая что в память не помещается. Как тогда быть?АццкоМото wrote:Бгугога. 5 - максимум, если с бодуна не похмелившисьAlexander Troyansky wrote:если вам не жалко 5-10 минут, то попробуйте. Только это будет больше по времени
Google Recruiter
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: Google Recruiter
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Google Recruiter
Sol: I'm not in here to make a f...ng bet.Alexander Troyansky wrote:Однако это не отменяет факта, что решения задачи не показали. Ни за 5 минут, ни за час. Дело ваше, но вы меня не убедили.
Female Bookie: 'Preciated, but all... bets... are... off. If all bets are off, then there can't be any money can't there?
Sol: I'm not f...ng buying that.
Female Bookie: Well that's handy, 'cause I ain't f...ng selling it. It's a fact.
Х/Ф "Snatch"
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 3836
- Joined: 13 Sep 2007 10:06
Re: Google Recruiter
Эх... два работника гугла в этом треде считают, что вы гоните и что задача решена, по большому счёту, с самого начала.Alexander Troyansky wrote:В принципе, количество времени не имеет значения. Было бы интересно посмотреть дальнейшее развитие вашей мысли, если вам интересно. Я правда не собеседую Просто делюсь опытом, который поимел с Гуглом. В спокойной обстановке где-то за полчаса-час решается, ну никак не за 10 минут.crypto5 wrote:Alexander Troyansky wrote:1) Я согласен что Exception-ы тормозят, хотя и не всегда(http://stackoverflow.com/questions/4838 ... ns-in-java), но в данном случае баланс между premature optimization и simplicity был сдвинут в сторону второго
2) Мне это приходило в голову, но я решил что ожидая от вас ответа в сколько то минут не вложусь.
(Второе решение с явой содержит интересную ошибку, если строка на вход -+1 -- ошибка не будет возвращена).
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Google Recruiter
Единственное, что там можно увидеть более-менее интересное, если миллиард знаков побить на кусочки, которые влазят в более-менее дешевый тип типа long-а, распарсить сначала эти кусочки, а уже потом из них собирать монстрообразное целое. в зависимости от того, как глубоко въедаться можно потратить от +5 до +30 минут (если еще и параллелизм пытаться присобачить). но все это уже так. фантазииZorkus wrote: Я говорил - целое, я не говорил в явовский инт Ну строка состоит из милларда знаков например. Память процесса ограничена через -Xmx Воо, стриминг процессинг рулит. Ну пусть +1-2 минуты, ок.
кстати облажался на элементарном вопросе от гугла. короче они несли долгую пургу о том, что типа есть у нас расшифрованная молекула ДНК и есть известная последовательность нуклеотидных пар вируса. и типа нам нужно понять, мы все умрем или вируса нет. я такой тупил-тупил, говорю, вы что, хотите найти подстроку в строке? они такие - ну типа да, только довольно длинную подстроку в офигенно длинной строке. я говорю - ну ок, ищите, кто ж мешает. но вы же хотите от меня чего-то оптимального? ну да, говорят. единственное, что совершенно очевидно приходит в голову, что нуклеиновых кислот всего 4, на один символ нужно 2 бита, если упаковать, то типа строки получаются короче, но и искать нужно будет не 1 подстроку, а 4 (если символ=байт) ну и потанцевать еще вокруг границ. хорошо, говорят, давай еще оптимальнее. кряхтел-пердел, говорю - нет, в общем случае никак. (потом по здравому размышлению появились варианты, потом не считается)
и тут они намекают, говорят, ну мы же ж гугл, мы вообще по обработке больших данных спецы. и контуперов у нас много. ну йо... в совершенно очевидном месте про распараллеливание даже мысли не возникло
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 5665
- Joined: 15 Aug 2008 00:52
Re: Google Recruiter
Из секретного донесения в КанцеляриюАццкоМото wrote:Sol: I'm not in here to make a f...ng bet.Alexander Troyansky wrote:Однако это не отменяет факта, что решения задачи не показали. Ни за 5 минут, ни за час. Дело ваше, но вы меня не убедили.
Female Bookie: 'Preciated, but all... bets... are... off. If all bets are off, then there can't be any money can't there?
Sol: I'm not f...ng buying that.
Female Bookie: Well that's handy, 'cause I ain't f...ng selling it. It's a fact.
Х/Ф "Snatch"
Объект: АццкоМотто
Характеристика: профессионал, свободно ориентируется в последних технологиях, в совершенстве владеет английским (рекомендется на проверить на связь с британской разведкой – примеч. повторной проверки: не состоит). Подвержен следующим порокам: не равнодушен к алкоголю, груб, чистолюбив – пригоден для дальнейшей разработки.
Агент Т.
I would hope that a wise white man with the richness of his experiences would more often than not reach a better conclusion than a latina female who hasn't lived that life
-
- Уже с Приветом
- Posts: 5665
- Joined: 15 Aug 2008 00:52
Re: Google Recruiter
Да вы не стесняйтесь, предлагайте решение. Там "интересных ошибок" несколько, а не только та, которую вы упомянули.avitya wrote:Эх... два работника гугла в этом треде считают, что вы гоните и что задача решена, по большому счёту, с самого начала.Alexander Troyansky wrote:В принципе, количество времени не имеет значения. Было бы интересно посмотреть дальнейшее развитие вашей мысли, если вам интересно. Я правда не собеседую Просто делюсь опытом, который поимел с Гуглом. В спокойной обстановке где-то за полчаса-час решается, ну никак не за 10 минут.crypto5 wrote:Alexander Troyansky wrote:1) Я согласен что Exception-ы тормозят, хотя и не всегда(http://stackoverflow.com/questions/4838 ... ns-in-java), но в данном случае баланс между premature optimization и simplicity был сдвинут в сторону второго
2) Мне это приходило в голову, но я решил что ожидая от вас ответа в сколько то минут не вложусь.
(Второе решение с явой содержит интересную ошибку, если строка на вход -+1 -- ошибка не будет возвращена).
I would hope that a wise white man with the richness of his experiences would more often than not reach a better conclusion than a latina female who hasn't lived that life
-
- Уже с Приветом
- Posts: 9035
- Joined: 25 Oct 2011 19:02
- Location: SVO->ORD->SFO
Re: Google Recruiter
Если фунцию назвали atoi, то возвращать надо именно 0. И оставляем Int в покое. Леонид Ильич дело говорит, только по старости лет попутал 0 с null'ом.Интеррапт wrote:Можно. Только тогда сигнатуру метода придется с базового типа int на класс Integer менять. Ведь int не может быть null.Леонид Ильич Брежнев wrote: Стесняюсь прямо-таки спросить. А что null вернуть нельзя?
-
- Уже с Приветом
- Posts: 9194
- Joined: 04 Mar 2011 03:04
- Location: SFBA
Re: Google Recruiter
nullptr теперь известен языку, как легальное значение невалидного указателя. NULL не кошерен, и вовсе int, который вредно мешать с адресом, кроме как вычисляя другой адрес по смещению.
http://stackoverflow.com/questions/1282 ... is-nullptr
http://stackoverflow.com/questions/1282 ... is-nullptr
... and even then it's rare that you'll be going there...
-
- Уже с Приветом
- Posts: 5665
- Joined: 15 Aug 2008 00:52
Re: Google Recruiter
Речь не обязательно про классический atoi.
Ну если никому больше неинтересно, то вот мой вариант -- мне кажется, что решить за 5-10 минут трудно:
Признаю: в EBCDIC работать не будет, пробелы не удаляет.
Сильно не гнобите - я всё равно не программист
Ну если никому больше неинтересно, то вот мой вариант -- мне кажется, что решить за 5-10 минут трудно:
Code: Select all
const int MAX_INT=0x7fffffff;
const int MIN_INT=-MAX_INT-1;
bool str2int(const char * str, int & res)
{
if (!str || !*str)
return false;
res = 0;
bool bNeg = *str == '-';
if (bNeg)
str++;
if (!*str)
return false;
do
{
char c = *str - '0';
if (c >= 0 && c <= 9)
{
if (bNeg)
{
if (MIN_INT/10 > res)
return false;
res = -10*abs(res);
if (MIN_INT + c > res)
return false;
res -= c;
}
else
{
if (MAX_INT/10 < res)
return false;
res *= 10;
if (MAX_INT - c < res)
return false;
res += c;
}
}
else
return false;
}
while(*++str);
return true;
}
int main(int argc, char* argv[])
{
int res;
assert(!str2int(NULL, res));
assert(!str2int("", res));
assert(!str2int("-", res));
assert(!str2int(" ", res));
assert(str2int("0", res)); assert(res == 0);
assert(str2int("-123", res)); assert(res == -123);
assert(str2int("123", res)); assert(res == 123);
assert(!str2int("12-3", res));
assert(str2int("00123", res)); assert(res == 123);
assert(str2int("2147483647", res)); assert(res == MAX_INT);
assert(str2int("2147483646", res)); assert(res == MAX_INT -1);
assert(!str2int("2147483648", res));
assert(!str2int("2147483649", res));
assert(str2int("-2147483647", res)); assert(res == MIN_INT+1);
assert(str2int("-2147483648", res)); assert(res == MIN_INT);
assert(!str2int("-2147483649", res));
return 0;
}
Сильно не гнобите - я всё равно не программист
I would hope that a wise white man with the richness of his experiences would more often than not reach a better conclusion than a latina female who hasn't lived that life
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Google Recruiter
Мамочки... зачем же столько букв-то???
так что ли трудно проверить на переполнение
if (j=10*i+c<i) return achtung; else i=j;
и знак менять уже за циклом, а не проверять на него на каждой итерации
так написать действительно очень-очень-очень сложно. потому что это чудовищно
UPD. Уточнение: считать в отрицательных числах, соответственно, if (j=10*i-c>i) в конце, если результат должен быть положительным, проверять на MIN_INT
так что ли трудно проверить на переполнение
if (j=10*i+c<i) return achtung; else i=j;
и знак менять уже за циклом, а не проверять на него на каждой итерации
так написать действительно очень-очень-очень сложно. потому что это чудовищно
UPD. Уточнение: считать в отрицательных числах, соответственно, if (j=10*i-c>i) в конце, если результат должен быть положительным, проверять на MIN_INT
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 5665
- Joined: 15 Aug 2008 00:52
Re: Google Recruiter
я так понял achtung срабатывает на отрицательных числахАццкоМото wrote:Мамочки... зачем же столько букв-то???
так что ли трудно проверить на переполнение
if (j=10*i+c<i) return achtung; else i=j;
и знак менять уже за циклом, а не проверять на него на каждой итерации
так написать действительно очень-очень-очень сложно. потому что это чудовищно
I would hope that a wise white man with the richness of his experiences would more often than not reach a better conclusion than a latina female who hasn't lived that life
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Google Recruiter
Он срабатывает на переполненииAlexander Troyansky wrote:я так понял achtung срабатывает на отрицательных числахАццкоМото wrote:Мамочки... зачем же столько букв-то???
так что ли трудно проверить на переполнение
if (j=10*i+c<i) return achtung; else i=j;
и знак менять уже за циклом, а не проверять на него на каждой итерации
так написать действительно очень-очень-очень сложно. потому что это чудовищно
ЗЫ. И вот это
if (!*str)
return false;
не несет вообще никакого смысла
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Google Recruiter
Ну это как бы проверка на пустую строку. Так что в принципе смысл в этом есть. Я лично все-равно люблю более читаемые конструкции типа if(*str == '\0'), но это уже дело вкуса.АццкоМото wrote: ЗЫ. И вот это
if (!*str)
return false;
не несет вообще никакого смысла
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Google Recruiter
Это проверка на то, не кончилась ли строка сразу после минуса. но поскольку дальше идет цикл с проверкой, что символ под указателем - от '0' до '9', ее можно безболезненно выкинутьИнтеррапт wrote: Ну это как бы проверка на пустую строку. Так что в принципе смысл в этом есть. Я лично все-равно люблю более читаемые конструкции типа if(*str == '\0'), но это уже дело вкуса.
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Google Recruiter
Это да. Т.е. мы как бы дойдем до проверки '\0' - '0'. Не люблю я такое, хоть и вполне легальная конструкция.АццкоМото wrote:Это проверка на то, не кончилась ли строка сразу после минуса. но поскольку дальше идет цикл с проверкой, что символ под указателем - от '0' до '9', ее можно безболезненно выкинутьИнтеррапт wrote: Ну это как бы проверка на пустую строку. Так что в принципе смысл в этом есть. Я лично все-равно люблю более читаемые конструкции типа if(*str == '\0'), но это уже дело вкуса.
Вообщем, Александр, если вы эту задачу решили за 10 минут, давайте зачетку
-
- Уже с Приветом
- Posts: 3836
- Joined: 13 Sep 2007 10:06
Re: Google Recruiter
Вот хоть убей не нравится мне этот код . Нету в нём души, что ли?
И зачем вы делаете do while? Это сильно уменьшает читабельность.
И зачем вы делаете do while? Это сильно уменьшает читабельность.
-
- Уже с Приветом
- Posts: 5665
- Joined: 15 Aug 2008 00:52
Re: Google Recruiter
а, увидел, что отрицательные числа вы всё-таки тоже решили включить. Так получается:АццкоМото wrote:Он срабатывает на переполненииAlexander Troyansky wrote:я так понял achtung срабатывает на отрицательных числахАццкоМото wrote:Мамочки... зачем же столько букв-то???
так что ли трудно проверить на переполнение
if (j=10*i+c<i) return achtung; else i=j;
и знак менять уже за циклом, а не проверять на него на каждой итерации
так написать действительно очень-очень-очень сложно. потому что это чудовищно
ЗЫ. И вот это
if (!*str)
return false;
не несет вообще никакого смысла
Code: Select all
bool str2int(const char * str, int & res)
{
if (!str || !*str)
return false;
res = 0;
bool bNeg = *str == '-';
if (bNeg)
str++;
int res0;
do
{
char c = *str - '0';
if (c >= 0 && c <= 9)
{
if (bNeg) {
res0 = -res;
res = -10 * res0 - c;
if (res > res0)
return false;
} else {
res0 = res;
res = 10 * res0 + c;
if (res < res0)
return false;
}
}
else
return false;
}
while(*++str != '\0');
return true;
}
I would hope that a wise white man with the richness of his experiences would more often than not reach a better conclusion than a latina female who hasn't lived that life
-
- Уже с Приветом
- Posts: 5665
- Joined: 15 Aug 2008 00:52
Re: Google Recruiter
Не, низачот:Интеррапт wrote:Это да. Т.е. мы как бы дойдем до проверки '\0' - '0'. Не люблю я такое, хоть и вполне легальная конструкция.АццкоМото wrote:Это проверка на то, не кончилась ли строка сразу после минуса. но поскольку дальше идет цикл с проверкой, что символ под указателем - от '0' до '9', ее можно безболезненно выкинутьИнтеррапт wrote: Ну это как бы проверка на пустую строку. Так что в принципе смысл в этом есть. Я лично все-равно люблю более читаемые конструкции типа if(*str == '\0'), но это уже дело вкуса.
Вообщем, Александр, если вы эту задачу решили за 10 минут, давайте зачетку
- превысил время;
- лоханулся с переполнением;
- использовал компилятор;
- лишние инструкции;
- вот do-while использовал;
В свое оправдание могу сказать, что больше ничей работающий код не видел. Пока. Ну были ленивые понукания, типа "Чудовищно! Громоздко! Да я, да я, да за пять-десять минут!"
А так чтобы выйти, не спужавшись, вот только crypto5, ну и я
I would hope that a wise white man with the richness of his experiences would more often than not reach a better conclusion than a latina female who hasn't lived that life
-
- Уже с Приветом
- Posts: 617
- Joined: 23 Sep 2005 06:56
- Location: SFBA
Re: Google Recruiter
ну и зачем требовать такую детализацию во время интервью? Мне лично достаточно, если кандидат напишет пару строк кода, чтоб был понятен алгоритм, и чтоб упомянул про все проверки, можно просто словами.
Что лично почерпнет интервьювер из такой детально решеной задачки кроме того что кандидат может написать атои?
ведь на все остальное времени не останется.
Что лично почерпнет интервьювер из такой детально решеной задачки кроме того что кандидат может написать атои?
ведь на все остальное времени не останется.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Google Recruiter
может как раз ищутся фронтендщики разрабатывающие УИ, и там наверное очень важное качество предвидеть все ошибки и злые намерения пользователя и вычислить все граничные условия.xtigr wrote:ну и зачем требовать такую детализацию во время интервью? Мне лично достаточно, если кандидат напишет пару строк кода, чтоб был понятен алгоритм, и чтоб упомянул про все проверки, можно просто словами.
Что лично почерпнет интервьювер из такой детально решеной задачки кроме того что кандидат может написать атои?
ведь на все остальное времени не останется.
In vino Veritas!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Google Recruiter
Во-во. Что собственно я тоже упомянул на предидущих страницах. Достаточно увидеть, что кандидат умеет писать элементарный код ну и переходим к более интересным задачам.xtigr wrote:ну и зачем требовать такую детализацию во время интервью? Мне лично достаточно, если кандидат напишет пару строк кода, чтоб был понятен алгоритм, и чтоб упомянул про все проверки, можно просто словами.
Что лично почерпнет интервьювер из такой детально решеной задачки кроме того что кандидат может написать атои?
ведь на все остальное времени не останется.
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Google Recruiter
нет, не так, так еще хуже, хотя казалось бы, возможно ли этоAlexander Troyansky wrote:а, увидел, что отрицательные числа вы всё-таки тоже решили включить. Так получается:
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 9194
- Joined: 04 Mar 2011 03:04
- Location: SFBA
Re: Google Recruiter
Последний раз в MS так и спрашивали (при том, трое разных), а как бы вы реализовали, ну, хорошо, кодируйте, ну ладно, ясно... дальше. Но затормозив на конкретном алгоритме, допрашиваемый был подвергнут дополнительным вопросам.xtigr wrote:ну и зачем требовать такую детализацию во время интервью? Мне лично достаточно, если кандидат напишет пару строк кода, чтоб был понятен алгоритм, и чтоб упомянул про все проверки, можно просто словами.
Что лично почерпнет интервьювер из такой детально решеной задачки кроме того что кандидат может написать атои?
ведь на все остальное времени не останется.
... and even then it's rare that you'll be going there...
-
- Уже с Приветом
- Posts: 5665
- Joined: 15 Aug 2008 00:52
Re: Google Recruiter
ну вот я о чем и говорил: "Ужасно! Чудовищно! Так нельзя!". Ну я не умею угадывать мысли, поэтому взял на себя труд попытаться угадать, что конкретно вы имели в виду. Ну не хотите, как хотите. Это вроде лишь дело 5 минут, но мы тут с вами бодаемся уже который час.АццкоМото wrote:нет, не так, так еще хуже, хотя казалось бы, возможно ли этоAlexander Troyansky wrote:а, увидел, что отрицательные числа вы всё-таки тоже решили включить. Так получается:
I would hope that a wise white man with the richness of his experiences would more often than not reach a better conclusion than a latina female who hasn't lived that life
-
- Уже с Приветом
- Posts: 5665
- Joined: 15 Aug 2008 00:52
Re: Google Recruiter
это была позиция тестера. Последнее интервью. Как-то получилось, что все собеседники уделяли минут 10-20 на общие вопросы: чего и как делал; почему Гугл... Остальное время на задачи всякие разные; по всей видимости, собеседующий хотел знать, как бы я работал в условиях недостатка данных/спецификаций типа "задавай вопросы". Простым упомянанием проверок я не отделался -- потребовалось кодирование на доске. Погорел классическим образом: упустил проверку граничных условий. Помню, что собеседователь очень распереживался.xtigr wrote:ну и зачем требовать такую детализацию во время интервью? Мне лично достаточно, если кандидат напишет пару строк кода, чтоб был понятен алгоритм, и чтоб упомянул про все проверки, можно просто словами.
Что лично почерпнет интервьювер из такой детально решеной задачки кроме того что кандидат может написать атои?
ведь на все остальное времени не останется.
I would hope that a wise white man with the richness of his experiences would more often than not reach a better conclusion than a latina female who hasn't lived that life