Google Recruiter

User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Google Recruiter

Post by dotcom »

crypto5 wrote: прибежит дотком, скажет что нечитабельно ))
А что мне за это будет? :D
User avatar
Леонид Ильич Брежнев
Уже с Приветом
Posts: 8628
Joined: 22 Mar 2011 01:40

Re: Google Recruiter

Post by Леонид Ильич Брежнев »

dotcom wrote:
crypto5 wrote: прибежит дотком, скажет что нечитабельно ))
А что мне за это будет? :D
Ничего не будет. Но и на рекомендацию в партию тоже можешь не рассчитывать. :nono#: :nono#: :nono#:
User avatar
Alexander Troyansky
Уже с Приветом
Posts: 5665
Joined: 15 Aug 2008 00:52

Re: Google Recruiter

Post by Alexander Troyansky »

crypto5 wrote:
Alexander Troyansky wrote:
crypto5 wrote:
Alexander Troyansky wrote:
АццкоМото wrote: Да, за час - не вопрос. Единственное, если на доске, то можно пару глупых ошибок сделать, но не думаю, что это большая проблема
Нет, глупые ошибке на доске - это действительно было не проблемой.
Давайте еще какую нибудь школьную задачу из вашего арсенала, можно с секундомером, я попытаюсь реабилитироваться ))
Даже напишу функцию с проверками ))
спасибо за проявленный интерес :-) можете попробовать ее решить еще раз (и не один раз), предварительно прочтя мои предыдущие сообщения

Code: Select all

	private static int atoi(String s) throws Exception{
		if(s == null || s.length() == 0) throw new Exception("Error");
		int i = 0;
		int ind = 0;
		while(s.charAt(ind) == ' ' && ind < s.length()) ind ++;
		if(ind == s.length()) throw new Exception("Error");
		int neg = 1;
		if(s.charAt(ind) == '-') {neg = -1; ind ++;}
		if(ind == s.length()) throw new Exception("Error");
		if(s.charAt(ind) == '+') ind ++;
		if(ind == s.length()) throw new Exception("Error");
		while(s.charAt(ind) == '0' && ind < s.length()) ind ++;
		while(ind < s.length()) {
			if(s.charAt(ind) < '0' || s.charAt(ind) > '9') throw new Exception("Error");
			i *= 10;
			i += s.charAt(ind) - '0';
			ind ++;
		}
		return i * neg;
	}
:D Я поражен! За десять минут и столько написать!

:-)
Правда у меня есть несколько замечаний, как существенных и так и не очень (всего лишь вспоминаю мнение экзаменатора):
1) из-за performance consideration бросать Exception - не знаю, как в Джаве, но в С++ помню было это не совсем вкусно. Т.е. для пользовательскго ввода может быть нормально, но для обработки потока данных бросаться исключениями может быть не совсем то. Как вы считаете? Сразу хочу сообщить, что я знаю, вы не телепат, как и я, и живого общения у доски у нас было.

2) попробовал "4294967296" -> 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
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Google Recruiter

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

Alexander Troyansky wrote: 1) из-за performance consideration бросать Exception - не знаю, как в Джаве, но в С++ помню было это не совсем вкусно. Т.е. для пользовательскго ввода может быть нормально, но для обработки потока данных бросаться исключениями может быть не совсем то. Как вы считаете?
В Джаве правильный метод сигнализировать об ошибках - это именно бросать исключения. Кому это не подходит в данном случае, пусть пишут функцию валидирования числовой строки на правильность. Собственно стандартная библиотечка функция на таком, например, вызове Integer.parseInt("123z") бросит NumberFormatException.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Google Recruiter

Post by crypto5 »

Alexander Troyansky wrote:
crypto5 wrote:
Alexander Troyansky wrote:
crypto5 wrote:
Alexander Troyansky wrote: Нет, глупые ошибке на доске - это действительно было не проблемой.
Давайте еще какую нибудь школьную задачу из вашего арсенала, можно с секундомером, я попытаюсь реабилитироваться ))
Даже напишу функцию с проверками ))
спасибо за проявленный интерес :-) можете попробовать ее решить еще раз (и не один раз), предварительно прочтя мои предыдущие сообщения

Code: Select all

	private static int atoi(String s) throws Exception{
		if(s == null || s.length() == 0) throw new Exception("Error");
		int i = 0;
		int ind = 0;
		while(s.charAt(ind) == ' ' && ind < s.length()) ind ++;
		if(ind == s.length()) throw new Exception("Error");
		int neg = 1;
		if(s.charAt(ind) == '-') {neg = -1; ind ++;}
		if(ind == s.length()) throw new Exception("Error");
		if(s.charAt(ind) == '+') ind ++;
		if(ind == s.length()) throw new Exception("Error");
		while(s.charAt(ind) == '0' && ind < s.length()) ind ++;
		while(ind < s.length()) {
			if(s.charAt(ind) < '0' || s.charAt(ind) > '9') throw new Exception("Error");
			i *= 10;
			i += s.charAt(ind) - '0';
			ind ++;
		}
		return i * neg;
	}
:D Я поражен! За десять минут и столько написать!

:-)
Правда у меня есть несколько замечаний, как существенных и так и не очень (всего лишь вспоминаю мнение экзаменатора):
1) из-за performance consideration бросать Exception - не знаю, как в Джаве, но в С++ помню было это не совсем вкусно. Т.е. для пользовательскго ввода может быть нормально, но для обработки потока данных бросаться исключениями может быть не совсем то. Как вы считаете? Сразу хочу сообщить, что я знаю, вы не телепат, как и я, и живого общения у доски у нас было.

2) попробовал "4294967296" -> 0. У вас тоже? Я считаю это ошибкой. В случае невозможности преобразования, вроде как надо бы и отрапортовать соотвествующе, а не тихо преобразовать в ноль
1) Я согласен что Exception-ы тормозят, хотя и не всегда(http://stackoverflow.com/questions/4838 ... ns-in-java), но в данном случае баланс между premature optimization и simplicity был сдвинут в сторону второго
2) Мне это приходило в голову, но я решил что ожидая от вас ответа в сколько то минут не вложусь.
In vino Veritas!
User avatar
dotcom
Уже с Приветом
Posts: 9035
Joined: 25 Oct 2011 19:02
Location: SVO->ORD->SFO

Re: Google Recruiter

Post by dotcom »

Exception в C++ тоже никто не запрещает бросать. Просто не стоит ими злоупотреблять в библиотечных фукнциях, т.к. зачем ради красоты увеличивать время вызова? STL правда увешан Exception'ами как новогодня елка. Так что всем по фиг уже. :)
User avatar
Alexander Troyansky
Уже с Приветом
Posts: 5665
Joined: 15 Aug 2008 00:52

Re: Google Recruiter

Post by Alexander Troyansky »

crypto5 wrote:
Alexander Troyansky wrote:1) Я согласен что Exception-ы тормозят, хотя и не всегда(http://stackoverflow.com/questions/4838 ... ns-in-java), но в данном случае баланс между premature optimization и simplicity был сдвинут в сторону второго
2) Мне это приходило в голову, но я решил что ожидая от вас ответа в сколько то минут не вложусь.
В принципе, количество времени не имеет значения. Было бы интересно посмотреть дальнейшее развитие вашей мысли, если вам интересно. Я правда не собеседую :-) Просто делюсь опытом, который поимел с Гуглом. В спокойной обстановке где-то за полчаса-час решается, ну никак не за 10 минут.
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 »

dotcom wrote:Exception в C++ тоже никто не запрещает бросать. Просто не стоит ими злоупотреблять в библиотечных фукнциях, т.к. зачем ради красоты увеличивать время вызова?
Именно это я и хотел сказать.

(строгим голосом): На сегодня собеседования окончены! :umnik1:
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: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Google Recruiter

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

dotcom wrote:Exception в C++ тоже никто не запрещает бросать. Просто не стоит ими злоупотреблять в библиотечных фукнциях, т.к. зачем ради красоты увеличивать время вызова? STL правда увешан Exception'ами как новогодня елка. Так что всем по фиг уже. :)
Alexander Troyansky wrote: 1) из-за performance consideration бросать Exception - не знаю, как в Джаве, но в С++ помню было это не совсем вкусно. Т.е. для пользовательскго ввода может быть нормально, но для обработки потока данных бросаться исключениями может быть не совсем то. Как вы считаете? Сразу хочу сообщить, что я знаю, вы не телепат, как и я, и живого общения у доски у нас было.
А как вы, господа, предлагает модифицировать Джава код crypto5, чтобы избавиться от исключений. Уж не -1 ли вернуть? :) Ладно в С можно просто добавить output parameter и вернуть значение по указателю. А с Джавой что делать будем?
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Google Recruiter

Post by crypto5 »

Интеррапт wrote:
dotcom wrote:Exception в C++ тоже никто не запрещает бросать. Просто не стоит ими злоупотреблять в библиотечных фукнциях, т.к. зачем ради красоты увеличивать время вызова? STL правда увешан Exception'ами как новогодня елка. Так что всем по фиг уже. :)
Alexander Troyansky wrote: 1) из-за performance consideration бросать Exception - не знаю, как в Джаве, но в С++ помню было это не совсем вкусно. Т.е. для пользовательскго ввода может быть нормально, но для обработки потока данных бросаться исключениями может быть не совсем то. Как вы считаете? Сразу хочу сообщить, что я знаю, вы не телепат, как и я, и живого общения у доски у нас было.
А как вы, господа, предлагает модифицировать Джава код crypto5, чтобы избавиться от исключений. Уж не -1 ли вернуть? :) Ладно в С можно просто добавить output parameter и вернуть значение по указателю. А с Джавой что делать будем?
Обьект возвращать с двумя полями
In vino Veritas!
User avatar
Ljolja
Уже с Приветом
Posts: 2924
Joined: 01 Apr 2004 04:22

Re: Google Recruiter

Post by Ljolja »

Alexander Troyansky wrote:Вы не первый, кто неадекватно оценивает несколько большую, чем кажется, сложность той задачи.
+1
Интеррапт wrote: Назвать эту задачу сложной - просто язык не поворачивается. Простейшая задача. На 5 минут в черновом варианте или 10 минут - со всеми проверками. И когда я раньше задавал ее на интервью - нормальные кандидаты именно в это время и укладывались.
и какой ответ был для варианта inside?
А если число в ехпоненциальной орме?
Я боюсь, что наступит день, когда технологии превзойдут простое человеческое обшение. И мир получит поколение идиотов (c)
User avatar
Леонид Ильич Брежнев
Уже с Приветом
Posts: 8628
Joined: 22 Mar 2011 01:40

Re: Google Recruiter

Post by Леонид Ильич Брежнев »

Интеррапт wrote:А как вы, господа, предлагает модифицировать Джава код crypto5, чтобы избавиться от исключений. Уж не -1 ли вернуть? :) Ладно в С можно просто добавить output parameter и вернуть значение по указателю. А с Джавой что делать будем?
Стесняюсь прямо-таки спросить. А что null вернуть нельзя?
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Google Recruiter

Post by crypto5 »

Леонид Ильич Брежнев wrote:
Интеррапт wrote:А как вы, господа, предлагает модифицировать Джава код crypto5, чтобы избавиться от исключений. Уж не -1 ли вернуть? :) Ладно в С можно просто добавить output parameter и вернуть значение по указателю. А с Джавой что делать будем?
Стесняюсь прямо-таки спросить. А что null вернуть нельзя?
Можно, чувствуется человек старой закалки 8)
In vino Veritas!
User avatar
Ljolja
Уже с Приветом
Posts: 2924
Joined: 01 Apr 2004 04:22

Re: Google Recruiter

Post by Ljolja »

crypto5 wrote:
2) попробовал "4294967296" -> 0. У вас тоже? Я считаю это ошибкой. В случае невозможности преобразования, вроде как надо бы и отрапортовать соотвествующе, а не тихо преобразовать в ноль
2) Мне это приходило в голову, но я решил что ожидая от вас ответа в сколько то минут не вложусь.
crypto5, как Вы считаете, что быстрее, проше и приятнее: писать свой код или дебагить чужой? Кстати, очень хороший тест, когда задача не совсем простая, решить ее за выделеное время нельзя. Смотрится на то, как человек расставляет приоритиес: сделать как можно больше, но абы как илли <, но лучше :-)
Я боюсь, что наступит день, когда технологии превзойдут простое человеческое обшение. И мир получит поколение идиотов (c)
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Google Recruiter

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

Леонид Ильич Брежнев wrote:
Интеррапт wrote:А как вы, господа, предлагает модифицировать Джава код crypto5, чтобы избавиться от исключений. Уж не -1 ли вернуть? :) Ладно в С можно просто добавить output parameter и вернуть значение по указателю. А с Джавой что делать будем?
Стесняюсь прямо-таки спросить. А что null вернуть нельзя?
Можно. Только тогда сигнатуру метода придется с базового типа int на класс Integer менять. Ведь int не может быть null. Оно конечно как бы не проблема, только если уж про перфоменс разговаривать, то Integer обьекты будут через боксинг/автобоксинг постоянно проходить (при каждом использовании), в то время как exception еще вполне себе может и никогда не выстрелить. Вот и сравним, допустим сотни тысяч боксингов/автобоксингов и создание сотен тысяч временных обьектов только для того, что может случится вероятность того, что число невалидное. Или все-таки оставить Exception?
Сишный atoi тоже менять придется и добавлять output параметр.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Google Recruiter

Post by crypto5 »

Ljolja wrote:
crypto5 wrote:
2) попробовал "4294967296" -> 0. У вас тоже? Я считаю это ошибкой. В случае невозможности преобразования, вроде как надо бы и отрапортовать соотвествующе, а не тихо преобразовать в ноль
2) Мне это приходило в голову, но я решил что ожидая от вас ответа в сколько то минут не вложусь.
crypto5, как Вы считаете, что быстрее, проше и приятнее: писать свой код или дебагить чужой? Кстати, очень хороший тест, когда задача не совсем простая, решить ее за выделеное время нельзя. Смотрится на то, как человек расставляет приоритиес: сделать как можно больше, но абы как илли <, но лучше :-)
Считайте как хотите. Надеюсь вы напишите правильно за 30 минут? :food:
Last edited by crypto5 on 27 Sep 2012 08:20, edited 1 time in total.
In vino Veritas!
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Google Recruiter

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

Ljolja wrote:А если число в ехпоненциальной орме?
atoi эксп числа не обрабатывает. Когда кандидату задается вопрос, то в принципе такие вещи идут в постановке задачи - преобразуй ка ты мне, голубчик, обычную целочисельную строку с поддержкой +/- в число. Все, увидел, что чувак умеет код писать - поехали дальше, к более интересным задачам.
Zorkus
Уже с Приветом
Posts: 6969
Joined: 26 Feb 2011 17:40

Re: Google Recruiter

Post by Zorkus »

АццкоМото wrote:
Alexander Troyansky wrote:если вам не жалко 5-10 минут, то попробуйте. Только это будет больше по времени
Бгугога. 5 - максимум, если с бодуна не похмелившись
Это ты корнер кейсы не рассмотрел. Например - строку надо прочитать из файла, строка такая здоровая что в память не помещается. Как тогда быть?
Zorkus
Уже с Приветом
Posts: 6969
Joined: 26 Feb 2011 17:40

Re: Google Recruiter

Post by Zorkus »

Интеррапт wrote:
dotcom wrote:Exception в C++ тоже никто не запрещает бросать. Просто не стоит ими злоупотреблять в библиотечных фукнциях, т.к. зачем ради красоты увеличивать время вызова? STL правда увешан Exception'ами как новогодня елка. Так что всем по фиг уже. :)
Alexander Troyansky wrote: 1) из-за performance consideration бросать Exception - не знаю, как в Джаве, но в С++ помню было это не совсем вкусно. Т.е. для пользовательскго ввода может быть нормально, но для обработки потока данных бросаться исключениями может быть не совсем то. Как вы считаете? Сразу хочу сообщить, что я знаю, вы не телепат, как и я, и живого общения у доски у нас было.
А как вы, господа, предлагает модифицировать Джава код crypto5, чтобы избавиться от исключений. Уж не -1 ли вернуть? :) Ладно в С можно просто добавить output parameter и вернуть значение по указателю. А с Джавой что делать будем?
"на любом языке можно писать код на фортране". Передавай вторым параметром в функцию объект ReturnCode (live copy) и у него выставляй флаг с кодом операции.
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Google Recruiter

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

del - уже было
Last edited by АццкоМото on 27 Sep 2012 16:20, edited 1 time in total.
Мат на форуме запрещен, блдж!
User avatar
АццкоМото
Уже с Приветом
Posts: 15242
Joined: 01 Mar 2007 05:18
Location: VVO->ORD->DFW->SFO->DFW->PDX

Re: Google Recruiter

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

Zorkus wrote:
АццкоМото wrote:
Alexander Troyansky wrote:если вам не жалко 5-10 минут, то попробуйте. Только это будет больше по времени
Бгугога. 5 - максимум, если с бодуна не похмелившись
Это ты корнер кейсы не рассмотрел. Например - строку надо прочитать из файла, строка такая здоровая что в память не помещается. Как тогда быть?
Строка не помещается в память, но помещается в int???? Но даже если и так, и нужно очень длинную строку преобразовать в очень большое целое (интересно, насколько длинные целые поддерживает гуава?), мне все равно нафиг не нужно одновременно больше одного символа из строки держать в памяти. Т.е. +1-2 минуты
Мат на форуме запрещен, блдж!
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: 1) это не функция. Это фрагмент кода.
вам что, собрать фрагменты в функцию? я же специально написал: и обернем код в вид функции. ну пусть еще 1 минута.
Alexander Troyansky wrote:2) со знаком ничего не понял.
ну, тогда не удивительно, почему у вас час занимает эта задача. как со знаком можно работать?
1. завести флажок, минус был или плюс. возвращать потом либо то, что накопилось либо (минус) то, что накопилось
2. завести флажок =-1 если был минус или =1 если его не было (или был +) и возвращать накопленное значение, помноженное на флажок (как сделал crypto5)
3. в случае минуса пропустить все последующие нули и "накопленное значение" инициализировать в (минус) первую цифру, а потом продолжать как есть, плюс просто пропустить
по-моему что-то третье придумать очень сложно
Мат на форуме запрещен, блдж!
User avatar
Alexander Troyansky
Уже с Приветом
Posts: 5665
Joined: 15 Aug 2008 00:52

Re: Google Recruiter

Post by Alexander Troyansky »

АццкоМото wrote:
Alexander Troyansky wrote: 1) это не функция. Это фрагмент кода.
вам что, собрать фрагменты в функцию? я же специально написал: и обернем код в вид функции. ну пусть еще 1 минута.
Alexander Troyansky wrote:2) со знаком ничего не понял.
ну, тогда не удивительно, почему у вас час занимает эта задача. как со знаком можно работать?
1. завести флажок, минус был или плюс. возвращать потом либо то, что накопилось либо (минус) то, что накопилось
2. завести флажок =-1 если был минус или =1 если его не было (или был +) и возвращать накопленное значение, помноженное на флажок (как сделал crypto5)
3. в случае минуса пропустить все последующие нули и "накопленное значение" инициализировать в (минус) первую цифру, а потом продолжать как есть, плюс просто пропустить
по-моему что-то третье придумать очень сложно
1) задача была написать функцию, а не фрагмент кода. Видите, только выяснение этого обстоятельства заняло уже больше явно минуты.

2) теперь я ход ваших размышлений понял, спасибо.

Однако это не отменяет факта, что решения задачи не показали. Ни за 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 »

Zorkus wrote:
АццкоМото wrote:
Alexander Troyansky wrote:если вам не жалко 5-10 минут, то попробуйте. Только это будет больше по времени
Бгугога. 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
Zorkus
Уже с Приветом
Posts: 6969
Joined: 26 Feb 2011 17:40

Re: Google Recruiter

Post by Zorkus »

АццкоМото wrote:
Zorkus wrote:
АццкоМото wrote:
Alexander Troyansky wrote:если вам не жалко 5-10 минут, то попробуйте. Только это будет больше по времени
Бгугога. 5 - максимум, если с бодуна не похмелившись
Это ты корнер кейсы не рассмотрел. Например - строку надо прочитать из файла, строка такая здоровая что в память не помещается. Как тогда быть?
Строка не помещается в память, но помещается в int???? Но даже если и так, и нужно очень длинную строку преобразовать в очень большое целое (интересно, насколько длинные целые поддерживает гуава?), мне все равно нафиг не нужно одновременно больше одного символа из строки держать в памяти. Т.е. +1-2 минуты
Я говорил - целое, я не говорил в явовский инт :-) Ну строка состоит из милларда знаков например. Память процесса ограничена через -Xmx ;) Воо, стриминг процессинг рулит. Ну пусть +1-2 минуты, ок.

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