Как вы лечите свою жабу?

User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Как вы лечите свою жабу?

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

Леонид Ильич Брежнев wrote:
Интеррапт wrote:String reversed = new StringBuilder("string to reverse").reverse().toString()
Собственно как и у java.lang.StringBuffer (который Колбасофф на интервью использовал) тоже есть reverse().
Реверс строки, как и фибоначчи - неувядающая тема на привете :)
А она как внутри кстати ревертит, пузырьком или вторую временную строку создает?
Ну откуда же я помню :) Оба класса дерайваются от AbstractStringBuilder, так что можешь просто глянуть в исходниках AbstractStringBuilder.java
Временную строку вряд-ли создают, это ведь buffer/builder, там уже есть доступ к массиву символов, так что можно прямо на месте крутить строку в массиве.
_newcomer_
Уже с Приветом
Posts: 158
Joined: 29 Aug 2013 11:58

Re: Как вы лечите свою жабу?

Post by _newcomer_ »

Леонид Ильич Брежнев wrote:А она как внутри кстати ревертит, пузырьком или вторую временную строку создает?
там внутри char[] - тупо свопают полмассива.
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Как вы лечите свою жабу?

Post by Sergunka »

rorp wrote:А скорей всего они ожидали что-нибудь типа non-bloking NIO сервера на селекторах.
Блин сегодня почитал http://tutorials.jenkov.com/java-nio/selectors.html какого я себя удовольствия лишил написать всю эту хрень на селекторах. Надо в следующий раз публиковать задачу перед тем как стартануть :angry: чо то я лажанулся по-ходу.
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Как вы лечите свою жабу?

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

Sergunka wrote:
rorp wrote:А скорей всего они ожидали что-нибудь типа non-bloking NIO сервера на селекторах.
Блин сегодня почитал http://tutorials.jenkov.com/java-nio/selectors.html какого я себя удовольствия лишил написать всю эту хрень на селекторах. Надо в следующий раз публиковать задачу перед тем как стартануть :angry: чо то я лажанулся по-ходу.
JSR 51 (он же NIO), еще в Java 1.4 появился, так что если ты работаешь с Java 7, то не забудь глянут NIO.2
Туда добавили всяких вкусностей, типа AsynchronousSocketChannel и прочих асинхронных операций.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15526
Joined: 27 Sep 2007 22:53

Re: Как вы лечите свою жабу?

Post by Мальчик-Одуванчик »

Интеррапт wrote:
Sergunka wrote:
Kolbasoff wrote:Сказал, что наверняка есть встроенная функция у класса String, но название не помню. Оказалось - есть!
Вообще в самой джаве в пакете java.lang.String такой функции нет. Скорее всего речь как обычно об appache commons

http://commons.apache.org/proper/common ... .String%29

Где в классе org.apache.commons.lang3.StringUtils есть такая функция.

Это еще один аспект интервью для проверки между делом пользуется ли чел комонс библиотеками.
У стандартного java.lang.StringBuilder есть реверс, т.е. будет что-то типа такого:

String reversed = new StringBuilder("string to reverse").reverse().toString()

Собственно как и у java.lang.StringBuffer (который Колбасофф на интервью использовал) тоже есть reverse().

Реверс строки, как и фибоначчи - неувядающая тема на привете :)
Это наподобие знания всех флагов в N-ом параметре Win32. Совершенно бесполезное и мусорное знание.
Гуглится за пару минут, зачем забивать этим хламом голову.
А вот китайские товарищи это все знают и гордятся этим.
User avatar
Kolbasoff
Уже с Приветом
Posts: 3481
Joined: 02 Jan 2005 22:10

Re: Как вы лечите свою жабу?

Post by Kolbasoff »

АццкоМото wrote:Утрируя: если программиста любого уровня синьористости или джуниористости попросить посчитать сумму элементов двумерного массива, он начнет с двух вложенных циклов. (А потом, возможно, начнет теоретизировать, что это банальное решение, а в жизни мы можем намутить что-то более интересное). Но толпы странных людей будут пыхтеть с одним циклом. И их на таком интервью нужно безжалостно отфильтровывать. Ну и плюс времени не так чтобы дофига было. Так что все гут, имхо
да, я сразу говорил, что я буду делать, а потом уже начинал писать код, и вот кодирование получалось не очень. Однако сегодня позвонила рекрутерша и сказала, что я очень (!!!) хорошо прошел это интервью, и что на следующей неделе уже финальное будет на сайте заказчика. К тому же Обамыч Spending Bill подмахнул, рекрутеры резко оживились. Я по этому поводу стих сочинил:

Закрутилась, зазвенела пила
Зубья с жадностью вгрызлись в бабло
Кто-то ловко откатит бревно
Ну а кто-то лишь опилок поест

Но сегодня ликует завод
Наш завод, что не жнет, не куёт
Просто так переводит добро
Собирая с насиженных мест.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Как вы лечите свою жабу?

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

Мальчик-Одуванчик wrote: Это наподобие знания всех флагов в N-ом параметре Win32. Совершенно бесполезное и мусорное знание.
Гуглится за пару минут, зачем забивать этим хламом голову.
Ну вот тут я согласен. Но что делать, если это знание уже лежит в голове, не выкидывать же его оттуда.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15526
Joined: 27 Sep 2007 22:53

Re: Как вы лечите свою жабу?

Post by Мальчик-Одуванчик »

Интеррапт wrote:
Мальчик-Одуванчик wrote: Это наподобие знания всех флагов в N-ом параметре Win32. Совершенно бесполезное и мусорное знание.
Гуглится за пару минут, зачем забивать этим хламом голову.
Ну вот тут я согласен. Но что делать, если это знание уже лежит в голове, не выкидывать же его оттуда.
Значит хорошая память
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Как вы лечите свою жабу?

Post by Sergunka »

Kolbasoff wrote:Зубья с жадностью вгрызлись в бабло
Кто-то ловко откатит бревно
"За жратву надо боротся!" (с) Купа-Купыч Гениальный
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Как вы лечите свою жабу?

Post by Sergunka »

Мальчик-Одуванчик wrote:
Интеррапт wrote:
Мальчик-Одуванчик wrote: Это наподобие знания всех флагов в N-ом параметре Win32. Совершенно бесполезное и мусорное знание.
Гуглится за пару минут, зачем забивать этим хламом голову.
Ну вот тут я согласен. Но что делать, если это знание уже лежит в голове, не выкидывать же его оттуда.
Значит хорошая память
Да ладно задач которых спрашивают по типу десятка два - все вполне можно выучить. Другое дело, что это все одно не помогает - нанимают по другим критериям - нравится рожа или не нравится.
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15526
Joined: 27 Sep 2007 22:53

Re: Как вы лечите свою жабу?

Post by Мальчик-Одуванчик »

Sergunka wrote:
Мальчик-Одуванчик wrote:
Интеррапт wrote:
Мальчик-Одуванчик wrote: Это наподобие знания всех флагов в N-ом параметре Win32. Совершенно бесполезное и мусорное знание.
Гуглится за пару минут, зачем забивать этим хламом голову.
Ну вот тут я согласен. Но что делать, если это знание уже лежит в голове, не выкидывать же его оттуда.
Значит хорошая память
Да ладно задач которых спрашивают по типу десятка два - все вполне можно выучить. Другое дело, что это все одно не помогает - нанимают по другим критериям - нравится рожа или не нравится.
Да ну нафиг. К примеру в плюсах и сам Страуструп пишет что досконально не разбирается во всех тонкостях.
А это о-малое в сравнении с тем что нагородили вокруг языка.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Как вы лечите свою жабу?

Post by crypto5 »

_newcomer_ wrote:
Леонид Ильич Брежнев wrote:А она как внутри кстати ревертит, пузырьком или вторую временную строку создает?
там внутри char[] - тупо свопают полмассива.
Строка наверняка копируется уже в конструкторе, в джаве ж строки иммутабильные, и оригинальную свапать нельзя.
In vino Veritas!
_newcomer_
Уже с Приветом
Posts: 158
Joined: 29 Aug 2013 11:58

Re: Как вы лечите свою жабу?

Post by _newcomer_ »

crypto5 wrote:
_newcomer_ wrote:там внутри char[] - тупо свопают полмассива.
Строка наверняка копируется уже в конструкторе, в джаве ж строки иммутабильные, и оригинальную свапать нельзя.
Вы про StringBuilder/Buffer? Да. В конструкторе копируют входную строку во внутренний char[], крутят массив, потом заново конструируют строку на выходе.
В apache commons reverse() внутри тот же StringBuilder.reverse().
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Как вы лечите свою жабу?

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

crypto5 wrote:
_newcomer_ wrote:
Леонид Ильич Брежнев wrote:А она как внутри кстати ревертит, пузырьком или вторую временную строку создает?
там внутри char[] - тупо свопают полмассива.
Строка наверняка копируется уже в конструкторе, в джаве ж строки иммутабильные, и оригинальную свапать нельзя.
StringBuilder можно и с пустым конструктором вызвать и append-ами добавлять символы, да и получить потом массив символов можно, минуя копирования строк. Хотя сути это, конечно, не меняет, у StringBuilder свой буфер для накапливания символов.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Как вы лечите свою жабу?

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

Кстати, если кого интересует манипуляция со строками (например, пишите код, где известно, что будет большое кол-во разнообразных append, delete для строк), то почитайте о ropes:

http://www.ibm.com/developerworks/library/j-ropes/

Имплементации ropes тоже доступны. Там приведены бенчмарки, но скорее всего они немного устарели.

А вообще интересно наблюдать, как меняется имплементация строк в Джава. Например, до Java 7 (вернее даже до какого-то из апдейтов к Java 7) при вызове substring - новая строка использовала символьный буфер (char[]) от родительской строки (за счет использования offset/count полей в String). В новых версиях семерки (включая Java 8 ес-но тоже) - offset/count поля вообще убрали и теперь substring всегда создает копию символьного буфера. В большинстве случаев это конечно хорошо для memory consumption, операция substring используется не так часто, зато поля offset/count нужно было тащить для каждой строки в Java. С другой стороны, если проект часто использует substring, то есть смысл подумать об оптимизации этой операции, потому что она стала менее производительной и жрет больше памяти.

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