Здравствуйте, PaulMinelly, Вы писали:
PM>Операций. Я-то говорю про память O(n), причем здесь потоки? В стрингбилдере использование дополнительной памяти O(1) на всю задачу, как например и при использовании char[] дополнительная память тоже O(1).
СтрингБилдер хитро устроен. Он использует внутри себя ThreadSafeString, и если запись в него идет с разных потоков, то он копирует всю строку во временный буфер, там делает изменения, а потом меняет указатели обратно.
PM>Кстати, манипуляции с C-шарповым стрингом приводит к тому, что в памяти конкатенируются O(n) элементов строки все n/2 раз. Поэтому в этом случае тоже исполование памяти O(n), даже хоть и без дополнительного явного хранилища.
PM>>Тогда получается не in-place, а использование памяти аж O(n).
Alf>ну а что делать. managed среда и всё такое, приходится платить Alf>только никто не мешает вам сказать что на вход вашего метода уже приходит char[] =) Alf>в общем случае в задаче могут быть любые бинарные данные
А что они сделали строку immutable? Имхо надо было специально извратиться чтобы ее изменять нельзя было. Ведь так просто сдвинул указатель — и изменил символ. Нет, надо было запретить.
Здравствуйте, PaulMinelly, Вы писали:
PM>>>Тогда получается не in-place, а использование памяти аж O(n).
Alf>>ну а что делать. managed среда и всё такое, приходится платить Alf>>только никто не мешает вам сказать что на вход вашего метода уже приходит char[] =) Alf>>в общем случае в задаче могут быть любые бинарные данные
PM>А что они сделали строку immutable? Имхо надо было специально извратиться чтобы ее изменять нельзя было. Ведь так просто сдвинул указатель — и изменил символ. Нет, надо было запретить.
На мой взгляд это вполне логичный шаг, такое же проектное решение было и в Java. Неизменяемые строки позволяют обеспечить большую корректность и предсказуемость/прозрачность программы, а также контроль. Строки по сути являются таким же примитивом как и число.
Предположим, что у нас есть приватное свойство строковое, и мы выставили наружу только get. Если строки мутируемые, то любой код сможет изменить эту строку, константы и литералы тоже смогут быть изменены.
Кроме того, с точки реализации строка и есть немутируемая, при любом добавлении символов в строку придется выделять новый массив байтов, в него копировать данные. Это было бы неявно, а так это нужно сделать явно, и девелопер может задуматься о СтрингБилдер.
Имхо, корректность все же даже более весомый аргумент, чем скорость.
Здравствуйте, drx, Вы писали:
drx>Мне тоже ещё не прислали. Сам жду, маюсь, не нахожу себе места drx>Собеседование было 2-го июня. Надеюсь получить резутьтат до конца недели.
Ясно, наверное будет как с телефонными интервью, проходили я и мои знакомые в разное время, а ответ получили практически одновременно. Будем ждать, че нам еще остается
Здравствуйте, Alf, Вы писали:
Alf>Уж и неделя закончилась, а результатов всё нет... Alf>Зашиваются, бедняги, ночами не спят, офферы с режектами строчат
Ага Солидно, по-взрослому. Как говорила Джулия Ламберт в "Театре": Если взял паузу — держи. Чем дольше пауза, тем сильнее актер )
Здравствуйте, drx, Вы писали:
drx>>>А что у тебя? Берут? G>>Сказали, что да. Хотят перезвонить для уточнения обстоятельств.
drx>Поздравляю и желаю успехов! drx>Мне тоже наконец-то пришло письмо — меня тоже берут!
+1
в смысле, мне тоже пришло письмо и тоже берут (в Visual Studio Platform Team)
А вас куда?
Здравствуйте, Muchacho, Вы писали:
drx>>Мне тоже наконец-то пришло письмо — меня тоже берут! M>мне тоже пришло письмо и тоже берут (в Visual Studio Platform Team) M>А вас куда?
Меня туда же, SDET в VS Platform team
А вы когда планируете ехать? Или не знаете ещё?