Google Recruiter

Zorkus
Уже с Приветом
Posts: 6969
Joined: 26 Feb 2011 17:40

Re: Google Recruiter

Post by Zorkus »

Alexander Troyansky wrote:
Zorkus wrote:
АццкоМото wrote:
Alexander Troyansky wrote:если вам не жалко 5-10 минут, то попробуйте. Только это будет больше по времени
Бгугога. 5 - максимум, если с бодуна не похмелившись
Это ты корнер кейсы не рассмотрел. Например - строку надо прочитать из файла, строка такая здоровая что в память не помещается. Как тогда быть?
нет, так задача не ставилась. Не нужно из файла читать
Что значит не ставилась, труъ интервьюверы ставят до смешного простую задачу, а потом ее усложняют до абсурда 8) но постепенно, чтобы поциэнт ничего не заподозрил.
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Google Recruiter

Post by АццкоМото »

Alexander Troyansky wrote:Однако это не отменяет факта, что решения задачи не показали. Ни за 5 минут, ни за час. Дело ваше, но вы меня не убедили.
Sol: I'm not in here to make a f...ng bet.
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"
Мат на форуме запрещен, блдж!
avitya
Уже с Приветом
Posts: 3836
Joined: 13 Sep 2007 10:06

Re: Google Recruiter

Post by avitya »

Alexander Troyansky wrote:
crypto5 wrote:
Alexander Troyansky wrote:1) Я согласен что Exception-ы тормозят, хотя и не всегда(http://stackoverflow.com/questions/4838 ... ns-in-java), но в данном случае баланс между premature optimization и simplicity был сдвинут в сторону второго
2) Мне это приходило в голову, но я решил что ожидая от вас ответа в сколько то минут не вложусь.
В принципе, количество времени не имеет значения. Было бы интересно посмотреть дальнейшее развитие вашей мысли, если вам интересно. Я правда не собеседую :-) Просто делюсь опытом, который поимел с Гуглом. В спокойной обстановке где-то за полчаса-час решается, ну никак не за 10 минут.
Эх... два работника гугла в этом треде считают, что вы гоните и что задача решена, по большому счёту, с самого начала. :)
(Второе решение с явой содержит интересную ошибку, если строка на вход -+1 -- ошибка не будет возвращена).
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Google Recruiter

Post by АццкоМото »

Zorkus wrote: Я говорил - целое, я не говорил в явовский инт :-) Ну строка состоит из милларда знаков например. Память процесса ограничена через -Xmx ;) Воо, стриминг процессинг рулит. Ну пусть +1-2 минуты, ок.
Единственное, что там можно увидеть более-менее интересное, если миллиард знаков побить на кусочки, которые влазят в более-менее дешевый тип типа long-а, распарсить сначала эти кусочки, а уже потом из них собирать монстрообразное целое. в зависимости от того, как глубоко въедаться можно потратить от +5 до +30 минут (если еще и параллелизм пытаться присобачить). но все это уже так. фантазии

кстати облажался на элементарном вопросе от гугла. короче они несли долгую пургу о том, что типа есть у нас расшифрованная молекула ДНК и есть известная последовательность нуклеотидных пар вируса. и типа нам нужно понять, мы все умрем или вируса нет. я такой тупил-тупил, говорю, вы что, хотите найти подстроку в строке? они такие - ну типа да, только довольно длинную подстроку в офигенно длинной строке. я говорю - ну ок, ищите, кто ж мешает. но вы же хотите от меня чего-то оптимального? ну да, говорят. единственное, что совершенно очевидно приходит в голову, что нуклеиновых кислот всего 4, на один символ нужно 2 бита, если упаковать, то типа строки получаются короче, но и искать нужно будет не 1 подстроку, а 4 (если символ=байт) ну и потанцевать еще вокруг границ. хорошо, говорят, давай еще оптимальнее. кряхтел-пердел, говорю - нет, в общем случае никак. (потом по здравому размышлению появились варианты, потом не считается)
и тут они намекают, говорят, ну мы же ж гугл, мы вообще по обработке больших данных спецы. и контуперов у нас много. ну йо... в совершенно очевидном месте про распараллеливание даже мысли не возникло
Мат на форуме запрещен, блдж!
User avatar
Alexander Troyansky
Уже с Приветом
Posts: 5665
Joined: 15 Aug 2008 00:52

Re: Google Recruiter

Post by Alexander Troyansky »

АццкоМото wrote:
Alexander Troyansky wrote:Однако это не отменяет факта, что решения задачи не показали. Ни за 5 минут, ни за час. Дело ваше, но вы меня не убедили.
Sol: I'm not in here to make a f...ng bet.
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
User avatar
Alexander Troyansky
Уже с Приветом
Posts: 5665
Joined: 15 Aug 2008 00:52

Re: Google Recruiter

Post by Alexander Troyansky »

avitya wrote:
Alexander Troyansky wrote:
crypto5 wrote:
Alexander Troyansky wrote:1) Я согласен что Exception-ы тормозят, хотя и не всегда(http://stackoverflow.com/questions/4838 ... ns-in-java), но в данном случае баланс между premature optimization и simplicity был сдвинут в сторону второго
2) Мне это приходило в голову, но я решил что ожидая от вас ответа в сколько то минут не вложусь.
В принципе, количество времени не имеет значения. Было бы интересно посмотреть дальнейшее развитие вашей мысли, если вам интересно. Я правда не собеседую :-) Просто делюсь опытом, который поимел с Гуглом. В спокойной обстановке где-то за полчаса-час решается, ну никак не за 10 минут.
Эх... два работника гугла в этом треде считают, что вы гоните и что задача решена, по большому счёту, с самого начала. :)
(Второе решение с явой содержит интересную ошибку, если строка на вход -+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
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Google Recruiter

Post by dotcom »

Интеррапт wrote:
Леонид Ильич Брежнев wrote: Стесняюсь прямо-таки спросить. А что null вернуть нельзя?
Можно. Только тогда сигнатуру метода придется с базового типа int на класс Integer менять. Ведь int не может быть null.
Если фунцию назвали atoi, то возвращать надо именно 0. И оставляем Int в покое. Леонид Ильич дело говорит, только по старости лет попутал 0 с null'ом. :D
User avatar
Medium-rare
Уже с Приветом
Posts: 9194
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: Google Recruiter

Post by Medium-rare »

nullptr теперь известен языку, как легальное значение невалидного указателя. NULL не кошерен, и вовсе int, который вредно мешать с адресом, кроме как вычисляя другой адрес по смещению.

http://stackoverflow.com/questions/1282 ... is-nullptr
... and even then it's rare that you'll be going there...
User avatar
Alexander Troyansky
Уже с Приветом
Posts: 5665
Joined: 15 Aug 2008 00:52

Re: Google Recruiter

Post by Alexander Troyansky »

Речь не обязательно про классический atoi.

Ну если никому больше неинтересно, то вот мой вариант -- мне кажется, что решить за 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;
}
Признаю: в EBCDIC работать не будет, пробелы не удаляет.

Сильно не гнобите - я всё равно не программист :-)
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
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Google Recruiter

Post by АццкоМото »

Мамочки... зачем же столько букв-то???
так что ли трудно проверить на переполнение
if (j=10*i+c<i) return achtung; else i=j;
и знак менять уже за циклом, а не проверять на него на каждой итерации

так написать действительно очень-очень-очень сложно. потому что это чудовищно

UPD. Уточнение: считать в отрицательных числах, соответственно, if (j=10*i-c>i) в конце, если результат должен быть положительным, проверять на MIN_INT
Мат на форуме запрещен, блдж!
User avatar
Alexander Troyansky
Уже с Приветом
Posts: 5665
Joined: 15 Aug 2008 00:52

Re: Google Recruiter

Post by Alexander Troyansky »

АццкоМото wrote:Мамочки... зачем же столько букв-то???
так что ли трудно проверить на переполнение
if (j=10*i+c<i) return achtung; else i=j;
и знак менять уже за циклом, а не проверять на него на каждой итерации

так написать действительно очень-очень-очень сложно. потому что это чудовищно
я так понял achtung срабатывает на отрицательных числах :-)
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
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Google Recruiter

Post by АццкоМото »

Alexander Troyansky wrote:
АццкоМото wrote:Мамочки... зачем же столько букв-то???
так что ли трудно проверить на переполнение
if (j=10*i+c<i) return achtung; else i=j;
и знак менять уже за циклом, а не проверять на него на каждой итерации

так написать действительно очень-очень-очень сложно. потому что это чудовищно
я так понял achtung срабатывает на отрицательных числах :-)
Он срабатывает на переполнении

ЗЫ. И вот это
if (!*str)
return false;
не несет вообще никакого смысла
Мат на форуме запрещен, блдж!
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Google Recruiter

Post by Интеррапт »

АццкоМото wrote: ЗЫ. И вот это
if (!*str)
return false;
не несет вообще никакого смысла
Ну это как бы проверка на пустую строку. Так что в принципе смысл в этом есть. Я лично все-равно люблю более читаемые конструкции типа if(*str == '\0'), но это уже дело вкуса.
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Google Recruiter

Post by АццкоМото »

Интеррапт wrote: Ну это как бы проверка на пустую строку. Так что в принципе смысл в этом есть. Я лично все-равно люблю более читаемые конструкции типа if(*str == '\0'), но это уже дело вкуса.
Это проверка на то, не кончилась ли строка сразу после минуса. но поскольку дальше идет цикл с проверкой, что символ под указателем - от '0' до '9', ее можно безболезненно выкинуть
Мат на форуме запрещен, блдж!
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Google Recruiter

Post by Интеррапт »

АццкоМото wrote:
Интеррапт wrote: Ну это как бы проверка на пустую строку. Так что в принципе смысл в этом есть. Я лично все-равно люблю более читаемые конструкции типа if(*str == '\0'), но это уже дело вкуса.
Это проверка на то, не кончилась ли строка сразу после минуса. но поскольку дальше идет цикл с проверкой, что символ под указателем - от '0' до '9', ее можно безболезненно выкинуть
Это да. Т.е. мы как бы дойдем до проверки '\0' - '0'. Не люблю я такое, хоть и вполне легальная конструкция.

Вообщем, Александр, если вы эту задачу решили за 10 минут, давайте зачетку :mrgreen:
avitya
Уже с Приветом
Posts: 3836
Joined: 13 Sep 2007 10:06

Re: Google Recruiter

Post by avitya »

Вот хоть убей не нравится мне этот код :). Нету в нём души, что ли?
И зачем вы делаете do while? Это сильно уменьшает читабельность.
User avatar
Alexander Troyansky
Уже с Приветом
Posts: 5665
Joined: 15 Aug 2008 00:52

Re: Google Recruiter

Post by Alexander Troyansky »

АццкоМото wrote:
Alexander Troyansky wrote:
АццкоМото wrote:Мамочки... зачем же столько букв-то???
так что ли трудно проверить на переполнение
if (j=10*i+c<i) return achtung; else i=j;
и знак менять уже за циклом, а не проверять на него на каждой итерации

так написать действительно очень-очень-очень сложно. потому что это чудовищно
я так понял achtung срабатывает на отрицательных числах :-)
Он срабатывает на переполнении

ЗЫ. И вот это
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
User avatar
Alexander Troyansky
Уже с Приветом
Posts: 5665
Joined: 15 Aug 2008 00:52

Re: Google Recruiter

Post by Alexander Troyansky »

Интеррапт wrote:
АццкоМото wrote:
Интеррапт wrote: Ну это как бы проверка на пустую строку. Так что в принципе смысл в этом есть. Я лично все-равно люблю более читаемые конструкции типа if(*str == '\0'), но это уже дело вкуса.
Это проверка на то, не кончилась ли строка сразу после минуса. но поскольку дальше идет цикл с проверкой, что символ под указателем - от '0' до '9', ее можно безболезненно выкинуть
Это да. Т.е. мы как бы дойдем до проверки '\0' - '0'. Не люблю я такое, хоть и вполне легальная конструкция.

Вообщем, Александр, если вы эту задачу решили за 10 минут, давайте зачетку :mrgreen:
Не, низачот:
- превысил время;
- лоханулся с переполнением;
- использовал компилятор;
- лишние инструкции;
- вот do-while использовал;

В свое оправдание могу сказать, что больше ничей работающий код не видел. Пока. Ну были ленивые понукания, типа "Чудовищно! Громоздко! Да я, да я, да за пять-десять минут!"

А так чтобы выйти, не спужавшись, вот только crypto5, ну и я :oops:
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
xtigr
Уже с Приветом
Posts: 617
Joined: 23 Sep 2005 06:56
Location: SFBA

Re: Google Recruiter

Post by xtigr »

ну и зачем требовать такую детализацию во время интервью? Мне лично достаточно, если кандидат напишет пару строк кода, чтоб был понятен алгоритм, и чтоб упомянул про все проверки, можно просто словами.
Что лично почерпнет интервьювер из такой детально решеной задачки кроме того что кандидат может написать атои?
ведь на все остальное времени не останется.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Google Recruiter

Post by crypto5 »

xtigr wrote:ну и зачем требовать такую детализацию во время интервью? Мне лично достаточно, если кандидат напишет пару строк кода, чтоб был понятен алгоритм, и чтоб упомянул про все проверки, можно просто словами.
Что лично почерпнет интервьювер из такой детально решеной задачки кроме того что кандидат может написать атои?
ведь на все остальное времени не останется.
может как раз ищутся фронтендщики разрабатывающие УИ, и там наверное очень важное качество предвидеть все ошибки и злые намерения пользователя и вычислить все граничные условия.
In vino Veritas!
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Google Recruiter

Post by Интеррапт »

xtigr wrote:ну и зачем требовать такую детализацию во время интервью? Мне лично достаточно, если кандидат напишет пару строк кода, чтоб был понятен алгоритм, и чтоб упомянул про все проверки, можно просто словами.
Что лично почерпнет интервьювер из такой детально решеной задачки кроме того что кандидат может написать атои?
ведь на все остальное времени не останется.
Во-во. Что собственно я тоже упомянул на предидущих страницах. Достаточно увидеть, что кандидат умеет писать элементарный код ну и переходим к более интересным задачам.
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Google Recruiter

Post by АццкоМото »

Alexander Troyansky wrote:а, увидел, что отрицательные числа вы всё-таки тоже решили включить. Так получается:
нет, не так, так еще хуже, хотя казалось бы, возможно ли это
Мат на форуме запрещен, блдж!
User avatar
Medium-rare
Уже с Приветом
Posts: 9194
Joined: 04 Mar 2011 03:04
Location: SFBA

Re: Google Recruiter

Post by Medium-rare »

xtigr wrote:ну и зачем требовать такую детализацию во время интервью? Мне лично достаточно, если кандидат напишет пару строк кода, чтоб был понятен алгоритм, и чтоб упомянул про все проверки, можно просто словами.
Что лично почерпнет интервьювер из такой детально решеной задачки кроме того что кандидат может написать атои?
ведь на все остальное времени не останется.
Последний раз в MS так и спрашивали (при том, трое разных), а как бы вы реализовали, ну, хорошо, кодируйте, ну ладно, ясно... дальше. Но затормозив на конкретном алгоритме, допрашиваемый был подвергнут дополнительным вопросам. :|
... and even then it's rare that you'll be going there...
User avatar
Alexander Troyansky
Уже с Приветом
Posts: 5665
Joined: 15 Aug 2008 00:52

Re: Google Recruiter

Post by Alexander Troyansky »

АццкоМото wrote:
Alexander Troyansky wrote:а, увидел, что отрицательные числа вы всё-таки тоже решили включить. Так получается:
нет, не так, так еще хуже, хотя казалось бы, возможно ли это
ну вот я о чем и говорил: "Ужасно! Чудовищно! Так нельзя!". Ну я не умею угадывать мысли, поэтому взял на себя труд попытаться угадать, что конкретно вы имели в виду. Ну не хотите, как хотите. Это вроде лишь дело 5 минут, но мы тут с вами бодаемся уже который час.
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
User avatar
Alexander Troyansky
Уже с Приветом
Posts: 5665
Joined: 15 Aug 2008 00:52

Re: Google Recruiter

Post by Alexander Troyansky »

xtigr wrote:ну и зачем требовать такую детализацию во время интервью? Мне лично достаточно, если кандидат напишет пару строк кода, чтоб был понятен алгоритм, и чтоб упомянул про все проверки, можно просто словами.
Что лично почерпнет интервьювер из такой детально решеной задачки кроме того что кандидат может написать атои?
ведь на все остальное времени не останется.
это была позиция тестера. Последнее интервью. Как-то получилось, что все собеседники уделяли минут 10-20 на общие вопросы: чего и как делал; почему Гугл... Остальное время на задачи всякие разные; по всей видимости, собеседующий хотел знать, как бы я работал в условиях недостатка данных/спецификаций типа "задавай вопросы". Простым упомянанием проверок я не отделался -- потребовалось кодирование на доске. Погорел классическим образом: упустил проверку граничных условий. Помню, что собеседователь очень распереживался.
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

Return to “Работа и Карьера в IT”