А что мне за это будет?crypto5 wrote: прибежит дотком, скажет что нечитабельно ))
Google Recruiter
-
- Уже с Приветом
- Posts: 9035
- Joined: 25 Oct 2011 19:02
- Location: SVO->ORD->SFO
Re: Google Recruiter
-
- Уже с Приветом
- Posts: 8628
- Joined: 22 Mar 2011 01:40
Re: Google Recruiter
Ничего не будет. Но и на рекомендацию в партию тоже можешь не рассчитывать.dotcom wrote:А что мне за это будет?crypto5 wrote: прибежит дотком, скажет что нечитабельно ))
-
- Уже с Приветом
- Posts: 5665
- Joined: 15 Aug 2008 00:52
Re: Google Recruiter
Я поражен! За десять минут и столько написать!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; }
Правда у меня есть несколько замечаний, как существенных и так и не очень (всего лишь вспоминаю мнение экзаменатора):
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
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Google Recruiter
В Джаве правильный метод сигнализировать об ошибках - это именно бросать исключения. Кому это не подходит в данном случае, пусть пишут функцию валидирования числовой строки на правильность. Собственно стандартная библиотечка функция на таком, например, вызове Integer.parseInt("123z") бросит NumberFormatException.Alexander Troyansky wrote: 1) из-за performance consideration бросать Exception - не знаю, как в Джаве, но в С++ помню было это не совсем вкусно. Т.е. для пользовательскго ввода может быть нормально, но для обработки потока данных бросаться исключениями может быть не совсем то. Как вы считаете?
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Google Recruiter
1) Я согласен что Exception-ы тормозят, хотя и не всегда(http://stackoverflow.com/questions/4838 ... ns-in-java), но в данном случае баланс между premature optimization и simplicity был сдвинут в сторону второго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; }
Правда у меня есть несколько замечаний, как существенных и так и не очень (всего лишь вспоминаю мнение экзаменатора):
1) из-за performance consideration бросать Exception - не знаю, как в Джаве, но в С++ помню было это не совсем вкусно. Т.е. для пользовательскго ввода может быть нормально, но для обработки потока данных бросаться исключениями может быть не совсем то. Как вы считаете? Сразу хочу сообщить, что я знаю, вы не телепат, как и я, и живого общения у доски у нас было.
2) попробовал "4294967296" -> 0. У вас тоже? Я считаю это ошибкой. В случае невозможности преобразования, вроде как надо бы и отрапортовать соотвествующе, а не тихо преобразовать в ноль
2) Мне это приходило в голову, но я решил что ожидая от вас ответа в сколько то минут не вложусь.
In vino Veritas!
-
- Уже с Приветом
- Posts: 9035
- Joined: 25 Oct 2011 19:02
- Location: SVO->ORD->SFO
Re: Google Recruiter
Exception в C++ тоже никто не запрещает бросать. Просто не стоит ими злоупотреблять в библиотечных фукнциях, т.к. зачем ради красоты увеличивать время вызова? STL правда увешан Exception'ами как новогодня елка. Так что всем по фиг уже.
-
- Уже с Приветом
- Posts: 5665
- Joined: 15 Aug 2008 00:52
Re: Google Recruiter
В принципе, количество времени не имеет значения. Было бы интересно посмотреть дальнейшее развитие вашей мысли, если вам интересно. Я правда не собеседую Просто делюсь опытом, который поимел с Гуглом. В спокойной обстановке где-то за полчаса-час решается, ну никак не за 10 минут.crypto5 wrote:Alexander Troyansky wrote:1) Я согласен что Exception-ы тормозят, хотя и не всегда(http://stackoverflow.com/questions/4838 ... ns-in-java), но в данном случае баланс между premature optimization и simplicity был сдвинут в сторону второго
2) Мне это приходило в голову, но я решил что ожидая от вас ответа в сколько то минут не вложусь.
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
Именно это я и хотел сказать.dotcom wrote:Exception в C++ тоже никто не запрещает бросать. Просто не стоит ими злоупотреблять в библиотечных фукнциях, т.к. зачем ради красоты увеличивать время вызова?
(строгим голосом): На сегодня собеседования окончены!
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: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Google Recruiter
dotcom wrote:Exception в C++ тоже никто не запрещает бросать. Просто не стоит ими злоупотреблять в библиотечных фукнциях, т.к. зачем ради красоты увеличивать время вызова? STL правда увешан Exception'ами как новогодня елка. Так что всем по фиг уже.
А как вы, господа, предлагает модифицировать Джава код crypto5, чтобы избавиться от исключений. Уж не -1 ли вернуть? Ладно в С можно просто добавить output parameter и вернуть значение по указателю. А с Джавой что делать будем?Alexander Troyansky wrote: 1) из-за performance consideration бросать Exception - не знаю, как в Джаве, но в С++ помню было это не совсем вкусно. Т.е. для пользовательскго ввода может быть нормально, но для обработки потока данных бросаться исключениями может быть не совсем то. Как вы считаете? Сразу хочу сообщить, что я знаю, вы не телепат, как и я, и живого общения у доски у нас было.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Google Recruiter
Обьект возвращать с двумя полямиИнтеррапт wrote:dotcom wrote:Exception в C++ тоже никто не запрещает бросать. Просто не стоит ими злоупотреблять в библиотечных фукнциях, т.к. зачем ради красоты увеличивать время вызова? STL правда увешан Exception'ами как новогодня елка. Так что всем по фиг уже.А как вы, господа, предлагает модифицировать Джава код crypto5, чтобы избавиться от исключений. Уж не -1 ли вернуть? Ладно в С можно просто добавить output parameter и вернуть значение по указателю. А с Джавой что делать будем?Alexander Troyansky wrote: 1) из-за performance consideration бросать Exception - не знаю, как в Джаве, но в С++ помню было это не совсем вкусно. Т.е. для пользовательскго ввода может быть нормально, но для обработки потока данных бросаться исключениями может быть не совсем то. Как вы считаете? Сразу хочу сообщить, что я знаю, вы не телепат, как и я, и живого общения у доски у нас было.
In vino Veritas!
-
- Уже с Приветом
- Posts: 2924
- Joined: 01 Apr 2004 04:22
Re: Google Recruiter
+1Alexander Troyansky wrote:Вы не первый, кто неадекватно оценивает несколько большую, чем кажется, сложность той задачи.
и какой ответ был для варианта inside?Интеррапт wrote: Назвать эту задачу сложной - просто язык не поворачивается. Простейшая задача. На 5 минут в черновом варианте или 10 минут - со всеми проверками. И когда я раньше задавал ее на интервью - нормальные кандидаты именно в это время и укладывались.
А если число в ехпоненциальной орме?
Я боюсь, что наступит день, когда технологии превзойдут простое человеческое обшение. И мир получит поколение идиотов (c)
-
- Уже с Приветом
- Posts: 8628
- Joined: 22 Mar 2011 01:40
Re: Google Recruiter
Стесняюсь прямо-таки спросить. А что null вернуть нельзя?Интеррапт wrote:А как вы, господа, предлагает модифицировать Джава код crypto5, чтобы избавиться от исключений. Уж не -1 ли вернуть? Ладно в С можно просто добавить output parameter и вернуть значение по указателю. А с Джавой что делать будем?
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Google Recruiter
Можно, чувствуется человек старой закалкиЛеонид Ильич Брежнев wrote:Стесняюсь прямо-таки спросить. А что null вернуть нельзя?Интеррапт wrote:А как вы, господа, предлагает модифицировать Джава код crypto5, чтобы избавиться от исключений. Уж не -1 ли вернуть? Ладно в С можно просто добавить output parameter и вернуть значение по указателю. А с Джавой что делать будем?
In vino Veritas!
-
- Уже с Приветом
- Posts: 2924
- Joined: 01 Apr 2004 04:22
Re: Google Recruiter
crypto5, как Вы считаете, что быстрее, проше и приятнее: писать свой код или дебагить чужой? Кстати, очень хороший тест, когда задача не совсем простая, решить ее за выделеное время нельзя. Смотрится на то, как человек расставляет приоритиес: сделать как можно больше, но абы как илли <, но лучшеcrypto5 wrote:2) Мне это приходило в голову, но я решил что ожидая от вас ответа в сколько то минут не вложусь.2) попробовал "4294967296" -> 0. У вас тоже? Я считаю это ошибкой. В случае невозможности преобразования, вроде как надо бы и отрапортовать соотвествующе, а не тихо преобразовать в ноль
Я боюсь, что наступит день, когда технологии превзойдут простое человеческое обшение. И мир получит поколение идиотов (c)
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Google Recruiter
Можно. Только тогда сигнатуру метода придется с базового типа int на класс Integer менять. Ведь int не может быть null. Оно конечно как бы не проблема, только если уж про перфоменс разговаривать, то Integer обьекты будут через боксинг/автобоксинг постоянно проходить (при каждом использовании), в то время как exception еще вполне себе может и никогда не выстрелить. Вот и сравним, допустим сотни тысяч боксингов/автобоксингов и создание сотен тысяч временных обьектов только для того, что может случится вероятность того, что число невалидное. Или все-таки оставить Exception?Леонид Ильич Брежнев wrote:Стесняюсь прямо-таки спросить. А что null вернуть нельзя?Интеррапт wrote:А как вы, господа, предлагает модифицировать Джава код crypto5, чтобы избавиться от исключений. Уж не -1 ли вернуть? Ладно в С можно просто добавить output parameter и вернуть значение по указателю. А с Джавой что делать будем?
Сишный atoi тоже менять придется и добавлять output параметр.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Google Recruiter
Считайте как хотите. Надеюсь вы напишите правильно за 30 минут?Ljolja wrote:crypto5, как Вы считаете, что быстрее, проше и приятнее: писать свой код или дебагить чужой? Кстати, очень хороший тест, когда задача не совсем простая, решить ее за выделеное время нельзя. Смотрится на то, как человек расставляет приоритиес: сделать как можно больше, но абы как илли <, но лучшеcrypto5 wrote:2) Мне это приходило в голову, но я решил что ожидая от вас ответа в сколько то минут не вложусь.2) попробовал "4294967296" -> 0. У вас тоже? Я считаю это ошибкой. В случае невозможности преобразования, вроде как надо бы и отрапортовать соотвествующе, а не тихо преобразовать в ноль
Last edited by crypto5 on 27 Sep 2012 08:20, edited 1 time in total.
In vino Veritas!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Google Recruiter
atoi эксп числа не обрабатывает. Когда кандидату задается вопрос, то в принципе такие вещи идут в постановке задачи - преобразуй ка ты мне, голубчик, обычную целочисельную строку с поддержкой +/- в число. Все, увидел, что чувак умеет код писать - поехали дальше, к более интересным задачам.Ljolja wrote:А если число в ехпоненциальной орме?
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: Google Recruiter
Это ты корнер кейсы не рассмотрел. Например - строку надо прочитать из файла, строка такая здоровая что в память не помещается. Как тогда быть?АццкоМото wrote:Бгугога. 5 - максимум, если с бодуна не похмелившисьAlexander Troyansky wrote:если вам не жалко 5-10 минут, то попробуйте. Только это будет больше по времени
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: Google Recruiter
"на любом языке можно писать код на фортране". Передавай вторым параметром в функцию объект ReturnCode (live copy) и у него выставляй флаг с кодом операции.Интеррапт wrote:dotcom wrote:Exception в C++ тоже никто не запрещает бросать. Просто не стоит ими злоупотреблять в библиотечных фукнциях, т.к. зачем ради красоты увеличивать время вызова? STL правда увешан Exception'ами как новогодня елка. Так что всем по фиг уже.А как вы, господа, предлагает модифицировать Джава код crypto5, чтобы избавиться от исключений. Уж не -1 ли вернуть? Ладно в С можно просто добавить output parameter и вернуть значение по указателю. А с Джавой что делать будем?Alexander Troyansky wrote: 1) из-за performance consideration бросать Exception - не знаю, как в Джаве, но в С++ помню было это не совсем вкусно. Т.е. для пользовательскго ввода может быть нормально, но для обработки потока данных бросаться исключениями может быть не совсем то. Как вы считаете? Сразу хочу сообщить, что я знаю, вы не телепат, как и я, и живого общения у доски у нас было.
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Google Recruiter
del - уже было
Last edited by АццкоМото on 27 Sep 2012 16:20, edited 1 time in total.
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Google Recruiter
Строка не помещается в память, но помещается в int???? Но даже если и так, и нужно очень длинную строку преобразовать в очень большое целое (интересно, насколько длинные целые поддерживает гуава?), мне все равно нафиг не нужно одновременно больше одного символа из строки держать в памяти. Т.е. +1-2 минутыZorkus wrote:Это ты корнер кейсы не рассмотрел. Например - строку надо прочитать из файла, строка такая здоровая что в память не помещается. Как тогда быть?АццкоМото wrote:Бгугога. 5 - максимум, если с бодуна не похмелившисьAlexander Troyansky wrote:если вам не жалко 5-10 минут, то попробуйте. Только это будет больше по времени
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 15242
- Joined: 01 Mar 2007 05:18
- Location: VVO->ORD->DFW->SFO->DFW->PDX
Re: Google Recruiter
вам что, собрать фрагменты в функцию? я же специально написал: и обернем код в вид функции. ну пусть еще 1 минута.Alexander Troyansky wrote: 1) это не функция. Это фрагмент кода.
ну, тогда не удивительно, почему у вас час занимает эта задача. как со знаком можно работать?Alexander Troyansky wrote:2) со знаком ничего не понял.
1. завести флажок, минус был или плюс. возвращать потом либо то, что накопилось либо (минус) то, что накопилось
2. завести флажок =-1 если был минус или =1 если его не было (или был +) и возвращать накопленное значение, помноженное на флажок (как сделал crypto5)
3. в случае минуса пропустить все последующие нули и "накопленное значение" инициализировать в (минус) первую цифру, а потом продолжать как есть, плюс просто пропустить
по-моему что-то третье придумать очень сложно
Мат на форуме запрещен, блдж!
-
- Уже с Приветом
- Posts: 5665
- Joined: 15 Aug 2008 00:52
Re: Google Recruiter
1) задача была написать функцию, а не фрагмент кода. Видите, только выяснение этого обстоятельства заняло уже больше явно минуты.АццкоМото wrote:вам что, собрать фрагменты в функцию? я же специально написал: и обернем код в вид функции. ну пусть еще 1 минута.Alexander Troyansky wrote: 1) это не функция. Это фрагмент кода.ну, тогда не удивительно, почему у вас час занимает эта задача. как со знаком можно работать?Alexander Troyansky wrote:2) со знаком ничего не понял.
1. завести флажок, минус был или плюс. возвращать потом либо то, что накопилось либо (минус) то, что накопилось
2. завести флажок =-1 если был минус или =1 если его не было (или был +) и возвращать накопленное значение, помноженное на флажок (как сделал crypto5)
3. в случае минуса пропустить все последующие нули и "накопленное значение" инициализировать в (минус) первую цифру, а потом продолжать как есть, плюс просто пропустить
по-моему что-то третье придумать очень сложно
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
-
- Уже с Приветом
- Posts: 5665
- Joined: 15 Aug 2008 00:52
Re: Google Recruiter
нет, так задача не ставилась. Не нужно из файла читатьZorkus wrote:Это ты корнер кейсы не рассмотрел. Например - строку надо прочитать из файла, строка такая здоровая что в память не помещается. Как тогда быть?АццкоМото wrote:Бгугога. 5 - максимум, если с бодуна не похмелившисьAlexander Troyansky wrote:если вам не жалко 5-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
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: Google Recruiter
Я говорил - целое, я не говорил в явовский инт Ну строка состоит из милларда знаков например. Память процесса ограничена через -Xmx Воо, стриминг процессинг рулит. Ну пусть +1-2 минуты, ок.АццкоМото wrote:Строка не помещается в память, но помещается в int???? Но даже если и так, и нужно очень длинную строку преобразовать в очень большое целое (интересно, насколько длинные целые поддерживает гуава?), мне все равно нафиг не нужно одновременно больше одного символа из строки держать в памяти. Т.е. +1-2 минутыZorkus wrote:Это ты корнер кейсы не рассмотрел. Например - строку надо прочитать из файла, строка такая здоровая что в память не помещается. Как тогда быть?АццкоМото wrote:Бгугога. 5 - максимум, если с бодуна не похмелившисьAlexander Troyansky wrote:если вам не жалко 5-10 минут, то попробуйте. Только это будет больше по времени