Google Recruiter

User avatar
Леонид Ильич Брежнев
Уже с Приветом
Posts: 8632
Joined: 22 Mar 2011 01:40

Re: Google Recruiter

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

crypto5 wrote:Я давно на С не писал(лет 5)
Да нет понятно, что Вы раскололи заказанное количество орехов микроскопом.
Кстати, если мне не измняет память, то в контексте интервью CRT злобно читит :). Там atoi() написана через isdigit() :)
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Google Recruiter

Post by crypto5 »

Леонид Ильич Брежнев wrote:
crypto5 wrote:
Ужас. За одну только попытку только !!!! ПОДУМАТЬ !!! писать atoi() на джаве надо наказывать. Прижигать мозг расколенной докрасна кочергой через анус. :umnik1: :umnik1:
Специально для леонида ильича с-ишный вариант:

Code: Select all

int atoi(char *c, int &i) {
if(!c || !*c) return -1;
while(*c && *c == ' ') c++;
if(!*c) return -1;
int neg = 1;
if(*c == '-') {neg = -1; c ++;}
if(!*c) return -1;
i = 0;
while(*c == '0') c++;
while(*c) {
  if(*c < '0' || *c > '9') return -1;
  i *= 10;
  i += *c - '0';
  c ++;
}
i *= neg;
return 0;
}
In vino Veritas!
User avatar
Леонид Ильич Брежнев
Уже с Приветом
Posts: 8632
Joined: 22 Mar 2011 01:40

Re: Google Recruiter

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

crypto5 wrote:
Леонид Ильич Брежнев wrote:
crypto5 wrote:

Code: Select all

  i += *c - '0';
  c ++;
Тебе что, как Пушкину построчно платят? :angry: :angry: :angry:
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Google Recruiter

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

Леонид Ильич Брежнев wrote:Кстати, если мне не измняет память, то в контексте интервью CRT злобно читит :). Там atoi() написана через isdigit() :)
В большинстве реализаций atoi просто вызывает функцию strtol :)
С указанием параметра 10 (т.е. для обработки строк с десятичными цифрами).
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Google Recruiter

Post by crypto5 »

Леонид Ильич Брежнев wrote:
crypto5 wrote:
Леонид Ильич Брежнев wrote:
crypto5 wrote:

Code: Select all

  i += *c - '0';
  c ++;
Тебе что, как Пушкину построчно платят? :angry: :angry: :angry:
прибежит дотком, скажет что нечитабельно ))
In vino Veritas!
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: 8632
Joined: 22 Mar 2011 01:40

Re: Google Recruiter

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

dotcom wrote:
crypto5 wrote: прибежит дотком, скажет что нечитабельно ))
А что мне за это будет? :D
Ничего не будет. Но и на рекомендацию в партию тоже можешь не рассчитывать. :nono#: :nono#: :nono#:
User avatar
Alexander Troyansky
Уже с Приветом
Posts: 5753
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: 5753
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: 5753
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!

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